ibus-1.5.22/0000755000000000000000000000000013623751712007521 500000000000000ibus-1.5.22/ChangeLog0000644000000000000000000332453213623751712011227 00000000000000commit e3262f08b9e3efc57808700823b0622ec03a1b5f Author: fujiwarat Date: 2020-02-21 21:43:01 +0900 Release 1.5.22 M configure.ac commit 21f7b230896b5e8bc7e4a41bf9cc76fc68d723cb Author: Luigi Toscano Date: 2020-02-21 17:12:44 +0900 po: Update translation (Italian) Update po/it.po at 32.0% Translate-URL: https://translate.fedoraproject.org/projects/ibus/ibus/it/ BUG=https://github.com/ibus/ibus/pull/2174 M po/it.po commit 9e238a87d7adcf3d63b4a10d3ee6977f5ed4540b Author: Mike FABIAN Date: 2020-02-21 17:12:42 +0900 po: Update translation (German) Update po/de.po at 100.0% https://translate.fedoraproject.org/projects/ibus/ibus/de/ BUG=https://github.com/ibus/ibus/pull/2174 M po/de.po commit 16562d4c2ba5cba1488f793900e5809732d2c974 Author: Julien Humbert Date: 2020-02-21 17:12:40 +0900 po: Update translation (French) Update po/fr.po at 100.0% https://translate.fedoraproject.org/projects/ibus/ibus/fr/ BUG=https://github.com/ibus/ibus/pull/2174 M po/fr.po commit 5f4f1a8aa3694a129d18ca0dd22bbad016452385 Author: Antoni Bella Pérez Date: 2020-02-21 17:12:34 +0900 po: Update translation (Catalan) Update po/ca.po at 92.0% https://translate.stg.fedoraproject.org/projects/ibus/ibus/ca/ BUG=https://github.com/ibus/ibus/pull/2174 M po/ca.po commit 40f4a717d2299f4390343da054e4aec7b05e308e Author: Yuri Chornoivan Date: 2020-02-21 16:10:01 +0900 po: Update translation (Ukrainian) Update po/uk.po at 100.0% https://translate.stg.fedoraproject.org/projects/ibus/ibus/uk/ BUG=https://github.com/ibus/ibus/pull/2174 M po/uk.po commit ac3f5b7c4be1d292568952fbba53c552a8e1d315 Author: Ahmad Haghighi Date: 2020-02-21 16:01:46 +0900 po: Update translation (Persian) Update po/fa.po at 25.2% https://translate.stg.fedoraproject.org/projects/ibus/ibus/fa/ BUG=https://github.com/ibus/ibus/pull/2174 M po/fa.po commit a1705ad7e5f90cf8d87caf32d7b7acc7125e6778 Author: fujiwarat Date: 2020-02-13 16:49:12 +0900 bus: Fix recursive mkdir is failed in /var/lib/gdm/.cache/ibus If the parent directory (/var/lib/gdm/.cache) is not created, mkdir childdir (/var/lib/gdm/.cache/ibus) is failed by the parentdir with mode_t = 0. BUG=https://github.com/ibus/ibus/issues/2177 M bus/server.c commit cd4fef5a3290869fc1c36392f5d404fa09932926 Author: fujiwarat Date: 2020-01-31 15:35:02 +0900 src: Fix SEGV to access NULL GError when compose length is zero BUG=rhbz#1788754 M src/ibuscomposetable.c commit 74863851e83972e86a5bdb3da3d99784fc8d4955 Author: fujiwarat Date: 2020-01-28 18:46:13 +0900 src/tests: Increase sleep to 3 waiting for IBusConfig Sleep 1 would be too short for ibus-daemon which could run all components. ibus-config test requires the running IBusConfig and the test could fail in some slow systems. Sleep time will be increased to 3 to run all components. BUG=https://github.com/ibus/ibus/issues/2170 M src/tests/ibus-config.c M src/tests/ibus-desktop-testing-runner.in M src/tests/runtest commit afc0a89c74950351c32df3d60abb343a0dbc06cc Author: Alex Henrie Date: 2020-01-24 15:37:01 +0900 Handle small final sigma in ibus_keyval_convert_case lowercase: GREEK SMALL LETTER FINAL SIGMA (U+03C2) uppercase: GREEK CAPITAL LETTER SIGMA (U+03A3) This mapping was correct in UCSConvertCase, but the "legacy" mapping must also be correct for Caps Lock to work with the final sigma key. https://gitlab.freedesktop.org/xorg/lib/libx11/commit/7f46a38139 BUG=https://github.com/ibus/ibus/pull/2176 M src/ibuskeynames.c commit ecc3465a585448486b2ce68bcefc11d6aebae755 Author: fujiwarat Date: 2020-01-23 16:13:05 +0900 client/gtk2: Fix some format sentences M client/gtk2/ibusimcontext.c commit 687d026cc73b9991f6918604afc032c4c31ecb85 Author: fujiwarat Date: 2020-01-08 12:45:12 +0900 po: Add ibus10.pot A po/ibus10.pot commit 9a9e5db8d10fdb30e133c71358360c7bf5479df6 Author: Yuri Chornoivan Date: 2020-01-06 20:26:44 +0900 Translated using Weblate (Ukrainian) Currently translated at 100.0% (544 of 544 strings) Translation: ibus/ibus Translate-URL: https://translate.stg.fedoraproject.org/projects/ibus/ibus/uk/ M po/uk.po commit 6f7aceb4542dfb245548ca547df96d72feee4c92 Author: Balázs Meskó Date: 2020-01-06 20:26:05 +0900 Translated using Weblate (Hungarian) Currently translated at 100.0% (544 of 544 strings) Translation: ibus/ibus Translate-URL: https://translate.stg.fedoraproject.org/projects/ibus/ibus/hu/ M po/hu.po commit 4a3aa879959af968c7ae585e7fe4e56df489f36e Author: Yaron Shahrabani Date: 2020-01-06 20:25:19 +0900 Translated using Weblate (Hebrew) Currently translated at 100.0% (151 of 151 strings) Translation: ibus/ibus Translate-URL: https://translate.stg.fedoraproject.org/projects/ibus/ibus/he/ M po/he.po commit 22b4a08e2eb40960c533774b89d5d9f7eac71187 Author: Rafael Fontenelle Date: 2020-01-06 20:08:22 +0900 Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (544 of 544 strings) Translation: ibus/ibus Translate-URL: https://translate.stg.fedoraproject.org/projects/ibus/ibus/pt_BR/ M po/pt_BR.po commit d31e55e46c1b3bbaa5326109a174a9d592ce0933 Author: Piotr Drąg Date: 2020-01-06 20:07:28 +0900 Translated using Weblate (Polish) Currently translated at 100.0% (544 of 544 strings) Translation: ibus/ibus Translate-URL: https://translate.stg.fedoraproject.org/projects/ibus/ibus/pl/ M po/pl.po commit 7be961789113eb739916a65e5f6855cd7cdae4a9 Author: Jean-Baptiste Holcroft Date: 2020-01-06 20:06:05 +0900 Translated using Weblate (French) Currently translated at 100.0% (544 of 544 strings) Translation: ibus/ibus Translate-URL: https://translate.stg.fedoraproject.org/projects/ibus/ibus/fr/ M po/fr.po commit 2e41b2a626fa14a82a7dce4d7a928b8b30b56cd0 Author: Julien Humbert Date: 2020-01-06 19:41:23 +0900 Translated using Weblate (French) Currently translated at 100.0% (544 of 544 strings) Translation: ibus/ibus Translate-URL: https://translate.stg.fedoraproject.org/projects/ibus/ibus/fr/ M po/fr.po commit fc2328e7e39c8fc55a7950522aeb2798cf2750cc Author: Mike FABIAN Date: 2020-01-06 19:39:34 +0900 Translated using Weblate (German) Currently translated at 100.0% (514 of 514 strings) Translation: ibus/ibus Translate-URL: https://translate.stg.fedoraproject.org/projects/ibus/ibus/de/ M po/de.po commit 6f0fec0ff266d1cf7975f3691f2e1a23d4edad4a Author: Oğuz Ersen Date: 2020-01-06 19:39:30 +0900 Translated using Weblate (Turkish) Currently translated at 100.0% (544 of 544 strings) Translation: ibus/ibus Translate-URL: https://translate.stg.fedoraproject.org/projects/ibus/ibus/tr/ M po/tr.po commit c662a02bf3b50914c697af12fc152ee97e2df961 Author: fujiwarat Date: 2019-12-25 17:30:56 +0900 client/gtk2: Fix to connect button-press-event signal IBus clients do not connect button-press-event in some conditions and it will be fixed. BUG=https://github.com/ibus/ibus/issues/1980 M client/gtk2/ibusimcontext.c commit 25d11f5cfd4c39e53be11a1348da29a61593cc4c Author: fujiwarat Date: 2019-12-11 16:28:22 +0900 client/gtk2: Fix to set use_button_press_event after signals are connected _ibus_context_update_preedit_text_cb() can be called with reset signals before ibus_im_context_set_client_window() is called. Then use_button_press_event needs to be set only when the signals are connected. BUG=https://github.com/ibus/ibus/issues/1980 M client/gtk2/ibusimcontext.c commit 66141bbc5e68c5f221737282fc4f3d5e48ba6c69 Author: Changwoo Ryu Date: 2019-12-10 13:19:21 +0900 setup: Add NotShowIn and Keywords keys to the desktop entry BUG=https://github.com/ibus/ibus/pull/2162 M setup/ibus-setup.desktop commit d50627f0b7a000ee13ea6dcc02a4162be1fa853d Author: fujiwarat Date: 2019-12-03 21:42:49 +0900 src/tests: RHEL codereview #2 for ibus-desktop-testing-runner M src/tests/ibus-compose-locales.in M src/tests/ibus-desktop-testing-runner.in commit bccf94d5ec1c5fc80d5aeac622f2ab8007d5a28a Author: fujiwarat Date: 2019-11-29 20:28:49 +0900 src/tests: RHEL codereview for ibus-desktop-testing-runner M src/tests/ibus-desktop-testing-runner.in commit 2a08af4c979ac42aeb037bb86b7717f4272082b5 Author: Jason Date: 2019-11-25 18:58:04 +0900 Amend typos BUG=https://github.com/ibus/ibus/pull/2159 M bus/inputcontext.c M bus/panelproxy.c M engine/gensimple.py M src/ibusbus.c M src/ibusbus.h M src/ibusengine.h M src/ibusobject.h M src/ibusproperty.h M src/tests/ibus-bus.c M ui/gtk3/emojier.vala M ui/gtk3/ibusemojidialog.h M ui/gtk3/indicator.vala M ui/gtk3/keybindingmanager.vala commit 052994d153810c4307747fa954f87b2a09dd12f3 Author: pan93412 Date: 2019-11-25 18:56:59 +0900 Update translations Update po/zh_TW.po BUG=https://github.com/ibus/ibus/pull/2158 M po/zh_TW.po commit 76b1773c6ef529888bcd62c4f8207c89ba23503f Author: Frédéric Mangano-Tarumi Date: 2019-11-18 12:05:35 +0900 engine-simple: Add the French bepo_afnor layout BUG=https://github.com/ibus/ibus/pull/2155 M engine/simple.xml.in commit 26a8105b7003953e56bf04426ee89a93482a45c5 Author: fujiwarat Date: 2019-11-10 09:53:27 +0900 ui/gtk3: Fix to exit `ibus emoji` with Escape key When Escape key is pressed, the current ibus-ui-emojier should exit although another daemon one is alive. `ibus emoji` was used in Wayland desktop as a workaround but now IBus emoji functions are moved to the engine's pre-edit and the same function is available with Ctrl-Sfhit-e and space key so this problem would not be so visible. BUG=rhbz#1658187 M ui/gtk3/emojier.vala M ui/gtk3/emojierapp.vala commit efeb7b9689126e4f05bd1e10441cdc4a3720ff1c Author: Robert Hoffmann Date: 2019-11-01 21:55:13 +0900 bus: Fix restart crash with inotify read() Do not close inotify desciptors when restarting the server. This may lead to crashes in glib. Fixes crash in libglib/libgio with GLib-GIO-ERROR : inotify read(): Bad file descriptor See also src/tests/ibus-bus.c: start_exit_async(): /* When `./runtest ibus-bus` runs, ibus-daemon sometimes failed to * restart because closing a file descriptor was failed in * bus/server.c:_restart_server() with a following error: * "inotify read(): Bad file descriptor" Test plan: Run $ ibus restart several times. Without the patch ibus-daemon will crash occasionally. BUG=https://github.com/ibus/ibus/pull/2148 M bus/server.c commit 35863d81d15e3d3463cd5dafd0473afb193c57e3 Author: fujiwarat Date: 2019-10-30 17:29:25 +0900 Fix deprecated APIs - Fix deprecated gtk_misc_set_padding(), gtk_widget_set_margin_left(), gtk_widget_set_margin_right() in emojilang.py, enginedialog.py, setup.ui, candidatearea.vala, candidatepanel.vala, switcher.vala since GTK 3.12 - Fix g_new0() argument 1 range [18446744071562067968, 18446744073709551615] exceeds maximum object size 9223372036854775807 [-Walloc-size-larger-than=] by adding g_assert() in ibuscomposetable.c - Fix gdk_keymap_get_default() with gdk_keymap_get_for_display() in bindingcommon.vala - Fix string.utf8_offset() with string.next_char() in emojier.vala - Fix Posix.SIGUSR1 with Posix.Signal.USR1 in panel.vala M bus/ibusimpl.c M configure.ac M setup/emojilang.py M setup/enginedialog.py M setup/setup.ui M src/ibuscomposetable.c M ui/gtk3/bindingcommon.vala M ui/gtk3/candidatearea.vala M ui/gtk3/candidatepanel.vala M ui/gtk3/emojier.vala M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit 17f8a86ad3302d2df8c68726361f4e08b4e2861a Author: Changwoo Ryu Date: 2019-10-24 19:43:20 +0900 Update translations Update po/ko.po po/pt.po BUG=https://github.com/ibus/ibus/pull/2138 M po/LINGUAS M po/ko.po A po/pt.po commit d53401efd3ffb4a424a0b332ec65f1d461abbc33 Author: fujiwarat Date: 2019-10-24 18:24:12 +0900 Revert the commit 982c40fb819878a8131d2d4a4573d0073ef4d6cc Some IBus clients could access the ibus address file without using ibus_get_socket_path(). BUG=https://github.com/ibus/ibus/pull/2128 M src/ibusshare.c commit 745ffb807072b69f7566091855af9a20aabc854d Author: fujiwarat Date: 2019-10-24 18:11:38 +0900 src: Replace g_abort with abort in unicode-parser.c BUG=https://github.com/ibus/ibus/issues/2142 M src/unicode-parser.c commit 5742e1b399e5d50f34f35b1cda74e548b95554da Author: fujiwarat Date: 2019-10-02 16:41:27 +0900 Revert XDG_RUNTIME_DIR to XDG_CONFIG_HOME Some users failed to run ibus-daemon with XDG_RUNTIME_DIR because the directory is not created by `su` command. Now the IBus socket files will be generated in XDG_CACHE_HOME. BUG=https://github.com/ibus/ibus/issues/2135 M configure.ac M src/ibusshare.c commit 773420fad23078ceef83e8ae84bba4e139d0bea3 Author: fujiwarat Date: 2019-09-19 17:09:46 +0900 src: Fix to allocate compose output buffer with more than two chars If the compose output chars are more than two, IBusCompose calls g_renew() but the size is not enough to insert '\0'. BUG=https://github.com/ibus/ibus/issues/2123 M src/ibuscomposetable.c commit 982c40fb819878a8131d2d4a4573d0073ef4d6cc Author: Jason Date: 2019-09-13 20:27:43 +0900 src: Save address file in XDG_RUNTIME_DIR Currently the address file is saved in XDG_CONFIG_DIR, however since it is not a config or preferences file perhaps it should instead be saved to XDG_RUNTIME_DIR. BUG=https://github.com/ibus/ibus/pull/2128 M src/ibusshare.c commit a141a14102da038e3f35557ec42e14e322cfdff1 Author: fujiwarat Date: 2019-09-13 20:19:36 +0900 bus: Use XDG_RUNTIME_DIR for Unix socket directory g_dbus_server_new_sync() is failed with address "unix:tmpdir=/tmp/ibus" in BSD systems because BSD systems do not support abstract socket files and use the real files but no directory "/tmp/ibus". Now the default directory will be an unique "unix:tmpdir=$XDG_RUNTIME_DIR/ibus" by user in Linux and "unix:tmpdir=/tmp" in BSD and mkdir() runs with the directory mode 0700 not to modify by malicious users. BUG=https://github.com/ibus/ibus/issues/2116 M bus/global.c M bus/server.c M configure.ac commit 3d442dbf936d197aa11ca0a71663c2bc61696151 Author: fujiwarat Date: 2019-09-13 15:59:03 +0900 bus: Implement GDBusAuthObserver callback ibus uses a GDBusServer with G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS, and doesn't set a GDBusAuthObserver, which allows anyone who can connect to its AF_UNIX socket to authenticate and be authorized to send method calls. It also seems to use an abstract AF_UNIX socket, which does not have filesystem permissions, so the practical effect might be that a local attacker can connect to another user's ibus service and make arbitrary method calls. BUGS=rhbz#1717958 M bus/server.c commit 48a8d7ed58bdfb02c24c8039bae1cb15d4fc1bce Author: fujiwarat Date: 2019-09-06 21:24:24 +0900 Delete deprecated g_type_class_add_private since glib 2.58 G_DEFINE_TYPE_WITH_PRIVATE() and G_ADD_PRIVATE() have been available since 2.38. IBusService has custom GBaseInitFunc and GBaseFinalizeFunc in ibus_service_get_type() and implements ibus_service_private_offset and ibus_service_get_instance_private() directly without G_DEFINE_TYPE_WITH_PRIVATE(). M bus/ibusimpl.c M src/ibusbus.c M src/ibuscomponent.c M src/ibusconfig.c M src/ibusemoji.c M src/ibusengine.c M src/ibusenginedesc.c M src/ibusenginesimple.c M src/ibusfactory.c M src/ibushotkey.c M src/ibusinputcontext.c M src/ibusobject.c M src/ibusobservedpath.c M src/ibusproperty.c M src/ibusregistry.c M src/ibusserializable.c M src/ibusservice.c M src/ibusunicode.c M src/ibusxevent.c commit bb638201599291f41cde84d6fe8d16f8d1e18268 Author: Jason Date: 2019-09-06 21:07:55 +0900 Make session file header comment more clear BUG=https://github.com/ibus/ibus/pull/2129 M src/ibusshare.c commit fcb2187dd46d71031867f3bd43196c2448693469 Author: fujiwarat Date: 2019-09-06 20:59:49 +0900 src/tests: Replace push with cd for Posix SH BUG=https://github.com/ibus/ibus/issues/2124 BUG=https://github.com/ibus/ibus/issues/2126 M src/tests/ibus-config.c M src/tests/runtest commit 71ee904f000f9335ceb6ece054ce18f1291a8490 Author: fujiwarat Date: 2019-08-29 13:26:58 +0900 ui/gtk3: Fix manpage-section-mismatch in ibus-emoji.7 BUG=https://github.com/ibus/ibus/issues/2119 M ui/gtk3/ibus-emoji.7.in commit ae0040c73466bb6e78fce5e669a55fcce6ffd16d Author: fujiwarat Date: 2019-08-23 19:47:18 +0900 build: Fix build errors with '-include' directive I forgot to test the Makefile with autoconf and also missed to add meta.test.in to EXTRA_DIST M client/wayland/Makefile.am M src/tests/Makefile.am commit 5744073a343fe34e309738915ad49e576f9fe8a5 Author: fujiwarat Date: 2019-08-23 14:01:00 +0900 Release 1.5.21 M configure.ac commit 7fc8943eee0aeff635deb1e4e4667fe9c2dd3e9f Author: fujiwarat Date: 2019-08-23 13:56:13 +0900 Fix some build errors with make dist The latest distcheck requires uninstall-hook for install-data-hook and missed wayland_scanner_rules with --disable-wayland. M bindings/pygobject/Makefile.am M configure.ac M data/its/Makefile.am commit b07b6b7731c3f9e37433d72be2f6d9f95399ba22 Author: fujiwarat Date: 2019-08-22 18:08:34 +0900 Update Translations Update po/es.po po/tr.po po/zh_CN.po M po/LINGUAS M po/es.po A po/tr.po M po/zh_CN.po commit ab56a27376f3b153233442c3697ad7d6502ed9fe Author: fujiwarat Date: 2019-08-21 17:25:41 +0900 client/wayland: Connect to "disconnected" signal ibus-wayland could terminate with "disconnected" signal. M client/wayland/main.c M client/x11/main.c commit b75847831958d5fcb822463e6c06bc47ae392d6a Author: fujiwarat Date: 2019-08-20 19:23:49 +0900 client/wayland: Update Wayland input-method protocol to unstable v1 Weston uses unstable v1 for input-method protocol. Unfortunately weston-terminal does not enable input method and tested the protocol with weston-editor: https://github.com/wayland-project/weston/blob/master/clients/editor.c BUG=https://github.com/ibus/ibus/issues/2030 M client/wayland/Makefile.am D client/wayland/input-method-client-protocol.h D client/wayland/input-method-protocol.c A client/wayland/input-method-unstable-v1-client-protocol.h A client/wayland/input-method-unstable-v1-protocol.c M client/wayland/main.c M configure.ac commit 28c10d64d282fa9fbc35a7bc44a096f6137d5e46 Author: fujiwarat Date: 2019-08-13 20:06:51 +0900 src/tests: Set XDG_SESSION_TYPE in ibus-desktop-testing-runner mutter 3.33.90 or later exits the session without loginctl. Now ibus-desktop-testing-runner has XDG_SESSION_TYPE forcibly not to exit gnome-shell. M src/tests/ibus-desktop-testing-runner.in commit 32645ca8070db1f8b6360b07b229829ed6033437 Author: Changwoo Ryu Date: 2019-08-06 19:32:11 +0900 Fix typos BUG=https://github.com/ibus/ibus/pull/2111 BUG=https://github.com/ibus/ibus/pull/2112 M bus/main.c M src/ibusobservedpath.c M tools/ibus.1.in commit 32572618cdcc36162b5769eb4c71964db9734061 Author: fujiwarat Date: 2019-08-06 18:55:14 +0900 bus: Exit ibus-daemon with parent's death ibus-daemon can be restarted unexpectedly during logging out the session and double ibus-x11 prevent from enabling XIM in XGetSelectionOwner() for the "ibus" atom. ibus-daemon always will exit the process when the parent process dies to avoid this problem. M bus/main.c M configure.ac commit 7dde99600777f195da614130950ecbd339439d35 Author: fujiwarat Date: 2019-07-31 16:27:49 +0900 src/tests: Fix wrong echo with direct runner in ibus-desktop-testing-runner The wrong echo prevent from counting the test results in the direct testing runner. M src/tests/ibus-desktop-testing-runner.in commit f4463c0433c5f48a4fb2830e8c2ae9619fbb18d1 Author: fujiwarat Date: 2019-07-29 19:05:43 +0900 src/tests: Fix a fatal error with g_warning I set g_log_set_always_fatal() before gtk_init() in ibus-compose for a compose warning of GtkIMContextSimple but actually the warning is output during gtk_main() due to GtkIMContextSimple.set_client_window() so I moved g_log_set_always_fatal() before gtk_main() in ibus-compose.c. Also set IFS in ibus-compose-locales to set the delimiter to '\n' for for-loop arguments. M src/tests/ibus-compose-locales.in M src/tests/ibus-compose.c commit 0c89a7ee33bfe5b403c798e0ddb39e4c05d0d971 Author: Hodong Kim Date: 2019-07-25 14:37:52 +0900 client/x11: Update LOCALES_STRING Update LOCALES_STRING in locales.h from /usr/share/i18n/SUPPORTED on Debian Buster. BUG=https://github.com/ibus/ibus/pull/2110 M client/x11/locales.h commit 05d03b9c89d5c4eeed2d437d41fb963439fdd472 Author: fujiwarat Date: 2019-07-25 13:17:29 +0900 Update translations Update po/da.po po/fr.po po/hu.po po/id.po po/ja.po po/nl.po po/pa.po po/pl.po po/pt_BR.po po/sv.po po/uk.po po/zh_TW.po M po/LINGUAS M po/da.po M po/fr.po M po/hu.po A po/id.po M po/ja.po M po/nl.po M po/pa.po M po/pl.po M po/pt_BR.po M po/sv.po M po/uk.po M po/zh_TW.po commit 85b647a1c57c206779eb0b4b15a734c1b1f29c10 Author: fujiwarat Date: 2019-07-24 17:27:37 +0900 src/tests: Fix IBus test cases for gnome-desktop-testing - dconf/config.c: Replaced dconf_client_write_fast() with dconf_client_write_sync() because dconf_client_write_fast() does not syn the data when ibus_config_get_values() is called immediately after ibus_config_set_value() is called. - ibus-compose-locales.in returns the return value of ibus-compose - ibus-compose: Set $NO_AT_BRIDGE to suppress a AT_SPI warning and call g_log_set_always_fatal() because GtkIMContextSimple does not support multiple compose outputs yet and the API can suppress a warning. - ibus-config: Delete async watch testings which causes several errors with gnome-shell testing and the testing is now deprecated and GSettings is recommended. - ibus-desktop-testing-runner.in: Support --output=log:stdout to cat the log to stdout and Use dbus-launch --exit-with-session instead of --sh-syntax and count PASS of test cases instead of PASS of gnome-desktop-testing and always run ibus exit and kill gnome-shell-calendar-server - ibus-engine-switch.c: Set xkb:jp::jpn if gnome-shell sets xkb:us::eng - ibus-inputcontext.c: Use ibus_bus_get_global_engine() instead of ibus_bus_list_active_engines() since ibus_bus_list_active_engines() does not work with gnome-shell and the API is now deprecated. - ibus-keypress.c: Set $NO_AT_BRIDGE to suppress a AT_SPI warning M conf/dconf/config.c M src/tests/Makefile.am M src/tests/ibus-compose-locales.in M src/tests/ibus-compose.c M src/tests/ibus-config.c M src/tests/ibus-desktop-testing-runner.in M src/tests/ibus-engine-switch.c M src/tests/ibus-inputcontext.c M src/tests/ibus-keypress.c commit fa081ac8ea37d2feb7c7f395ad66e7381b4cb65b Author: fujiwarat Date: 2019-07-12 21:20:32 +0900 src/tests: Use gnome-desktop-testing-runner M src/tests/Makefile.am M src/tests/ibus-desktop-testing-runner.in commit 2a4f9518d42b618d8111fa5f9f885757524758a0 Author: fujiwarat Date: 2019-07-12 21:12:40 +0900 src/tests: Rename test-console.sh to ibus-desktop-testing-runner M src/tests/Makefile.am R100 test/test-console.sh src/tests/ibus-desktop-testing-runner.in commit af00f4156b5c79c526eab18c49da80affd41ebee Author: fujiwarat Date: 2019-07-12 21:12:38 +0900 src/tests: Install IBus tests into gnome-desktop-testing M configure.ac M src/tests/Makefile.am A src/tests/ibus-compose-locales.in M src/tests/ibus-compose.c A src/tests/meta.test.in M src/tests/runtest commit 6bdc692e0dc72a9afae5407983859e88c16b4971 Author: fujiwarat Date: 2019-07-10 18:18:04 +0900 src: Support common_name in ISO 639 Nowadays "Bangla" is preferred to "Bengali" for BN language code and iso_639*.xml describes it in "common_name" tag. BUG=https://github.com/ibus/ibus/issues/2104 M src/ibusutil.c commit 76dec798d5cf6cdaa96c3373f9c0e1cd13eb31f5 Author: fujiwarat Date: 2019-06-28 21:28:32 +0900 src/tests: Use GTest for ibus-compose M src/tests/ibus-compose.c commit ac492f31b435b9464d591094d470bc94027168e8 Author: fujiwarat Date: 2019-06-28 21:15:07 +0900 src/tests: Fix ibus-compose for IBusComposeTableEx Recently IBusComposeTablEx has been integrated and the return value of ibus_compose_table_new_with_file() is also changed and ibus-compose needs to be updated. Clear IBusComposeTablePrivate in ibus_compose_table_list_add_array() for the ibus-compose testing. Clear compose_buffer in IBusEngineSimple. Use g_get_language_names_with_category instead() of g_get_locale_variants(). Add ibus-compose.emoji for the tests of long compose sequences and multiple compose output characters. IBUS_COMPOSE_CACHE_DIR variable is added for the temporary caches. M src/ibuscomposetable.c M src/ibuscomposetable.h M src/ibusenginesimple.c M src/tests/Makefile.am M src/tests/ibus-compose.c A src/tests/ibus-compose.emoji M src/tests/ibus-compose.env M src/tests/runtest M test/test-console.sh commit 69e443c07f944b3137aada31dcdbcb49728ff805 Author: fujiwarat Date: 2019-06-28 20:43:36 +0900 bus: Disable panel extension for gnome-initial-setup user gnome-initial-setup user is executed before the post setup is finished after the installation is finished. M bus/main.c commit 80254484071eb57e1152579b60ec8a95522ebc22 Author: fujiwarat Date: 2019-06-24 17:28:55 +0900 src: s/iso_639-3/iso_639_3/ in ibus_get_language_name() iso-codes 3.66 has iso_639_3.xml only but 3.67 has both iso_639_3.xml and iso_639-3.xml. RHEL 7 uses iso-codes 3.46. BUG=https://github.com/ibus/ibus/issues/2101 M ibus/lang.py M src/ibusutil.c commit 82a728de97308f6ce36c814e30a292f96e76cc13 Author: fujiwarat Date: 2019-05-29 17:37:35 +0900 src: Change a fixed compose buffer to a variable one Now the long key sequence of the compose key is supported in both system compose and user compose but the internal compose buffer is still a fixed size. The compose buffer size will be a variable size and the initial size will be 20 with this change. M src/ibusenginesimple.c commit 5b6ad433f79c2e4781688d4985a15836d81f0a72 Author: fujiwarat Date: 2019-05-24 14:34:05 +0900 src: Enable multiple compose output and long key sequences in user comopse Curently the max key sequences of user compose keys depends on the max key sequences of system compose keys, IBUS_MAX_COMPOSE_LEN. This change will have the max key sequences by user compose table and also will separate the user compose table with 16bit compose table and 32bit one to follow another change of system compose table to be able to output multiple compose outputs and 32bit compose ones likes emoji charaters. BUG=https://github.com/ibus/ibus/issues/1990 M src/ibuscomposetable.c M src/ibuscomposetable.h M src/ibusenginesimple.c M src/ibusenginesimple.h M src/ibusenginesimpleprivate.h commit b59f7f823b7b2051e4ca31834f9299a72f01b339 Author: fujiwarat Date: 2019-05-09 17:02:21 +0900 src: Support 32bit and multiple compose outputs Compose file in en_US.UTF-8 now includes wide codepoints more than U+FFFF likes ' : "🖕" U1F595' but the current gtk_compose_seqs_compact[] is a guint16 array. To support 32bit and multiple compose outputs, the array is now separated to 16bit and 32bit arrays and 32bit array is also separated to gtk_compose_seqs_compact_32bit_first[] for 16bit key sequences and gtk_compose_seqs_compact_32bit_second[] for 32bit output values. BUG=https://github.com/ibus/ibus/issues/2074 M src/gtkimcontextsimpleseqs.h M src/ibuscomposetable.h M src/ibusenginesimple.c M src/ibusenginesimpleprivate.h commit 651c997a2fc50b9dadc51d0f14f31e40f0cc05fc Author: fujiwarat Date: 2019-05-09 16:58:54 +0900 src: Support 32bit and multiple output characters in compose-parse.py M src/compose-parse.py commit 224716570c73115560000286d95894f5806f1e42 Author: fujiwarat Date: 2019-05-09 16:36:19 +0900 src: s/GDK_KEY/IBUS_KEY/ in compose-parse.py M src/compose-parse.py commit d25489ae53f061101e9f380196d393136bb4f0ec Author: fujiwarat Date: 2019-05-09 16:20:55 +0900 src: Copy compose-parse.py from gtk A src/compose-parse.py commit cebe7a9553de69943b955ec99285f74961c9ee4e Author: fujiwarat Date: 2019-05-09 15:49:21 +0900 client/gtk2: Keep preedit cursor_pos and visible in clearing preedit text Clear the preedit_string but keep the preedit_cursor_pos and preedit_visible because a time lag could happen, firefox commit the preedit text before the preedit text is cleared and it cause a double commits of the Hangul preedit in firefox if the preedit would be located on the URL bar and click on anywhere of firefox out of the URL bar. M client/gtk2/ibusimcontext.c commit 05a10950d635602fb3fcf4ed0021aa0b15dbd698 Author: fujiwarat Date: 2019-05-09 15:49:09 +0900 src: Make ISO 639 language names with title Danish translations are small in iso-codes-iso-639-2-da.po for the genral usage but the users ask the title format on UI. Now ibus_get_language_name() and ibus_get_untranslated_language_name() return the dynamic allocation instead of the static characters to make the capital character. BUG=https://github.com/ibus/ibus/issues/2079 M src/ibusutil.c M src/ibusutil.h commit 91a256163427f04eb7763196b4ffe553911d2e01 Author: Gunnar Hjalmarsson Date: 2019-05-07 19:42:28 +0900 bus: Indistinguishable address of ibus-daemon BUG=https://github.com/ibus/ibus/issues/2095 M bus/global.c commit 1c54fea645b2ec3a385d492e4ca30a70dbb87c3a Author: fujiwarat Date: 2019-04-23 18:44:45 +0900 data/its: Add ibus.its for IME's component files IBusEngineDesc has translatable strings in longname and description tags and they needs to be extracted by xgettext. After you install the ibus.[its|loc] to /usr/share/gettext/its, each engine's component file needs to renamed with '.inputMethod.xml' in the source directory suffix. E.g. Rename 'anthy.xml' to 'anthy.inputMethod.xml' and write the file path to the engine's POTFILES.in M configure.ac M data/Makefile.am A data/its/Makefile.am A data/its/ibus.its A data/its/ibus.loc commit cc849c20d4dff31f6f88f93789790759bf087b77 Author: fujiwarat Date: 2019-04-23 17:56:20 +0900 NEWS: Add shortlog Update Makefile.am to insert shortlog in NEWS Update po/Makevars to add multiple COPYRIGHT_HOLDER M Makefile.am M po/Makevars commit 1cb5032e85d85f496e349236d1b74f17fb8db966 Author: fujiwarat Date: 2019-04-23 15:40:45 +0900 configure: Move ibus-setup from configure.ac to Makefile.am @localedir@ can be extracted to ${datarootdir}/locale and it needs datarootdir=/usr/share in case configure.ac is used and deleting the datarootdir line caused a regression. All variables can be extracted in Makefile.am with sed. M configure.ac M setup/Makefile.am commit b497de5bc6525769e03b65c73fc991d4aa006223 Author: fujiwarat Date: 2019-03-20 17:44:26 +0900 test: Set GTK_IM_MODULE in test-console.sh M src/tests/Makefile.am M test/test-console.sh commit 6099a45f2e734458202383fdf157aea95b1f35a5 Author: fujiwarat Date: 2019-03-13 19:36:05 +0900 build: Delete built sources with MAINTAINERCLEANFILES BUG=https://github.com/ibus/ibus/issues/2082 M src/Makefile.am M ui/gtk3/Makefile.am commit 2825bfc13618d382444aa1f87be22cd86e9bba29 Author: fujiwarat Date: 2019-03-13 19:35:19 +0900 src: Update ibusunicodegen.h for Unicode UCD 12.0 M src/ibusunicodegen.h commit 026b19ef169dd9612d8a4a1ee34f7c42e7215c9a Author: fujiwarat Date: 2019-03-13 19:16:17 +0900 setup: Enable to run ibus-setup with a different python BUG=https://github.com/ibus/ibus/issues/2086 M setup/ibus-setup.in commit 407756521617f8514b65ddfa35512183fd22d38d Author: fujiwarat Date: 2019-03-01 17:54:39 +0900 Release 1.5.20 M configure.ac commit b1dd51c1935303dcf4f100f0a40d3d31177cfaa6 Author: fujiwarat Date: 2019-03-01 17:09:17 +0900 Update translations Update po/da.po po/fr.po po/hu.po po/ja.po po/nl.po po/pa.po po/pl.po po/sv.po po/uk.po po/zh_CN.po po/zh_TW.po M po/da.po M po/fr.po M po/hu.po M po/ja.po M po/nl.po M po/pa.po M po/pl.po M po/sv.po M po/uk.po M po/zh_CN.po M po/zh_TW.po commit 8375f391e1b9bfc048ff14fd458f689d853064ac Author: fujiwarat Date: 2019-02-28 15:26:11 +0900 ui/gtk3: Do not add emojis in compose category to emoji variants Any emojis in compose category have variants and should be shown by default. M bindings/vala/IBus-1.0-custom.vala M ui/gtk3/emojier.vala commit f5b282e8d2c82156738599ce00e148f512692531 Author: fujiwarat Date: 2019-02-27 12:02:11 +0900 src/ibusemojigen.h: Updated translatable emoji categories M src/ibusemojigen.h commit b30eb5de95413c3977899fdddd04de6872dae991 Author: fujiwarat Date: 2019-02-22 18:40:14 +0900 Delete underscore in _Name in *.desktop for gettext migration M po/Makevars M setup/Makefile.am M setup/ibus-setup.desktop M ui/gtk3/Makefile.am M ui/gtk3/ibus-extension-gtk3.desktop.in M ui/gtk3/ibus-ui-emojier.desktop.in commit 6aab10f2e5a8e10dac9b007eff19b26990461790 Author: fujiwarat Date: 2019-02-14 17:37:39 +0900 ui/gtk3: Fix assert with 16 candidates BUG=https://github.com/ibus/ibus/issues/2076 M ui/gtk3/candidatearea.vala commit 4d3a8ff3d0bf69508551e65ae2dae676919a728d Author: fujiwarat Date: 2019-02-13 16:00:42 +0900 Delete Super-space notification I'd assume most IBus 1.5.2 users are migrated to the latest 1.5.z now but the notification dialog gives much attention and could be deprecated. BUG=https://github.com/ibus/ibus/issues/2080 M configure.ac M ui/gtk3/Makefile.am M ui/gtk3/panel.vala commit 64f4e412d005d15a944ae92f78923371676a5be1 Author: scootergrisen Date: 2019-02-04 16:15:28 +0900 client/x11: typo: sevrer to server BUG=https://github.com/ibus/ibus/pull/2078 M client/x11/main.c commit 7a38e4d18ea4023f01948c6ce2fe303dbe4b3bd9 Author: Anton Mikhalev Date: 2019-02-04 16:07:02 +0900 bus: Allow using non-abstract UNIX domain sockets Previously, it was not possible to access ibus daemon from a separate network namespace because its socket resided in an abstract namespace, which is not shareable between network namespaces. Passing --address=unix:path=/run/user/1000/ibus to ibus-daemon allows clients running in containerized environment to communicate with daemon as long as /run/user/1000 is mounted within container. BUG=https://github.com/ibus/ibus/pull/2077 M bus/server.c commit 4592ce512fd830e646beec0f7aa21add739bb6fa Author: bmansurov <45986298+bmansurov@users.noreply.github.com> Date: 2019-01-29 18:02:04 +0900 engine: Add Uzbek layouts BUG=https://github.com/ibus/ibus/pull/2069 M engine/simple.xml.in commit 4d7c1e00e15921a0448947961183c1c124b6b49f Author: fujiwarat Date: 2019-01-29 17:57:16 +0900 Delete weak pointer in GList.SList for vala 0.43.4 Vala 0.43.4 does not allow to convert a weak pointer to the full one in SList. emojier.vala:424.36-425.73: error: Assignment: Cannot convert from `GLib.SList' to `GLib.SList?' emojier.vala:636.9-637.69: error: Assignment: Cannot convert from `GLib.SList' to `GLib.SList' panel.vala:526.36-526.65: error: Assignment: Cannot convert from `GLib.List' to `GLib.List?' M src/ibusbus.h M src/ibusemoji.h M src/ibusunicode.h M ui/gtk3/emojier.vala commit 0f5084e07c215d74adc4eeeda40b374855cce59a Author: fujiwarat Date: 2019-01-11 12:56:42 +0900 src/ibuscomposetable: Replace assert with warning for .XCompose BUG=rhbz#1470673 M src/ibuscomposetable.c commit be7fb813e530442897a9f9130b8a26380e5a12a1 Author: fujiwarat Date: 2019-01-08 12:02:37 +0900 client/gtk2: Fix Atom and Slack for Flatpak Seems Atom, slack, com.visualstudio.code does not enable gtk_key_snooper_install() and this issue causes to call gtk_im_context_filter_keypress instead of calling ibus APIs. BUG=https://github.com/ibus/ibus/issues/1991 M client/gtk2/ibusimcontext.c commit 60e246ef1593f599e2103070f8fa02649d60ada1 Author: fujiwarat Date: 2019-01-08 12:02:35 +0900 test: Add flatpak-builder file for org.freedesktop.Platform M test/org.test.IBus.json A test/org.test2.IBus.json commit 0fd043c3b4c90855bfb4fceed4bf2f3c3635a041 Author: fujiwarat Date: 2019-01-08 12:02:32 +0900 portal: Update APIs for Hangul preedit in Flatpak BUG=https://github.com/ibus/ibus/issues/1980 M portal/org.freedesktop.IBus.Portal.xml M portal/portal.c commit 4ef976a8b934bf76cfd855013b766f6492dc9e8a Author: Mathieu Bridon Date: 2019-01-07 21:15:35 +0900 introspection: Tell the GI scanner to include the C headers This adds the following line to the generated gir file: This is important, for example for Rust bindings generated from the gtk-rs tooling. BUG=https://github.com/ibus/ibus/pull/2071 M configure.ac commit 9ae2d4658fff3d1e7262fb4fb7ca9ce1af0a27ec Author: fujiwarat Date: 2018-12-20 16:40:31 +0900 client/gtk2: Use button-press-event only with IBUS_ENGINE_PREEDIT_COMMIT BUG=https://github.com/ibus/ibus/issues/1980 M client/gtk2/ibusimcontext.c commit 7b9c034f570bb1bf89569a01b98d6771b1596722 Author: fujiwarat Date: 2018-12-17 20:26:32 +0900 m4: Add ibuslocale.m4 to Makefile.am M m4/Makefile.am commit 1cd5254811259befe50c8bd81584d1bfe2c63ed0 Author: glasseyes Date: 2018-12-17 20:20:11 +0900 src: use iso 639-3 to have names for more languages Keyman and others support them so they shouldn't be in "Other" BUG=https://github.com/ibus/ibus/issues/2064 M ibus/lang.py M src/ibusutil.c commit a78e7f8deb51f01125325da868c8fc75f0436b3e Author: fujiwarat Date: 2018-12-17 20:10:34 +0900 configure: Generate ibus_localedir variable M configure.ac A m4/ibuslocale.m4 commit c7d8771cb9fc652cb638aa7cb8e10ea6b889509e Author: fujiwarat Date: 2018-12-11 19:16:10 +0900 client/gtk2: Fix SEGV on mouse clicks when ibus-daemon not running M client/gtk2/ibusimcontext.c commit 28b0744ad141bd76281025e9d0857d2182bc2a65 Author: fujiwarat Date: 2018-12-10 13:21:42 +0900 src: Clear preedit in IBusEngineSimple with focus changes BUG=https://github.com/ibus/ibus/issues/2063 M src/ibusenginesimple.c commit ba41173c45a4ba6e047f94ac53474433c7643591 Author: fujiwarat Date: 2018-12-07 17:38:09 +0900 src: Show compose preedit with custom compose file IBusEngineSimple is fixed for custom compose files - Show preeedit with custom compose file - Tentative compose preedit can be deleted by Backspace BUG=https://github.com/ibus/ibus/issues/2058 M src/ibusenginesimple.c commit 4c40afba9c862b4f6651b1b971553e5e89e83343 Author: fujiwarat Date: 2018-12-06 16:53:57 +0900 client/gtk2: Always reset and clear preedit on mouse click Thinking about the reset signal again, now I think it's good to emit the reset signal and clear the preedit on mouse click for any engines besides Hangul because the behavior could be handled by each engine with the reset signal. BUG=https://github.com/ibus/ibus/issues/1980 M client/gtk2/ibusimcontext.c commit 639960a827811200caaccb5afaee7d7b133e4876 Author: ZhaoQiang Date: 2018-12-03 18:11:32 +0900 src: Fix typos in comment lines BUG=https://github.com/ibus/ibus/pull/2059 M src/ibusbus.c M src/ibushotkey.c M src/ibusserializable.c M src/ibusservice.c M src/tests/ibus-bus.c commit 7b3b8c8b0c6a41ab524e0be9474825da9cba96ac Author: fujiwarat Date: 2018-11-13 14:27:52 +0900 client/gtk2: Do not delete IBUS_CAP_SURROUNDING_TEXT retrieve-surrounding signal could be failed with the first typing on firefox. It could be a bug in firefox but now IBusIMContext does not delete IBUS_CAP_SURROUNDING_TEXT in the capabilities as a workaround when retrieve-surrounding signal is failed. Also added retrieve-surrounding signal after some committing text. BUG=https://github.com/ibus/ibus/issues/2054 M client/gtk2/ibusimcontext.c commit a40631e166137c9042a68c2d76844e7afc53d388 Author: fujiwarat Date: 2018-11-09 14:49:44 +0900 Detect mouse click to commit Hangul preedit If preedit text is not committed with the mouse click, preedit text is moved to the new cursor position in Hangul typing. Since set_cursor_location() is received before the reset() signal is sent to ibus-daemon and commit_text() signal is received from ibus-daemon, UpdatePreeditTextWithMode D-Bus method is newly added and now ibus clients commit the preedit. BUG=https://github.com/ibus/ibus/issues/1980 M bus/ibusimpl.c M bus/inputcontext.c M bus/inputcontext.h M client/gtk2/ibusimcontext.c M src/ibusinputcontext.c M src/ibusinputcontext.h commit 3172c3b23faefe76b3b7adfc75f9be34a0fb2e02 Author: fujiwarat Date: 2018-10-31 17:42:38 +0900 RHEL code reviews M src/ibuskeymap.c M src/ibuspanelservice.c M src/tests/ibus-keypress.c M util/IMdkit/FrameMgr.c commit b6086665bcf12914e6e1ac99b606dc6dee363f26 Author: fujiwarat Date: 2018-10-30 11:57:19 +0900 data/dconf: Fix a typo M data/dconf/org.freedesktop.ibus.gschema.xml commit 3914d3a2b1aeda8779b2d8a9d91088802530b3a9 Author: fujiwarat Date: 2018-10-30 11:54:52 +0900 data/dconf: Add comments in org.freedesktop.ibus.gschema.xml M data/dconf/org.freedesktop.ibus.gschema.xml commit aa24a526dd7dec9a719e063fb35da90afb5dc5bf Author: fujiwarat Date: 2018-10-26 19:01:19 +0900 src/tests: Fix the location of org.freedesktop.ibus.gschema.xml The location has been changed since xgettext migration. M src/tests/runtest commit c1b55431c076dfa3fc26a3a998bfcf729e9ba602 Author: fujiwarat Date: 2018-10-26 18:44:35 +0900 src/tests: Fix make check in Fedora 29 ibus-bus and ibus-compose failed in Fedora 29. 1. In ibus-bus with runtest, ibus-daemon failed to restart in start_exit_async() because it seems to have conflicting IO with runtest and ibus-daemon failed to close a file descriptor in _restart_server(). The solution is to add a sleep in start_exit_async(). Also added ibus_get_address() in test_async_apis_finish() to check if ibus-daemon finished to restart. 2. In ibus-compose, the GTK application could not get the ibus module. The solution is to export GTK_IM_MODULE=ibus. 3. Added DISABLE_DAEMONIZE_IN_TESTS to get error messages in ibus-daemon. % make DISABLE_DAEMONIZE_IN_TESTS=1 check M bus/Makefile.am M src/tests/Makefile.am M src/tests/ibus-bus.c M src/tests/runtest commit a6710817b3d29d6a522f108f96ffe64d2f5367fe Author: fujiwarat Date: 2018-10-16 19:46:01 +0900 Gettext migration for gschema.xml file https://wiki.gnome.org/Initiatives/GnomeGoals/GettextMigration M bindings/vala/config.vapi M configure.ac M data/dconf/org.freedesktop.ibus.gschema.xml M po/Makevars M po/POTFILES.in M setup/Makefile.am R100 setup/ibus-setup.desktop.in setup/ibus-setup.desktop M src/ibusutil.c M src/keyname-table.h M tools/main.vala M ui/gtk3/Makefile.am M ui/gtk3/application.vala M ui/gtk3/emojierapp.vala M ui/gtk3/extension.vala R100 ui/gtk3/ibus-extension-gtk3.desktop.in.in ui/gtk3/ibus-extension-gtk3.desktop.in R100 ui/gtk3/ibus-ui-emojier.desktop.in.in ui/gtk3/ibus-ui-emojier.desktop.in commit 74a00cc93ba99367e175ad3d3415e585d453d17f Author: fujiwarat Date: 2018-10-16 18:17:41 +0900 data/dconf: Rename org.freedesktop.ibus.gschema.xml[.in] M data/dconf/Makefile.am R100 data/dconf/org.freedesktop.ibus.gschema.xml.in data/dconf/org.freedesktop.ibus.gschema.xml commit a8e8b694dcb52e4beb367dff1e8ecaaca4f63c00 Author: fujiwarat Date: 2018-10-03 17:01:59 +0900 data/dconf: Delete dconf dependencies gsettings-schema-convert has not worked with python3 since GConf has been deprecated since 2011 so we cannot disable python2 in canse GConf is enabled. I don't wish to maintain both ibus.schemas.in and org.freedesktop.ibus.gschema.xml.in and now decide to delete whole the GConf builds. gsettings is now stable and can be used instead. ibus-dconf will be deperecated in the near future. BUG=https://bugzilla.gnome.org/show_bug.cgi?id=759334 M conf/Makefile.am M configure.ac M data/Makefile.am M data/dconf/Makefile.am A data/dconf/org.freedesktop.ibus.gschema.xml.in commit 41c866868a25ec00482a000a18ac1ff3af1c494c Author: fujiwarat Date: 2018-10-03 16:30:26 +0900 src: Update translatable strings in ibusunicodegen.h M src/ibusunicodegen.h commit 6e315973f48574f7dcede1f1e8ca116e6a953ade Author: fujiwarat Date: 2018-09-25 15:42:20 +0900 ui/gtk3: Fix g_return_val_if_fail in ibus_emojier_clamp_page BUG=https://github.com/ibus/ibus/issues/2042 M ui/gtk3/emojier.vala commit 1c6565e205528a45e88a84ba2a328f9035875c8d Author: fujiwarat Date: 2018-09-14 16:15:41 +0900 ui/gtk3: Fix SEGV when commit an emoji on Emojier in Wayland Just pressing Space key without emoji annotations can launch Emojier popup and the popup takes a focus in Wayland and the chosen emoji is output when the original text application gets the focus after Emojier popup release the focus. Emojier disabled Ctrl-Shift-e after got the focus. But currently GNOME Wayland has a bug not to send focus-in until a key press or mouse click happens [1] and Emojier causes a SEGV. Now Emojier disables Ctrl-Shift-e immediately when an emoji is chosen whether focus-in comes or not and fixes the SEGV. [1] https://gitlab.gnome.org/GNOME/gnome-shell/issues/573 BUG=rhbz#1625187 M ui/gtk3/emojier.vala M ui/gtk3/emojierapp.vala M ui/gtk3/panelbinding.vala commit 809d880337e75b7cee429292a238bf53899bef6a Author: fujiwarat Date: 2018-08-30 12:58:57 +0900 ui/gtk3: Do not move Emojier popup with the active candidate in Xorg Probably I think it's not useful to change the popup position frequently. The popup size is always slightly changed with the emoji annotation length. M ui/gtk3/emojier.vala commit e6badb494e0a31b7aca3a5078a5dc5b27b83390d Author: fujiwarat Date: 2018-08-30 12:57:46 +0900 ui/gtk3: Support Shift-Space to insert a Space on Emojier preedit Implemented Shift-Space on preedit since Shift-Space had worked on Emojier's GtkEntry in the previous release. M ui/gtk3/panelbinding.vala commit 28d22176aee6be97d88dd6c60fa5395c79563ec0 Author: fujiwarat Date: 2018-08-30 12:57:33 +0900 ui/gtk3: Fix SEGV when type ASCII on emojier Emojier still included Gtk.Entry, accepted key events in Wayland, reset the lookup table and it caused SEGV because IBus.Text is NULL in the lookup table in Emojier.get_current_candidate(). Now Gtk.Entry is deleted completely. BUG=rhbz#1618682 M ui/gtk3/emojier.vala commit 7edaefdc1d80aefdbbc2dc52526c20715759da83 Author: fujiwarat Date: 2018-08-22 17:20:53 +0900 ui/gtk3: Do not clear unicode data when emoji annotation lang is changed M ui/gtk3/emojier.vala commit aa0f4252ff965729b871c91b4ed089bf98963c0b Author: fujiwarat Date: 2018-08-10 15:43:58 +0900 ui/gtk3: Check if gdk-wayland is installed BUG=https://github.com/ibus/ibus/issues/2035 M configure.ac M ui/gtk3/Makefile.am M ui/gtk3/panelbinding.vala commit fd9d4a927d91eb0c1349f001a4a773900357cbc7 Author: fujiwarat Date: 2018-08-08 15:41:41 +0900 Release 1.5.19 M configure.ac commit 999aee3f4bd99fb01f21f5e99d92d02e06a927d2 Author: fujiwarat Date: 2018-08-08 15:39:13 +0900 po: Update translations Update po/hu.po po/nl.po M po/hu.po M po/nl.po commit b94e8f2d993f2f24e9e977227eaae7d335fc478f Author: fujiwarat Date: 2018-08-07 20:33:32 +0900 src: Replace deprecated BOOL with BOOLEAN for glib-genmarshal M bus/ibusimpl.c M bus/inputcontext.c M bus/marshalers.list M src/ibusemojigen.h M src/ibusengine.c M src/ibusmarshalers.list M src/ibuspanelservice.c commit 5db6e7b40e7937a306411b152a1e39525351d988 Author: fujiwarat Date: 2018-08-07 20:33:26 +0900 src/tests: Ask --enable-memconf in make check instead of build order M Makefile.am M src/tests/Makefile.am M src/tests/runtest commit 269570867793df64aaefcac1963f2e973c1fb8ef Author: fujiwarat Date: 2018-08-07 16:34:18 +0900 src/tests: Fix make check to link src/libibus.so M bus/Makefile.am M bus/panelproxy.c M src/tests/Makefile.am M src/tests/runtest commit 428e64eac8f7dc3ff60234435fe5f34d50126432 Author: fujiwarat Date: 2018-08-06 15:59:06 +0900 src: Describe "default" layout in ibus_engine_desc_new() BUG=https://github.com/ibus/ibus/issues/2011 M src/ibusenginedesc.h commit dc5e7eeba30d0bc2327ffa562cdf6ca0ae23aecc Author: fujiwarat Date: 2018-08-06 15:26:42 +0900 ui/gtk3: Show previous emojis with "history" annotation M ui/gtk3/emojier.vala commit f328fd67f479faa46ca87bf3c85eed7080ec5ec0 Author: fujiwarat Date: 2018-08-06 12:33:44 +0900 client/gtk2: Add IBUS_DISCARD_PASSWORD for firefox and chrome popup window in firefox is closed in Xorg GNOME when password entry is focus on. It's caused by gnome-shell [1]. Now IBUS_DISCARD_PASSWORD and IBUS_DISCARD_PASSWORD_APPS enviroment variables are implemented in IBus GTK clients as a workaround. env IBUS_DISCARD_PASSWORD=1 firefox or export IBUS_DISCARD_PASSWORD_APPS='firefox,.*chrome.*' can discard typing characters on the password entries. [1] https://gitlab.gnome.org/GNOME/gnome-shell/issues/391 BUG=https://github.com/ibus/ibus/issues/2002 M client/gtk2/ibusimcontext.c commit 5f44e7307771685c70202f996e39e9aa68d48d2e Author: fujiwarat Date: 2018-08-03 14:58:10 +0900 data/dconf: Add man pages of 00-upstream-settings(5) and ibus(5) Also delete --mem-profile option in ibus-daemon(1) M bus/ibus-daemon.1.in A data/dconf/00-upstream-settings.5.in M data/dconf/Makefile.am A data/dconf/ibus.5.in M ui/gtk3/ibus-emoji.7.in commit be7554cea294aa13a65895b66b26e5f1fa4a1897 Author: Ryutaroh Matsumoto <36657667+ryutaroh-matsumoto@users.noreply.github.com> Date: 2018-08-02 08:10:04 +0900 option --monitor-timeout should be removed ibus-daemon(1) has explanation of --monitor-timeout, but main.c does not accept it and make an error. M bus/ibus-daemon.1.in commit 8d302c853f4e88f81652e0aeeca86ff1b5779ecb Author: fujiwarat Date: 2018-07-24 16:04:31 +0900 RHEL code reviews M client/x11/main.c M setup/enginetreeview.py M setup/ibus-setup.in M src/emoji-parser.c M src/ibusbus.c M src/ibuscomposetable.c M src/ibusenginesimple.c M src/ibushotkey.c M src/ibuskeymap.c M src/ibuskeynames.c M src/ibusregistry.c M src/ibusservice.c M src/ibusxml.c M src/unicode-parser.c M util/IMdkit/FrameMgr.c M util/IMdkit/IMConn.c M util/IMdkit/i18nClbk.c M util/IMdkit/i18nIc.c M util/IMdkit/i18nMethod.c M util/IMdkit/i18nOffsetCache.c M util/IMdkit/i18nPtHdr.c M util/IMdkit/i18nUtil.c M util/IMdkit/i18nX.c commit 0dde239a3c786dcc479e3103ccd49938fcb47191 Author: Kentaro Hayashi Date: 2018-07-24 15:20:51 +0900 bus: warn deprecated --mem-profile option Since GLib 2.46, memory profiling feature does not work anymore. GLib 2.46 or later means that Ubuntu 16.04 or later. Ubuntu 14.04 (trusty) are still supported as LTS phase, but it seems that GLib is old enough (2.40) to drop support. As a result: * older than GLib 2.46: Just drop support * GLib 2.46 or later: Show a warning message if --mem-profile is used. M bus/main.c M configure.ac commit 6b47e41d66497dd35752a89ea80e4bac55b64e45 Author: Takuro Ashie Date: 2018-07-20 12:30:09 +0900 Remove a misleading "const" modifier of a return value ibus_key_event_to_string() uses g_string_free(str, FALSE) to return a string so that users must free it. To clarify it, the const modifier should be removed. M src/ibuskeynames.c M src/ibusshare.h commit caffeaeee5be121713104fba331b9cf30726aa91 Author: fujiwarat Date: 2018-06-29 16:06:52 +0900 panelbinding: Fix SEGV in panel_binding_parse_accelerator panel_binding_parse_accelerator() could return NULL of the unowned IBus.ProcessKeyEventData with gcc optimization. Since Vala does not provice a static local variable, the variable is moved to the class member to fix this SEGV. Also fixed an infinite loop to show a compose preedit in xterm. Also a NULL preedit is fixed in the first emoji candidate from the emoji category window. M bus/inputcontext.c M bus/panelproxy.c M ui/gtk3/panelbinding.vala commit 3a68ded197b3ad2e45ac08fe52c0514aff987367 Author: fujiwarat Date: 2018-06-29 16:02:32 +0900 ibusenginesimple: Do not show combined character on compose preedit Some applications could combine their committed string with compose character on preedit. E.g. dead_grave after 'e' on firefox BUG=https://github.com/ibus/ibus/issues/1935 M src/ibusenginesimple.c commit f9e30359d328054793e1e225dcf2fe537e6c8c48 Author: fujiwarat Date: 2018-06-27 12:11:41 +0900 ibusenginesimple: Enable preedit for compose keys BUG=https://github.com/ibus/ibus/issues/1935 M src/ibusenginesimple.c commit c8a99943caa1adace0affc78ed5dbde3896f39c7 Author: fujiwarat Date: 2018-06-27 12:04:40 +0900 Update translations Update po/ca.po po/da.po po/es.po po/fr.po po/hu.po po/ja.po po/nl.po po/pl.po po/sv.po po/uk.po po/vi.po po/zh_TW.po M po/ca.po M po/da.po M po/es.po M po/fr.po M po/hu.po M po/ja.po M po/nl.po M po/pl.po M po/sv.po M po/uk.po M po/vi.po M po/zh_TW.po commit 7cef5bf572596361bc502e8fa917569676a80372 Author: fujiwarat Date: 2018-06-20 19:01:59 +0900 setup: Replace emoji font with Unicode font Now the font settings of emoji is configurable in the session base but not the application base and the current font setting on ibus-setup effects on Unicode characters. Also fixed the progress bar on Unicode candidate table. M setup/setup.ui M src/tests/runtest M ui/gtk3/emojier.vala commit 5ee3f48049ecf128391da6448ae7e74786bd171b Author: fujiwarat Date: 2018-06-18 12:46:11 +0900 Move input focus on Emojier to engines' preedit M bindings/vala/IBus-1.0-custom.vala M bindings/vala/Makefile.am A bindings/vala/gdk-wayland.vapi M bus/engineproxy.c M bus/engineproxy.h M bus/ibusimpl.c M bus/inputcontext.c M bus/inputcontext.h M bus/panelproxy.c M bus/panelproxy.h M data/ibus.schemas.in M setup/main.py M setup/setup.ui M src/ibusengine.c M src/ibuspanelservice.c M src/ibuspanelservice.h M src/ibusshare.h M src/ibusxevent.c M src/ibusxevent.h M ui/gtk3/Makefile.am M ui/gtk3/emojier.vala M ui/gtk3/emojierapp.vala M ui/gtk3/extension.vala M ui/gtk3/panel.vala M ui/gtk3/panelbinding.vala commit 37aa95f1adcdde82ef473936cadc0fa3fe8a4e44 Author: fujiwarat Date: 2018-06-15 19:23:27 +0900 setup: Replace GtkTable /w GtkGrid M setup/setup.ui commit ddc2284200971141947a37057356b4bbd84be7ce Author: fujiwarat Date: 2018-06-14 18:30:46 +0900 tools: Add ibus read-config --engine-id option for engine schemas Fixed ibus read-config and reset-config options and also added --engine-id sub option for engine schemas. E.g. % ibus read-config --engine-id anthy % ibus read-config --engine-id com.github.libpinyin.ibus-libpinyin.libpinyin M tools/main.vala commit cf4e2f1d815b700b0470380e0ff428ff266cc18a Author: fujiwarat Date: 2018-06-14 17:29:06 +0900 bus: Rename panel-extension to emoji-extension for CLI M bus/main.c commit a1f91b27145b046a112bb5eba2561880dae5d6a2 Author: fujiwarat Date: 2018-06-04 17:44:17 +0900 ui/gtk3: Get PangoAttrList of auxiliary text from IBusText Since IBus auxiliary text would be one line, it's better to show the character attributes likes color, italic, bold, on the auxiliary text. Also deleted the cursor width from the X position of CandidatePanel because IBus preedit overrides the original cursor of the applications. M ui/gtk3/candidatepanel.vala commit 8ab0b603ba1cd8701583aee46c712898d52005f1 Author: fujiwarat Date: 2018-05-23 19:20:10 +0900 bus: Fix a SEGV in bus_input_context_emit_signal IBus engines can call 'RequireSurroundingText' for a fake input context if there is no input focus. M bus/inputcontext.c commit 196216a89a9167425dd9b41f4f1d8a494d370249 Author: fujiwarat Date: 2018-05-11 19:13:03 +0900 src: Add ibus-keypress M configure.ac M src/tests/Makefile.am A src/tests/ibus-keypress.c M src/tests/runtest commit 886ad3651d16dd821e2526e8601c69738533a7e8 Author: fujiwarat Date: 2018-05-07 12:35:03 +0900 src: Fix SEGV in IBusEngine if no emoji shortcut keys BUG=https://github.com/ibus/ibus/issues/2005 M src/ibusengine.c commit d8f901f856ddd75baba5826038d1346c5a43d048 Author: fujiwarat Date: 2018-04-20 15:58:06 +0900 Replace OnlyShowIn= with NoDisplay=true BUG=rhbz#1567689 M ui/gtk3/ibus-extension-gtk3.desktop.in.in M ui/gtk3/ibus-ui-emojier.desktop.in.in commit 3280848b42b07afbac3d59066474c5f429de9182 Author: fujiwarat Date: 2018-04-17 14:43:02 +0900 bus: Enable sub package of gtkextension.xml and ibus-extension-gtk3 GNOME destkop asked not to install ibus-extension-gtk3 by default since the UI is not called by gnome-shell. BUG=rhbz#1567689 M bus/main.c commit 10cc30eac200d10b581d9d2122d5a732f4880943 Author: fujiwarat Date: 2018-04-17 14:00:20 +0900 src/tests: Enable GSettings in runtest M src/tests/runtest commit 7bc160f2139799b853678264c6b01277f0721336 Author: fujiwarat Date: 2018-04-13 19:39:09 +0900 bus: Add DISABLE_GUI_TESTS for test-stress M bus/Makefile.am commit 8d4c4738d07b6850e56ae74d46b7b13b7382f865 Author: fujiwarat Date: 2018-04-13 17:33:50 +0900 configure: Add --disable-python2 option M bindings/pygobject/Makefile.am M configure.ac commit 68bd2695c4cc6a06cb8a55a55fed2054d29f0995 Author: fujiwarat Date: 2018-04-13 16:31:29 +0900 src/tests: Fix a typo M src/tests/Makefile.am commit c360cbd830943a4bfb0ece9cc07b99a426dc2121 Author: fujiwarat Date: 2018-04-09 11:57:09 +0900 src/tests: Add ibus-compose.env A src/tests/ibus-compose.env commit 68e162a59c7943ee6207ff7d21f9a75d1e6f2f79 Author: fujiwarat Date: 2018-04-06 20:35:50 +0900 src/tests: Fix a typo in runtest M src/tests/runtest commit 32f2f2bab149ad766674e7421f7044ebe98bb0b6 Author: fujiwarat Date: 2018-04-06 20:24:08 +0900 tests: Added an automation testing on console test-console.sh runs /usr/bin/ibus-daemon on console after install ibus. Login as root --builddir /root/ibus/src/tests --srcdir /root/ibus/src/tests Also added DISABLE_GUI_TESTS parameters for make check. M bus/Makefile.am M src/tests/Makefile.am M src/tests/runtest A test/test-console.sh commit 28d0c1d4bc47beb38995d84cc4bb1d539c08a070 Author: Olivier Tilloy Date: 2018-04-06 16:02:11 +0900 src: Make the call to chmod in ibus_bus_init conditional BUG=https://github.com/ibus/ibus/issues/1996 M src/ibusbus.c commit 75a6667b6ad8c8cb801cb160b7b04625334f9094 Author: fujiwarat Date: 2018-04-05 16:54:41 +0900 src/tests: Fix ibus-compose for the latest GTK M src/tests/ibus-compose.c commit 5788be80685f397c3db3bdf4e672d67cfb9b3433 Author: Jeremy Bicha Date: 2018-03-30 12:37:27 +0900 Fix ucd directory override BUG=https://github.com/ibus/ibus/pull/1995 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/339450043 Patch from Jeremy Bicha . M configure.ac commit b184861396279d903e62bf6aad271a2205a79832 Author: fujiwarat Date: 2018-03-30 12:33:59 +0900 ui/gtk3: Sort Unicode candidates BUG=rhbz#1554714 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/339430043 M ui/gtk3/emojier.vala commit c6439d74d5472c95de4d5c2cdc6487bfd508e3d8 Author: fujiwarat Date: 2018-03-15 16:57:02 +0900 ui/gtk3: Add num pad Enter, Down, Up, Left, Right on Emojier BUG=rhbz#1554813 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/337690043 M ui/gtk3/emojier.vala commit 86963f2f94d1e4fc213b01c2bc2ba9dcf4b22219 Author: fujiwarat Date: 2018-03-02 15:31:12 +0900 Release 1.5.18 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/336630043 M configure.ac commit 73b420f49ba54b6eac74fb59cb3af948f3a592d6 Author: fujiwarat Date: 2018-03-01 15:51:00 +0900 Updated translations Updated po/ca.po po/da.po po/hu.po po/ja.po po/ko.po R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/340720043 M po/as.po M po/bn_IN.po M po/ca.po M po/cs.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/gu.po M po/hu.po M po/it.po M po/ja.po M po/kn.po M po/ko.po M po/mr.po M po/nl.po M po/pl.po M po/pt_BR.po M po/sv.po M po/ta.po M po/te.po M po/uk.po M po/zh_CN.po M po/zh_HK.po M po/zh_TW.po commit ece320bda762024541b23178a1b65c3ec968416f Author: fujiwarat Date: 2018-03-01 15:48:03 +0900 bus: Add liveuser to disabled panel extension R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/335610043 M bus/main.c commit afe60c12a0e5bf70344930c6769675a439dc82d2 Author: fujiwarat Date: 2018-03-01 15:42:03 +0900 ui/gtk3: Implement Page_Down, Page_Up on Unicode name list Page_Down and Page_Up are useful on Unicode name list since the names are many. Also add Ctrl-Shift-[n|p] for the same purpose. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/340800043 M ui/gtk3/emojier.vala M ui/gtk3/ibus-emoji.7.in commit 56c67b1362344e2ab4a061bcc913c455b190ef20 Author: fujiwarat Date: 2018-03-01 15:37:15 +0900 ui/gtk3: Set title string in gnome-shell gnome-shell uses .desktop files to get the application title names. Probably the reason is to manage any windows and Xorg and Wayland. BUG=https://mail.gnome.org/archives/gtk-app-devel-list/2018-February/msg00027.html R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/338520043 M po/POTFILES.in M ui/gtk3/Makefile.am M ui/gtk3/emojierapp.vala M ui/gtk3/extension.vala A ui/gtk3/ibus-extension-gtk3.desktop.in.in A ui/gtk3/ibus-ui-emojier.desktop.in.in M ui/gtk3/panelbinding.vala commit c57b7c34d75871db172e023b0094b979000f62fc Author: fujiwarat Date: 2018-02-27 14:10:29 +0900 Enable emoji keybinding in Wayland XI2 keybinding does not work for the root window in Wayland because of a security issue maybe. Now I think to move the keybinding in ibus-extension-gtk3 to each IBusEngine. FIXME: Unfortunatelly gtk_get_current_event_time() cannot get time for the delayed DBus events and gtk_window_move() does not work for GtkDialog without a parent window in Wayland. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/333700043 M bus/engineproxy.c M bus/ibusimpl.c M bus/inputcontext.c M src/Makefile.am M src/ibus.h A src/ibusaccelgroup.c A src/ibusaccelgroup.h M src/ibusengine.c M ui/gtk3/emojier.vala M ui/gtk3/extension.vala M ui/gtk3/panelbinding.vala commit 7ccbd21ca7d163cdd71dc6c0405d8a32d63d324d Author: fujiwarat Date: 2018-02-27 14:06:30 +0900 Disable panel extension for gdm user The gdm user's process is also running while the login user's process is running so the double panel extensions are better to be avoided for the memory usage. Review URL: https://codereview.appspot.com/340330044 M bus/main.c commit fc54b0c051c2eb4a2c1f836b1415def00314cfc1 Author: fujiwarat Date: 2018-02-21 12:17:31 +0900 ui/gtk3: Load Unicode data when open the dialog by default The emoji data requires about 10MB and the Unicode data requires about 15MB. Now the emoji data is loaded at the time of startup and the Unicode data is loaded if users open the dialog at the beginning. The settings can be customized with gsettings command and the keys of 'load-emoji-at-startup' and 'load-unicode-at-startup' in 'org.freedesktop.ibus.panel.emoji' schema. Review URL: https://codereview.appspot.com/340780043 M data/ibus.schemas.in M ui/gtk3/panelbinding.vala commit d1ebb3d77ebfe8f58188261c383d8122e2125fe6 Author: fujiwarat Date: 2018-02-21 12:12:11 +0900 ui/gtk3: Show code points on Unicode name list dialog The code points are useful since the list has many names. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/340770043 M ui/gtk3/emojier.vala commit 366963d57d1468914611c71929cc64c83be9affd Author: Piotr Drąg Date: 2018-02-20 18:57:32 +0900 Fix typos in translatable strings BUG=https://github.com/ibus/ibus/pull/1983 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/333670043 Patch from Piotr Drąg . M data/ibus.schemas.in M ui/gtk3/emojierapp.vala commit fb07f64764f18f702221ff5574b2fd2193f051f0 Author: fujiwarat Date: 2018-02-20 17:25:07 +0900 Implement ibus-extension-gtk3 for the global keybinding Currently IBus panel (ibus-ui-gtk3) is not available in GNOME and Plasma so the emoji and unicode point typings are not available in GNOME and Plasma. The workaround `ibus emoji` command is available but it put the selected character into the copy buffer and users have to paste the character. Originaly the emoji feature was implemented in IBus GtkIMModule but it had several problems; the first is the keybinding is hard-coded and IBus GtkIMModule does not use GSettings for the customized settings. The second is the feature was available for GTK applications. The third is that XKB input sources uses gtk-im-context-simple but not ibus in GNOME desktop so users have to add an IM input sources to enable IBus for the XKB input sources. The fourth is the feature was available for IBusEngineSimple only and other IBus IMEs need to inherit that class to get the emoji feature. The fifth is that emoji typing is available for English only since IBusEngineSimple had the feature. The sixth is that the default one dimension lookup window was not useful to choose an emoji and needed two dimensions lookup window. And the implementation was moved from IBus GtkIMModule to IBus panel to fix above problems. But users have to use `ibus emoji` at present if ibus-ui-gtk3 is not available. Now I think to move the emoji feature from ibus-ui-gtk3 to another IBus component; ibus-extension-gtk3 which manages the Ctrl-Shift-e. GNOME and Plasma desktops still do not show the GUI menu but the shortcut key is available in this implementation. BUG=RHBZ#1430501 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/339300043 M bindings/vala/IBus-1.0-custom.vala M bus/Makefile.am M bus/ibusimpl.c M bus/main.c M bus/marshalers.list M bus/panelproxy.c M bus/panelproxy.h M src/Makefile.am M src/ibus.h M src/ibusmarshalers.list M src/ibuspanelservice.c M src/ibuspanelservice.h M src/ibusserializable.c M src/ibusserializable.h M src/ibusshare.c M src/ibusshare.h A src/ibusxevent.c A src/ibusxevent.h M src/tests/runtest M ui/gtk3/Makefile.am A ui/gtk3/bindingcommon.vala M ui/gtk3/candidatearea.vala A ui/gtk3/extension.vala A ui/gtk3/gtkextension.xml.in M ui/gtk3/iconwidget.vala M ui/gtk3/panel.vala A ui/gtk3/panelbinding.vala commit 9f2699c6023e37bd096484d36b2a83b1e680f1b3 Author: fujiwarat Date: 2018-02-08 11:59:59 +0900 Fix typo in ISSUE_TEMPLATE R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/340240043 M .github/ISSUE_TEMPLATE.md commit ff611a4bf2f74fcb7c3df3f57ba3bff4e50a16ff Author: fujiwarat Date: 2018-02-06 11:05:10 +0900 Add ISSUE_TEMPLATE BUG=https://github.com/blog/2111-issue-and-pull-request-templates Review URL: https://codereview.appspot.com/336540043 A .github/ISSUE_TEMPLATE.md commit 4cfd5ad7c6d071cfef6c7d678cc027ea480b8fc9 Author: fujiwarat Date: 2018-02-06 11:02:09 +0900 Fix typo in ibusunicode.c Review URL: https://codereview.appspot.com/340740043 M src/ibusunicode.c M ui/gtk3/emojier.vala commit e17c99859d06ab75326730e45072e1061f7d87c7 Author: fujiwarat Date: 2018-01-29 16:50:07 +0900 Implement Unicode choice on Emojier BUG=https://github.com/ibus/ibus/issues/1922 Review URL: https://codereview.appspot.com/340190043 M configure.ac M po/POTFILES.in M src/Makefile.am M src/emoji-parser.c M src/ibus.h A src/ibusunicode.c A src/ibusunicode.h A src/ibusunicodegen.h A src/unicode-parser.c M ui/gtk3/emojier.vala M ui/gtk3/emojierapp.vala M ui/gtk3/ibusemojidialog.h M ui/gtk3/panel.vala commit bfe57d20e9d39d52428e95e493d9af0bd034a82f Author: fujiwarat Date: 2018-01-15 14:44:07 +0900 Added DBus filtering against malware The proposal prevents non-ower of the GDBusConnection from accessing DBus methods against malicious usages. BUG=https://github.com/ibus/ibus/issues/1955 Review URL: https://codereview.appspot.com/335380043 M bus/inputcontext.c M src/ibusengine.c M src/ibuspanelservice.c commit 0ab0dd3149cbcf0a914a711ecf421ba32b1300c3 Author: Peng Wu Date: 2018-01-12 12:00:00 +0900 ui/gtk3: Translate input method name in ibus Translate input method name in ibus menu and switcher BUG= R=takao.fujiwara1@gmail.com Review URL: https://codereview.appspot.com/339170043 Patch from Peng Wu . M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit 88b9a93d61824ba8b18cc9fc943527937db5e40b Author: Aaron Muir Hamilton Date: 2017-11-17 12:27:30 +0900 src: Reintroduce the hex mode keybind with an environment variable This was removed by "Move emoji implementation from IBusEngineSimple to IBusPanel". Reintroduced here behind an environment variable. BUG=https://github.com/ibus/ibus/issues/1961 Review URL: https://codereview.appspot.com/335030043 Patch from Aaron Muir Hamilton . M src/ibusenginesimple.c commit a28fa740bfc64bfb65eab9c5fad8bb2086a1e45a Author: Danny Date: 2017-11-16 12:32:52 +0900 src: Add libgobject.so to LDADD for Debian libtool Debian libtool ignores dependency_libs in libibus.la for dlopen modules so need to add libraries in LDADD explicitly. https://www.mail-archive.com/libtool@gnu.org/msg11616.html BUG=https://github.com/ibus/ibus/issues/1952 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/334070043 Patch from Danny . M src/Makefile.am commit f5e0752fe345db2033a2b49de206dc62acd00a2b Author: fujiwarat Date: 2017-11-09 12:14:08 +0900 src: Added some error handlings from a code review Review URL: https://codereview.appspot.com/337900043 M src/ibuscomposetable.c M src/ibusenginesimple.c commit 1cbe86726d99b79201cf3735610524e9a49aa08b Author: Carlos Garnacho Date: 2017-10-31 13:17:16 +0900 src: Fix GVariant leaks g_task_propagate_pointer() gives ownership of the data to the caller, so the GVariants handed this way must be unref'ed after the contents have been extracted/copied. BUG=https://github.com/ibus/ibus/pull/1956 Review URL: https://codereview.appspot.com/330710043 Patch from Carlos Garnacho . M src/ibusbus.c commit c36081898d93c6256ee78fa94dccd769fffff41f Author: fujiwarat Date: 2017-10-26 11:03:18 +0900 tools: Do not change keymaps with 'use-system-keyboard-layout' BUG=https://github.com/ibus/ibus/issues/1951 Review URL: https://codereview.appspot.com/334890043 M tools/main.vala commit 4f9fa092924b75084b3b9e3fc368d0744db8ad2a Author: fujiwarat Date: 2017-10-22 19:25:55 +0900 Release 1.5.17 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/332030043 M configure.ac commit 8cb149bfed9938967af1e823c3a09284a9f2501c Author: fujiwarat Date: 2017-10-22 19:16:52 +0900 Update translations Update cs.po da.po es.po fr.po hu.po ja.po nl.po pl.po sv.po uk.po zh_TW.po R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/331040043 M po/cs.po M po/da.po M po/es.po M po/fr.po M po/hu.po M po/ja.po M po/nl.po M po/pl.po M po/sv.po M po/uk.po M po/zh_TW.po commit 53d1f9e92666c77ec13efaeb5f330d05332a8360 Author: fujiwarat Date: 2017-10-20 11:34:55 +0900 ui/gtk3: Increase timeout of window filter in PropertyPanel The latest Plasma desktop takes more time to generate _NET_WORKAREA atom and this patch increases the timeout from 1 minute to 5 minutes so that PropertyPanel locate within the workarea. Review URL: https://codereview.appspot.com/336840043 M ui/gtk3/propertypanel.vala commit dfe21a2729f13107ef28c4cd075ac81d501384ea Author: fujiwarat Date: 2017-10-19 10:53:27 +0900 ui/gtk3: Unref Panel and Indicator when double panels run If unref is not called properly, Panel.finalize() is not called and Gtk.StatusIcon won't be hidden with double panels. Review URL: https://codereview.appspot.com/329510043 M ui/gtk3/application.vala M ui/gtk3/indicator.vala M ui/gtk3/panel.vala commit 98f70ee5966cfe182a75c6cc6466032bf414c640 Author: fujiwarat Date: 2017-10-11 12:54:10 +0900 ui/gtk3: Do not activate emoji cells on mouse until mouse moves R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/324660043 M ui/gtk3/emojier.vala M ui/gtk3/emojierapp.vala M ui/gtk3/panel.vala commit d37c8bbdf9164ca76fb5ca513891e48273556881 Author: fujiwarat Date: 2017-09-26 11:42:23 +0900 ui/gtk3: Unset GDK_CORE_DEVICE_EVENTS Plasma deskop sets this variable and prevents Super-space and Ctrl-Shift-e when ibus-ui-gtk3 runs after the desktop is launched. Also fixed a SEGV in display.get_monitor_at_window() Regression from rhbz#226465 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/321710043 M ui/gtk3/application.vala M ui/gtk3/switcher.vala commit 4a541639f50f05bf01b1b84792a7f4039b88c296 Author: fujiwarat Date: 2017-09-15 17:49:57 +0900 ui/gtk3: Fix to enable menu button on PropertyPanel Review URL: https://codereview.appspot.com/330720043 M ui/gtk3/propertypanel.vala commit 0632cbbbb573749bbca96a416fde1490810e52d2 Author: fujiwarat Date: 2017-09-13 18:15:06 +0900 ui/gtk3: Fix PropertyPanel position in workarea gdk_screen_get_monitor_workarea() no longer return the correct area from "_NET_WORKAREA" atom in GTK 3.22 and now use gdk_monitor_get_workarea() instead. Use gdk_seat_grab() instead of deprecated gdk_device_grab(). Use gtk_menu_popup_at_rect() instead of deprecated gtk_menu_popup() and generate a new foreign GdkWindow with mouse cursor for the Qt Window. Also fixed some deprecated APIs. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/330190043 M ui/gtk3/candidatepanel.vala M ui/gtk3/emojier.vala M ui/gtk3/handle.vala M ui/gtk3/indicator.vala M ui/gtk3/keybindingmanager.vala M ui/gtk3/panel.vala M ui/gtk3/propertypanel.vala M ui/gtk3/switcher.vala commit 79aebc5553adeb2beff924135ee3b7e4e6c7eb94 Author: fujiwarat Date: 2017-09-11 12:32:35 +0900 Remove debian directory upon the Debian's request Makefile.am is also modified to get rid of debian words. BUG=https://github.com/ibus/ibus/issues/1945 R=Shawn.P.Huang@gmail.com, osamu.aoki@gmail.com, shawn.p.huang@gmail.com Review URL: https://codereview.appspot.com/322670043 M Makefile.am D debian/README.source D debian/changelog.in D debian/clean D debian/compat D debian/control D debian/copyright D debian/docs D debian/ibus-daemon.1 D debian/ibus-gconf.1 D debian/ibus-gtk2.install D debian/ibus-gtk3.install D debian/ibus-setup.1 D debian/ibus-ui-gtk.1 D debian/ibus-x11.1 D debian/ibus.1 D debian/ibus.install D debian/ibus.manpages D debian/ibus.postinst D debian/ibus.prerm D debian/libibus-1.0-0.install D debian/libibus-1.0-0.symbols D debian/libibus-dev.install D debian/patches/00list D debian/python-ibus.install D debian/pyversions D debian/rules D debian/source/format D debian/watch D debian/xinput/ibus commit d784e04c38eeb069f9a8da8b30743f4463fa34c3 Author: fujiwarat Date: 2017-09-07 10:57:14 +0900 client/gtk2: Fix a build failure with GDK_MODIFIER_INTENT_NO_TEXT_INPUT BUG=https://github.com/ibus/ibus/issues/1942 Review URL: https://codereview.appspot.com/327300043 M client/gtk2/ibusimcontext.c commit bbfb3d738b9d61d1eb0658a9ce56e3cd8c111ac4 Author: fujiwarat Date: 2017-09-06 14:08:40 +0900 client/gtk2: Do not send key events to GtkIMContextSimple GtkIMContextSimple binds Ctrl-Shift-u but IBus clients do not now. BUG=https://github.com/ibus/ibus/issues/1889 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/327290043 M client/gtk2/ibusimcontext.c M src/ibusenginesimple.c M src/ibusenginesimple.h commit d788918b635275d0247e68f26f9c840100bca366 Author: fujiwarat Date: 2017-09-06 12:17:30 +0900 ui/gtk3: Switcher should ignore mouse until it moves BUG=https://github.com/ibus/ibus/issues/1929 Review URL: https://codereview.appspot.com/329100043 M ui/gtk3/switcher.vala commit 21bac4733684ca6a74ddb02f457c0fe19eb9180d Author: fujiwarat Date: 2017-09-06 12:11:01 +0900 ui/gtk3: Move ibus-emoji-dialog.vapi from ui/gtk3 to bindings/vala R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/322590043 R100 ui/gtk3/IBusEmojiDialog-1.0.metadata bindings/vala/IBusEmojiDialog-1.0.metadata M bindings/vala/Makefile.am R100 ui/gtk3/ibus-emoji-dialog-1.0.deps bindings/vala/ibus-emoji-dialog-1.0.deps M po/POTFILES.skip M ui/gtk3/Makefile.am M ui/gtk3/emojier.vala M ui/gtk3/ibusemojidialog.h commit 3e01bab972ad12b92c55a9dde554a0359c217290 Author: fujiwarat Date: 2017-09-06 12:04:52 +0900 portal: Add org.freedesktop.IBus.Portal.xml in EXTRA_DIST Review URL: https://codereview.appspot.com/325370043 M portal/Makefile.am commit 9937a0e4501ccf0cfd238ce7c97733c3099db3f7 Author: fujiwarat Date: 2017-09-04 12:19:07 +0900 bus: ibus-daemon activates ibus-portal When ibus-daemon restarts, ibus-portal exits with on_name_lost() and the clients wait for portal_name_appeared() until ibus-poral restarts. Now the clients can connect to ibus-daemon with this way and also they don't have to activate ibus-portal. BUG=https://github.com/flatpak/flatpak/issues/675 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/321530043 M bus/server.c M portal/portal.c commit 9772e800f3e6937510f2609c5ce9a6860c59cb81 Author: Alexander Larsson Date: 2017-09-04 12:02:17 +0900 test: Testing in flatpak Test with: flatpak-builder --force-clean app org.test.IBus.json flatpak-builder --run --nofilesystem=host app org.test.IBus.json zenity --entry BUG=https://github.com/flatpak/flatpak/issues/675 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/329090043 Patch from Alexander Larsson . A test/org.test.IBus.json commit 35ce62474fa97a5460d72c360943700a413a07ae Author: Alexander Larsson Date: 2017-08-31 12:03:37 +0900 Support the portal in the gtk im modules This adds a new way to create an IbusBus, ibus_bus_new_async_client(). This returns an object that is not guarantee to handle any calls that are not needed by a client, meaning CreateInputContext and handling the input context. If you are running in a flatpak, or if IBUS_USE_PORTAL is set, then instead of talking to the regular ibus bus we connect to org.freedesktop.portal.IBus on the session bus and use the limited org.freedesktop.IBus.Portal interface instead of the org.freedesktop.IBus interface. This allows flatpaks (or other sandbox systems) to safely use dbus clients (apps). BUG=https://github.com/flatpak/flatpak/issues/675 Review URL: https://codereview.appspot.com/328410043 Patch from Alexander Larsson . M client/gtk2/ibusimcontext.c M src/ibusbus.c M src/ibusbus.h M src/ibusinputcontext.c commit 203a3df5a239d644cf42b7bac03a268eb5babfc7 Author: Alexander Larsson Date: 2017-08-30 11:38:09 +0900 Initial version of ibus portal This adds a dbus service called org.freedesktop.portal.IBus on the session bus. It is a very limited service that only implements CreateInputContext and the InputContext interface (and Service.Destroy for lifetime access). It uses gdbus code generation for demarshalling the method calls which means it will verify that all arguments have the right type. Additionally all method calls to the input context object have to be from the client that created it, so each client is isolated. BUG=https://github.com/flatpak/flatpak/issues/675 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/326350043 Patch from Alexander Larsson . M Makefile.am M configure.ac A portal/Makefile.am A portal/org.freedesktop.IBus.Portal.xml A portal/org.freedesktop.portal.IBus.service.in A portal/portal.c M src/ibusshare.h commit c1b93f933f5cbd74f3e06575d26ed7432a5420fd Author: Mario Bodemann Date: 2017-08-15 12:10:56 +0900 Typo fix BUG=https://github.com/ibus/ibus/pull/1939 Review URL: https://codereview.appspot.com/327080043 Patch from Mario Bodemann . M ui/gtk3/ibus-emoji.7.in commit 6a3301db85e77e0652f7e00894cce493b6a942f6 Author: Xiang Fan Date: 2017-08-10 11:24:39 +0900 client/gtk2: include the scaling factor Scaling factor, which exists for HiDPI displays, needs to be included in the calculation of cursor location. This does not affect devices without a HiDPI display. Candidate windows would be misplaced to smaller coordinates without this patch. BUG=https://github.com/ibus/ibus/issues/1806 Review URL: https://codereview.appspot.com/328250043 Patch from Xiang Fan . M client/gtk2/ibusimcontext.c commit 91bebf01e41116d71e60876e793284cf9d8dc186 Author: fujiwarat Date: 2017-07-28 11:45:28 +0900 ui/gtk3: Fix SEGV of XKeysymToKeycode() on Wayland BUG=rhbz#1368593 BUG=rhbz#1446816 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/325120043 M ui/gtk3/application.vala commit bc0f91342c6f3a6e554493af9430d634d906ee19 Author: fujiwarat Date: 2017-07-25 12:00:14 +0900 ui/gtk3: Fix SEGV of IBusEmojier on de_DE.UTF-8 de's decimal_point is ',' instead of '.' and failed to load the CSS data in Gtk.CssProvider.load_from_data(), launched null window of emojis and finally caused a SEGV due to the null window. This also fixes some memory leaks. BUG=rhbz#1471079 Review URL: https://codereview.appspot.com/323310043 M src/ibusemoji.c M ui/gtk3/emojier.vala commit 56b5126f09887b41c2cc6cb97bfd72593b60732f Author: fujiwarat Date: 2017-07-25 11:55:08 +0900 po: Replace s/annotaions/annotations/ BUG=https://github.com/ibus/ibus/issues/1933 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/323330043 M data/ibus.schemas.in M po/cs.po M po/da.po M po/de.po M po/es.po M po/fr.po M po/hu.po M po/ja.po M po/nl.po M po/pl.po M po/pt_BR.po M po/sv.po M po/uk.po M po/zh_TW.po M ui/gtk3/emojierapp.vala commit ad80999f5a10faee1a665a2232e1cf60be901cc8 Author: fujiwarat Date: 2017-05-29 12:03:41 +0900 Make all emoji dicts for fully qualified Currently only emoji-en.dict enables fully qualified since it imports emoji-test.txt and it causes to hardly compare emojis between emoji-en.dict and emoji-$lang.dict when m_show_emoji_variant is enabled. E.g. U+1F3CC-FE0F-200D-2642-FE0F Now emoji-$lang.dict also import emoji-test.txt and enables fully qualified. R=penghuang@google.com Review URL: https://codereview.appspot.com/323860043 M src/Makefile.am M src/emoji-parser.c M src/ibusemoji.c M ui/gtk3/emojier.vala commit 081d09f1a927f459dacda3bcc59a1678ca2f9a95 Author: fujiwarat Date: 2017-05-29 11:54:31 +0900 ui/gtk3: Emojier supports Ctrl-c,v,x and Ctrl-Shift-c Ctrl-[c|v|x] copy, paste, or cut the emoji annotatons. Ctrl-Shift-c copies the selected emoji. Also Ctrl-Backspace is implemented to delete an annotation word. Also updated ibus-emoji.7.in man page. R=penghuang@google.com Review URL: https://codereview.appspot.com/316650043 M ui/gtk3/emojier.vala M ui/gtk3/ibus-emoji.7.in commit 44d053577a6ac115f3fd3b7beb7bdd65da81aa64 Author: fujiwarat Date: 2017-05-24 11:52:19 +0900 engine: Add Malay and Mongolian keymaps R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/325790043 M engine/simple.xml.in commit 4fe3050efa7335f82870fb1d5a1d170d20afc160 Author: fujiwarat Date: 2017-05-22 12:04:28 +0900 configure: Change relative paths to absolute ones BUG=https://github.com/ibus/ibus/issues/1926 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/322990043 M configure.ac commit e6bab7ab78c69d238a70a64e60963dd5a6711ffe Author: Felix Yan Date: 2017-05-19 12:13:04 +0900 Fix a typo in configure.ac BUG=https://github.com/ibus/ibus/pull/1927 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/317640043 Patch from Felix Yan . M configure.ac commit ccc602d626b29fae805fae2d0995126afac6d9e6 Author: fujiwarat Date: 2017-05-15 16:03:34 +0900 Release 1.5.16 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/320550043 M configure.ac A po/fi.po A po/sq.po A po/sv.po commit 21e6c003e0d4b8d50b266c02495ad9d62f30e7b4 Author: fujiwarat Date: 2017-05-15 13:47:39 +0900 Update translations Update po/ca.po po/cs.po po/de.po po/es.po po/fi.po po/fr.po po/hu.po po/it.po po/ja.po po/nl.po po/pl.po po/pt_BR.po po/ru.po po/sq.po po/sv.po po/uk.po po/zh_CN.po po/zh_TW.po Review URL: https://codereview.appspot.com/320300043 M po/LINGUAS M po/ca.po M po/cs.po M po/de.po M po/es.po M po/fr.po M po/hu.po M po/it.po M po/ja.po M po/nl.po M po/pl.po M po/pt_BR.po M po/ru.po M po/ta.po M po/uk.po M po/zh_CN.po M po/zh_TW.po commit 086fc542a7a9b1313198ae60355e711da05f5ed8 Author: fujiwarat Date: 2017-05-15 13:32:08 +0900 ui/gtk3: Fix to focus Emojier when type Control-Shift-e twice Some window managers, e.g. MATE, GNOME, Plasma desktops, does not give the keyboard focus when Emojier is lauched twice with Ctrl-Shift-e via XIEvent, if present_with_time() is not applied. Also fix to type some of ASCII emoji annotations likes :D Also update ibus-emoji.7.in to describe Control-f,b,n,p BUG=https://mail.gnome.org/archives/gtk-devel-list/2017-May/msg00026.html Review URL: https://codereview.appspot.com/325750043 M ui/gtk3/emojier.vala M ui/gtk3/emojierapp.vala M ui/gtk3/ibus-emoji.7.in M ui/gtk3/ibusemojidialog.h M ui/gtk3/panel.vala commit f6c2e2dd6f42a43fe973cf40701ee7d61f637287 Author: fujiwarat Date: 2017-05-10 11:50:08 +0900 ui/gtk3: Rename ibus-emoji.1.in to ibus-emoji.7.in R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/321900043 M tools/ibus.1.in M ui/gtk3/Makefile.am R100 ui/gtk3/ibus-emoji.1.in ui/gtk3/ibus-emoji.7.in commit 1159093dea3fdb8ceb62157f06b3560f8fc28378 Author: fujiwarat Date: 2017-05-09 13:58:02 +0900 Update favorites category automatically by selecting emoji When you commit an emoji with Emojier, Favorite category will be shown on GUI. Now a custom annotation also can be assigned to a favorite emoji by gsetting command. R=penghuang@google.com Review URL: https://codereview.appspot.com/312660043 M data/ibus.schemas.in M src/ibusemoji.h M ui/gtk3/emojier.vala M ui/gtk3/emojierapp.vala M ui/gtk3/ibusemojidialog.h M ui/gtk3/panel.vala commit 5f653d3102ada9139a2bc7504d6beaee1bc9984b Author: fujiwarat Date: 2017-05-09 13:54:01 +0900 ui/gtk3: Add ibus-emoji man mapge R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/323810043 M setup/ibus-setup.1.in M tools/ibus.1.in M ui/gtk3/Makefile.am A ui/gtk3/ibus-emoji.1.in commit edcb4a0259d2833904e7d1aac7c74e1aa49cea5b Author: fujiwarat Date: 2017-05-08 12:25:54 +0900 ui/gtk3: Hide emoji variants by default The emoji variants, i.e. skin colors and additional items, would not be used in most cases and it is nice to hide it by default. Now added GtkMenu and changed GtkWindow to GtkApplicationWindow for the menu. R=penghuang@google.com Review URL: https://codereview.appspot.com/322970043 M ui/gtk3/emojier.vala commit 0836c3ffd6764969dfaa9953f52a24c1cbf2c983 Author: fujiwarat Date: 2017-05-06 00:22:50 +0900 Support to match emoji annotations with partial string Now ibus-setup has a new tab of "Emoji" and it provides the options to choose a condtion and length to match emoji annotations partically. R=alexepico@gmail.com, penghuang@google.com Review URL: https://codereview.appspot.com/319700043 M data/ibus.schemas.in M setup/main.py M setup/setup.ui M ui/gtk3/emojier.vala M ui/gtk3/emojierapp.vala M ui/gtk3/panel.vala commit 2f73064d03481c9f34d278dd19d1a4427d6ecb27 Author: fujiwarat Date: 2017-04-28 13:10:03 +0900 Change to use Unicode Emoji files instead of EmojiOne files EmojiOne Json file have changed the file format since 3.0 [1] Now IBus migrated to use Unicode Emoji files since the EmojiOne file had been used for the emoji categories but it can be done with Unicode emoji-test.txt [2] Use Unicode Emoji 4.0 until 5.0 will be released officially. Unicode Emoji 5.0 is available but fonts does not support it yet. [1] https://github.com/Ranks/emojione/releases/tag/v3.0.0 [2] http://www.unicode.org/Public/emoji/4.0/ Review URL: https://codereview.appspot.com/321860043 M bindings/vala/Makefile.am M configure.ac M data/annotations/Makefile.am A data/annotations/en_ascii.xml M po/POTFILES.in M po/POTFILES.skip M src/Makefile.am M src/emoji-parser.c M src/ibusemoji.c M src/ibusemoji.h A src/ibusemojigen.h M ui/gtk3/Makefile.am M ui/gtk3/emojier.vala commit 61fa8eabd812a75b3cadd883ad4a4e92cf6877d3 Author: fujiwarat Date: 2017-04-25 12:10:00 +0900 ui/gtk3: Get emoji font size from gsettings If Emojier CLI does not specify the font size likes --font 'Noto Emoji Color Regular', get the default size from GSettings. R=Shawn.P.Huang@gmail.com, alexepico@gmail.com Review URL: https://codereview.appspot.com/317540043 M setup/setup.ui M ui/gtk3/emojier.vala M ui/gtk3/emojierapp.vala M ui/gtk3/panel.vala commit aba81ace1487bea57e80406413ae31cbb37ac7d2 Author: fujiwarat Date: 2017-04-20 12:10:47 +0900 ui/gtk3: Fix build failures Add-on fix to 290f786 if /usr/share/vala*/vapi/ibus-emoji-dialog*.vapi does not exist. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/323780043 M ui/gtk3/Makefile.am commit c6cdf21c7364cbb1e848e44cab0bff270e432e82 Author: fujiwarat Date: 2017-04-19 12:16:37 +0900 ui/gtk3: Change modal dialog to focused dialog There are several problems with the current emoji modal dialog. If keyboard is grabbed on the popup window, the focus out/in events cannot be detected so the dialog cannot be closed by the focus changes. If mouse operation is supported on the popup window, need a custom GtkHeaderBar with extended handle.vala but the behavior is unclear. [1] Also current popup window has several extensions for the keyboard grab. If the closed button is needed on the popup window since the focus events cannot be detected, I think there is no merit to use the popup window. Now IBusEmojier simply uses the focused window. [1] https://mail.gnome.org/archives/gtk-app-devel-list/2017-April/msg00017.html R=Shawn.P.Huang@gmail.com, alexepico@gmail.com Review URL: https://codereview.appspot.com/316510043 M ui/gtk3/emojier.vala M ui/gtk3/emojierapp.vala M ui/gtk3/ibusemojidialog.h M ui/gtk3/panel.vala commit 4b8d7baf627fb3fc9e4dde74ba33a867091f95b7 Author: fujiwarat Date: 2017-04-18 11:44:52 +0900 ui/gtk3: Mark LANG and FONT as translatable strings BUG=https://github.com/ibus/ibus/issues/1920 Review URL: https://codereview.appspot.com/322880043 M ui/gtk3/emojierapp.vala commit 290f786b82158e7c087b81946727606cd3424e94 Author: fujiwarat Date: 2017-04-17 16:00:26 +0900 ui/gtk3: Fix build failures ibus-ui-emoijer needs to be built at last in ui/gtk3 Also fixed po/POTFILES.in for `make dist` Now I moved libibusemojidialog.so and IBusEmojiDialog-1.0.[gir|typelib] and ibus-emoji-dialog-1.0.vapi to noinst because now ibus-ui-emojier is available and they are private libraries. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/312610043 M po/POTFILES.in M tools/Makefile.am M ui/gtk3/Makefile.am M ui/gtk3/emojierapp.vala commit da33672bc738889dcd4ebbec51cb3aa67567f70c Author: Peng Wu Date: 2017-04-13 12:40:22 +0900 tools: spawn the process of ibus-ui-emojier BUG= R=Shawn.P.Huang@gmail.com, takao.fujiwara1@gmail.com Review URL: https://codereview.appspot.com/324770043 Patch from Peng Wu . M bindings/vala/config.vapi M tools/Makefile.am M tools/main.vala commit 2f8982a0a4b25f98c969c09b81724e44efc41c27 Author: Peng Wu Date: 2017-04-10 15:57:48 +0900 Make ibus emojier dialog as an unique application Forgot to commit ui/gtk3/emojierapp.vala from the previous commit. BUG= R=takao.fujiwara1@gmail.com Review URL: https://codereview.appspot.com/319650043 Patch from Peng Wu . A ui/gtk3/emojierapp.vala commit 648f58a361ea1407f229ed1682486240cc2e5026 Author: Peng Wu Date: 2017-04-10 14:54:08 +0900 Make ibus emojier dialog as an unique application Because wayland doesn't support clipboard persistence, just hide the dialog; will show the emojier dialog again, when run it again. In next patches, ibus emoji command will just spawn the process of ibus-ui-emojier. BUG= R=takao.fujiwara1@gmail.com Review URL: https://codereview.appspot.com/320450043 Patch from Peng Wu . M po/POTFILES.in M po/POTFILES.skip M ui/gtk3/Makefile.am commit cb0a36c254dc7a96b2a984e715f96cc2ec32e2d5 Author: fujiwarat Date: 2017-04-03 12:24:27 +0900 src: Enable unicode_alt in EmojiOne json file EmojiOne json file has unicode_alt property which includes emoji modifer characters. Review URL: https://codereview.appspot.com/316420043 M src/emoji-parser.c M src/ibusemoji.c M src/ibusemoji.h M ui/gtk3/emojier.vala commit 8b6f9fa531aa9d9b5d6c0184b2294d071f920d7f Author: fujiwarat Date: 2017-03-30 12:08:39 +0900 ui/gtk3: Enable to type multiple code points on Emojier - Can type multiple Unicode characters with digits and Shift-space keys. E.g. "1f468 1f468 1f466" - Always show Unicode points of the selected emoji - Removed a function to commit an emoji by typing a digit char since it conflicts with digit annotations, code points but it had enabled with single digits only so not so useful. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/321820043 M ui/gtk3/emojier.vala commit c3168d4701eb4e89094249abaa4f0f83ab24149b Author: fujiwarat Date: 2017-03-29 13:01:28 +0900 Fix IBusEmojiDialog_1_0_gir_LIBS for --as-needed LDFLAGS The order gets omitted libibus-1.0.la BUG=https://github.com/ibus/ibus/issues/1917 Review URL: https://codereview.appspot.com/324720043 M ui/gtk3/Makefile.am commit 164300758c70fd3a590788e038de31b6c53d458a Author: fujiwarat Date: 2017-03-28 12:15:26 +0900 data: Fix a typo R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/321800043 M data/ibus.schemas.in commit 0efb1c503d5901bbddcdb6fa73007b364ba4368d Author: fujiwarat Date: 2017-03-27 15:12:42 +0900 Move language setting from IBusEmojier to ibus-setup The language setting of emoji annotations now can be saved with ibus-setup. Implement `ibus emoji [--font|--lang|--help]` R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/323720043 M data/ibus.schemas.in M setup/Makefile.am A setup/emojilang.py M setup/main.py M setup/setup.ui M tools/main.vala M ui/gtk3/emojier.vala M ui/gtk3/ibusemojidialog.h M ui/gtk3/panel.vala commit bd7e0ba297f72ae1e2989743f2426c44df29f3ec Author: fujiwarat Date: 2017-03-21 12:56:23 +0900 Make more readable error messages if emoji xml files are missed Also Fix CONFIG_CLEAN_FILES for autoreconf R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/320750043 M configure.ac M src/Makefile.am M src/emoji-parser.c M ui/gtk3/Makefile.am commit 50e344afaffc29e626dbc27747a1aeee6cccafdf Author: fujiwarat Date: 2017-03-17 12:08:50 +0900 ui/gtk3: Enable strcasecmp to match emoji annotation Users can type capital annotations. Also shows emoji annotations in the status bar if the typing unicode point matches a emoji character. Review URL: https://codereview.appspot.com/314640043 M ui/gtk3/emojier.vala commit 58f6140f427815adc947a5bb5c7dea4f3e315ae8 Author: fujiwarat Date: 2017-03-15 11:52:39 +0900 ui/gtk3: Implement shortcut keys on emoji dialog - Implement Ctrl-f, Ctrl-b, Ctrl-n, Ctrl-p, Ctrl-h, Ctrh-e for cursor movements; forward, back, next, previous, head, end on emoji grid. - Implement Ctrl-a and Shift+arrow for text selection on emoji annotation. - Implement Ctrl-u to delete text on emoji annotation. - Implement to delete a selected text on emoji annotation. - Change to show page indices to candidate indices on emoji. - Sorted emoji categories. - Added timeout of m_enter_notify_enable = false to bring back mouse. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/315700043 M ui/gtk3/emojier.vala commit ab6c38c192cdf22356cbf254b98fb5b3d9d9a680 Author: fujiwarat Date: 2017-03-15 11:48:24 +0900 client/x11: Add XSetIOErrorHandler() for GNOME3 desktop When log into GNOME3 desktop immediately after the system is booted, ibus-daemon is sometimes alive but ibus-x11 is dead after log out the session. Because gdk_x_io_error() is called as the callback of XSetIOErrorHandler() in gtk/gdk/x11/gdkmain-x11.c in ibus-x11. Now I assume the callback is called in logout. BUG=https://github.com/ibus/ibus/issues/1907 Review URL: https://codereview.appspot.com/319490043 M client/x11/main.c commit fbe3de1789c73a8a175a451b2a6b967f5d3c6514 Author: fujiwarat Date: 2017-03-13 12:08:21 +0900 src: Update emoji-parser to treat tts as emoji description unicode annotation xml files have a 'tts' attribute and seem it is used as the emoji descriptions instead of emoji annotations. This can show the translated descriptions. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/319480043 M src/emoji-parser.c M src/ibusemoji.c M src/ibusemoji.h M ui/gtk3/emojier.vala commit c580845167b54ccab76d8b72bdc797ef8d64d554 Author: fujiwarat Date: 2017-03-13 11:58:06 +0900 ui/gtk3: Fix emoji text entry cusor position Focus on emoji text entry by default Remove internal text buffer and use Gtk.Entry buffer instead. Implement cusor left, right, home, end on emoji annotation preedit. Review URL: https://codereview.appspot.com/313710043 M ui/gtk3/emojier.vala commit 31ed31e5303c3946f53b035a63d76f5c1e3cd84a Author: fujiwarat Date: 2017-03-13 11:43:09 +0900 src: Fix ibus_emoji_dict_load() R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/320350043 M configure.ac M src/emoji-parser.c M src/ibusemoji.c commit 9dbea347050ae2ad79d1b53f2ad62a7a2cafadc6 Author: fujiwarat Date: 2017-03-09 12:45:20 +0900 ui/gtk3: Get emoji colors from the theme Get selected and normal text color from the theme. Implement to activate an emoji with mouse motion. Create back button on emoji language chooser dialog. Set row_homogeneous on emoji table. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/319470043 M ui/gtk3/Makefile.am M ui/gtk3/candidatearea.vala M ui/gtk3/emojier.vala commit 7e477d5e0ffe19b6c52558c5b37fdd9cb82c097a Author: fujiwarat Date: 2017-03-09 11:31:21 +0900 tools: Fix `ibus emoji` SEGV when language is changed. BUG=rhbz#1430290 Review URL: https://codereview.appspot.com/317410043 M tools/main.vala commit 4e02857ccb41e8e42310e2b1372cdc9248da667c Author: fujiwarat Date: 2017-03-08 11:57:27 +0900 bus: Add error messages for g_dbus_server_new_sync BUG=https://github.com/ibus/ibus/issues/1901 Review URL: https://codereview.appspot.com/319460043 M bus/server.c commit 641c3cb5dac87fef392e926b35e1b660c0d34c15 Author: fujiwarat Date: 2017-03-07 00:56:19 +0900 Fix a build failure with --disable-emoji-dict BUG=https://github.com/ibus/ibus/issues/1908 Review URL: https://codereview.appspot.com/313690043 M tools/Makefile.am M tools/main.vala commit f7f3bc82e480b0bd03ac42ac63baa8748053a819 Author: fujiwarat Date: 2017-03-06 18:31:08 +0900 Release 1.5.15 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/319420043 M configure.ac commit c37989acffed8dc66a95deb8b113ac7a1d84e6ee Author: fujiwarat Date: 2017-03-06 18:14:26 +0900 Add 'ibus emoji' command for no ibus panel desktops This utility can be used on GNOME desktop which shows a gnome-shell icon instead of running ibus-ui-gtk3. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/318640043 M Makefile.am M tools/Makefile.am M tools/main.vala A ui/gtk3/IBusEmojiDialog-1.0.metadata M ui/gtk3/Makefile.am M ui/gtk3/emojier.vala A ui/gtk3/ibus-emoji-dialog-1.0.deps A ui/gtk3/ibusemojidialog.h M ui/gtk3/panel.vala commit 13bf5037c43c6762c29de2038b6abe28d27c5103 Author: fujiwarat Date: 2017-03-06 14:05:24 +0900 setup: Set emoji preview text on font setting R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/317400043 M setup/main.py commit 02d99aa00cb4a26a2cfb6098ea27e763e9bb2daa Author: fujiwarat Date: 2017-03-05 18:11:28 +0900 Move emoji implementation from IBusEngineSimple to IBusPanel Currently emoji shortcut key is not customizable and there is no menu item to access emoji typing without shortcut key. Once implementation is moved to IBusPanel, the emoji typing is now avaible for every engine without modifying its codes. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/317370043 M bus/inputcontext.c M bus/inputcontext.h M bus/panelproxy.c M configure.ac M data/ibus.schemas.in M po/POTFILES.in M po/POTFILES.skip M setup/main.py M setup/setup.ui M src/Makefile.am M src/emoji-parser.c M src/ibus.h A src/ibusemoji.c A src/ibusemoji.h M src/ibusenginesimple.c M src/ibuspanelservice.c M src/ibuspanelservice.h M src/ibusutil.c M src/ibusutil.h M ui/gtk3/Makefile.am A ui/gtk3/emojier.vala M ui/gtk3/keybindingmanager.vala M ui/gtk3/panel.vala commit 0a244817338c943ffe03cd5b6ecf094ffd156f80 Author: Eric R. Schulz Date: 2017-03-01 13:25:56 +0900 Fix memory leak in IBus.Bus.get_global_engine() Fix the memory leak by setting the transfer mode annotation to full. BUG=https://github.com/ibus/ibus/pull/1899 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/312520043 Patch from Eric R. Schulz . M src/ibusbus.h commit 993289f4667bed50e8d552870df6f05f1eaf5e35 Author: Marc-Antoine Perennou Date: 2017-02-27 14:29:48 +0900 bus: fix service file when --disable-xim is specified BUG=https://github.com/ibus/ibus/pull/1897 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/319390043 Patch from Marc-Antoine Perennou . M bus/Makefile.am M bus/org.freedesktop.IBus.service.in M configure.ac commit fcb90f7a96d7b1b6be5b7e274a0ebe3058207b50 Author: fujiwarat Date: 2017-02-20 12:00:14 +0900 ui/gtk3: Fix typo in switcher.get_input_context_path() R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/318590043 M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit b498ff571049bec2b3f3bf6f1747f0af18ff4764 Author: fujiwarat Date: 2017-02-13 12:19:45 +0900 ui/gtk3: Refactor to set panel icon Fix panel icon with icon_prop_key when use_global_engine is false. Also enhance to set engines when type Super+space quickly. R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/314450043 M ui/gtk3/panel.vala M ui/gtk3/switcher.vala commit b8f55532704e256832b50e96efa5821b960a20a1 Author: fujiwarat Date: 2017-02-06 13:36:50 +0900 ui/gtk3: Free normal_color in CandidateArea R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/314410043 M ui/gtk3/candidatearea.vala commit bdc83bcbe3c9f07a267499c297db12c68af82fa2 Author: fujiwarat Date: 2017-01-27 14:42:33 +0900 ui/gtk3: Refactor color of a selected candidate on lookup window Recenly 'background-color' CSS property does not indicate the actual background color in GTK 3.22 and IBus uses '-gtk-secondary-caret-color' CSS property instead. But I found every themes do not have '-gtk-secondary-caret-color' CSS property even if the latest GTK is used. Some themes, e.g. distro themes or third party themes, uses 'background-color' CSS property for the background color of the selected text. This patch compares the colors of the normal 'background-color' and the selected 'background-color' and in case they are different, uses the selected 'background-color', otherwise the selected '-gtk-secondary-caret-color'. Also now IBus checks the colors of a dummy GtkTextView rather than ones of GtkLabel on the lookup window because some themes do not configure the selected bacground color in GtkLabel. BUG=https://github.com/ibus/ibus/issues/1871 Review URL: https://codereview.appspot.com/314280043 M ui/gtk3/candidatearea.vala commit 371535b981e5f99deeab9437e49eb7209b1a561a Author: fujiwarat Date: 2017-01-20 18:51:42 +0900 util/IMdkit: Fix the range of memset() in i18nIc.c BUG=https://github.com/ibus/ibus/issues/1891 Review URL: https://codereview.appspot.com/320010043 M util/IMdkit/i18nIc.c commit aacf5adbba9b9b34a1ec07005e670d209513fb5b Author: fujiwarat Date: 2017-01-11 12:16:59 +0900 ui/gtk3: Fix panel CSS format for GTK 3.22 GtkCssProvider no longer works with the Pango format in GTK 3.22 and need to use the CSS format. BUG=https://github.com/ibus/ibus/issues/1879 Review URL: https://codereview.appspot.com/319960043 M ui/gtk3/panel.vala commit f80dcc978fdc9a3d7853434e86f4ee02c2a92b33 Author: fujiwarat Date: 2017-01-11 12:11:22 +0900 src: Avoid emoji typing during Unicode typing If 'sk' layout is used, digit keys need Shift key and Unicode typing of U+1AE requires Shift key after Ctrl-Shift-u. This patch does not enable the emoji typing with Ctrl-Shift-e during Unicode typing. BUG=rhbz#1403985 Review URL: https://codereview.appspot.com/311510043 M src/ibusenginesimple.c commit 52b7272d97a881a8a6c872e28c1970ec47cb4337 Author: Peng Wu Date: 2016-10-12 15:17:24 +0900 ui/gtk3: support scroll event in candidates panel When press scroll button of mouse on candidates, automatically cursor up/cursor down. BUG= R=takao.fujiwara1@gmail.com Review URL: https://codereview.appspot.com/302700043 Patch from Peng Wu . M ui/gtk3/candidatearea.vala M ui/gtk3/panel.vala commit faf5e3c56d746d2f171618d552cff9149bb1d952 Author: fujiwarat Date: 2016-10-06 15:37:25 +0900 src: Enable PageUp, PageDown, CandidateClick buttons with emoji lookup BUG=rhbz#1380691 Review URL: https://codereview.appspot.com/312760043 M src/ibusenginesimple.c commit 4d86e59d0245df6d3a6aa1a32cdf7702b6dc7f0d Author: fujiwarat Date: 2016-10-06 15:35:03 +0900 src: Enable to type digit to commit emoji on lookup window Enables to commit an emoji on the lookup window by a digit key. Before this patch, Ctrl-Shift-U, "11" shows emojis of 11 clock. After this patch, Ctrl-Shift-U, "11" commits an emoji of 1 clock. Probably Ctrl-Shift-U, "clock" can be a workaround. BUG=rhbz#1380690 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/309640043 M src/ibusenginesimple.c commit e795eda1a3b054e6fdc921bfe04c83733761905f Author: fujiwarat Date: 2016-10-06 15:28:24 +0900 src: Hide lookup table if emoji annotation does not hit If emoji annotation hits "aaa" but not "aaab", hide the lookup window with "aaab". Also hide the lookup window with Escape key. BUG=rhbz#1380675 Review URL: https://codereview.appspot.com/307400043 M src/ibusenginesimple.c commit af66ace771fc16a23e7a5841d2f0bd79789e009d Author: fujiwarat Date: 2016-09-14 13:34:44 +0900 Fix warning messages during panel resizes Move gtk_window_resize(). Seems calling gtk_window_resize() is not good during gtk_widget_get_preferred_width/height() is called. Review URL: https://codereview.appspot.com/308320043 M ui/gtk3/candidatepanel.vala M ui/gtk3/propertypanel.vala commit 708e5e51da696f42f34d2921c83455f1824ea40f Author: fujiwarat Date: 2016-09-09 17:48:20 +0900 Update translations Update po/LINGUAS po/de.po po/es.po po/fr.po po/mn.po po/pl.po po/zh_HK.po po/zh_TW.po R=shawn.p.huang@gmail.com Review URL: https://codereview.appspot.com/302610043 M po/LINGUAS A po/cs.po M po/de.po M po/es.po M po/fr.po A po/mn.po M po/pl.po M po/pt_BR.po M po/zh_HK.po M po/zh_TW.po commit ceb6a9b47deaa898d8151606831669a7446ad382 Author: fujiwarat Date: 2016-09-06 13:05:35 +0900 ui/gtk3: Fix radio buttons on Property Panel Use gtk_container_remove() instead g_object_unref() because if an widget has a parent, it's not destroyed and the signal is not sent to the parent since the parent was destroyed. R=shawn.p.huang@gmail.com Review URL: https://codereview.appspot.com/302650043 M ui/gtk3/propertypanel.vala commit 997e5cb1b100c6af267b8121445db1db7e580d5f Author: Eric R. Schulz Date: 2016-08-18 11:17:11 +0900 Fix GVariant leaks The expectation is that g_dbus_message_set_body() takes ownership of the GVariant, but this does not happen if the BusInputContext connection is NULL. Call g_variant_unref() in that case to free the memory. Alternatively, a GVariantBuilder could be used. BUG=https://github.com/ibus/ibus/pull/1872 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/307050043 Patch from Eric R. Schulz . M bus/inputcontext.c commit c3ceed40f644f9fb0517a27592b6fd022d518e34 Author: fujiwarat Date: 2016-08-05 12:36:16 +0900 Release 1.5.14 R=shawn.p.huang@gmail.com Review URL: https://codereview.appspot.com/306860043 M configure.ac commit 239d3630abcaf624e3bacc2c5d1075a77a24a4b1 Author: fujiwarat Date: 2016-08-04 11:28:32 +0900 Replace deprecated GSimpleAsyncResult with GTask since GLib 2.46 Review URL: https://codereview.appspot.com/304310043 M bus/engineproxy.c M bus/inputcontext.c M src/ibusbus.c commit 028624f0bb100ab2689ef059b3afd45ed89ca3f1 Author: fujiwarat Date: 2016-08-02 11:54:07 +0900 Fix Croatian language code in simple.xml R=shawn.p.huang@gmail.com Review URL: https://codereview.appspot.com/302320044 M engine/simple.xml.in commit eee7a132d686cb8d9c36c632523649745487b503 Author: fujiwarat Date: 2016-07-27 11:25:32 +0900 Fix make dist 'make dist' has different directories between builddir and srcdir. src/tests/runtest gets the builddir of ibus-memconf from the srcdir of memconf.xml and the builddir of ibus-engine-simple from the srcdir of simple.xml. bindings/pygobject/test-override-ibus.py runs IBus.Keymap.new() and gets the path of keymaps from IBUS_KEYMAP_PATH variable. bindings/vala/ibus-1.0.vapi needs to be cleaned by 'make distclean'. R=shawn.p.huang@gmail.com Review URL: https://codereview.appspot.com/305950043 M Makefile.am M bindings/pygobject/Makefile.am M bindings/vala/Makefile.am M src/ibuskeymap.c M src/tests/runtest commit 20068d9d0731b580d6d8218b97c482c0558149dd Author: fujiwarat Date: 2016-07-25 11:42:37 +0900 tests/ibus-engine-switch: Don't try to remove non-existing GSource ibus-engine-switch schedules an idle doing an engine switch, and also schedules a timeout after 1 microsecond which exits the main loop. Both of these callbacks will return FALSE, which detaches the associated GSource from the mainloop and destroys it. As the only way to exit the mainloop is when the timeout callback runs, we should not try to run g_source_remove(timeout_id) as it will already be gone, and this causes a warning. This commit reorders a bit to make the ordering between the idle and timeout more obvious, and it gets rid of the calls to g_source_remove() as they are needed. BUG=https://github.com/ibus/ibus/issues/1868 Review URL: https://codereview.appspot.com/103100044 M bus/Makefile.am M src/tests/ibus-engine-switch.c M src/tests/runtest commit f88c48750538eaaf7c7b182ba3763b45c2745074 Author: fujiwarat Date: 2016-07-20 11:43:49 +0900 Fix typo in configure.ac R=shawn.p.huang@gmail.com Review URL: https://codereview.appspot.com/303110043 M configure.ac commit 0ee1896a2b3e75494f8f9fd9d04c27436f0877b8 Author: fujiwarat Date: 2016-07-07 12:47:34 +0900 engine: Use annotations/en.xml from unocode.org but not emoji-list.html Downloading emoji-list would cause a different build by build site. Now save annotations/en.xml from unicode.org and get emoji.json from Emoji One. en.xml is used for Unicode annotations and emoji.json is used for aliases_ascii, e.g. ":)", and category, e.g. "people". BUG=https://github.com/ibus/ibus/issues/1865 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/299530044 A COPYING.unicode M Makefile.am M configure.ac M data/Makefile.am A data/annotations/Makefile.am A data/annotations/en.xml M ibus.spec.in M src/Makefile.am M src/emoji-parser.c commit 0ed644cd2b6c1d15bdba0d1c6d45d162b9b34806 Author: fujiwarat Date: 2016-06-23 11:52:48 +0900 engine: Add emoji-list.html Now we copied http://unicode.org/emoji/charts/emoji-list.html to http://ibus.github.io/files/ibus/emoji-list.html and download the file in the build time. We don't save emoji-list.html in the tarball because the file size is more than 5MB. We always don't get the latest emoji-list.html to avoid the build error. BUG=https://github.com/ibus/ibus/pull/1864 R=shawn.p.huang@gmail.com Review URL: https://codereview.appspot.com/298580043 M src/Makefile.am commit 160d3c975af91eea6b8271b757be769b8ceef98d Author: fujiwarat Date: 2016-06-21 18:10:21 +0900 engine: Implement Emoji typing with XKB engines Now Ctrl+Shift+e can convert an Emoji annotation to the Emoji characters likes Ctrl+Shift+u. The annotations are described as "Keywords" in the Unicode Emoji Data: http://www.unicode.org/emoji/charts/emoji-list.html 'emoji-parser' compiles 'emoji-list.html' and generates 'emoji.dict' Review URL: https://codereview.appspot.com/295610043 M configure.ac M src/Makefile.am A src/emoji-parser.c M src/ibusenginesimple.c M src/ibusutil.c M src/ibusutil.h commit a598ae29223d1ca25e76bf7d7de9703f63ea337e Author: fujiwarat Date: 2016-06-03 19:44:11 +0900 ui/gtk3: Fix panel CSS format for GTK 3.20 CSS node names have been changed since GTK 3.20 and the font size and widget color no longer work with the previous node names. BUG=https://github.com/ibus/ibus/issues/1856 Review URL: https://codereview.appspot.com/297380043 M ui/gtk3/candidatearea.vala M ui/gtk3/handle.vala M ui/gtk3/panel.vala commit 3ef21fef0135f7b4fe9611d201f15611734f6c51 Author: fujiwarat Date: 2016-06-03 11:52:29 +0900 client/gtk2: Fix SEGV with Wayland display Delete gdk_display_get_name() in GTK clients because ibus-daemon does not use gdk_display_get_name(). GdkX11Dislay and GdkX11Window does not work with Wayland. BUG=https://github.com/ibus/ibus/issues/1859 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/301760043 M client/gtk2/ibusimcontext.c M setup/main.py commit a186059edc48b22e4adfc1878bb5fd0ee60d4fe0 Author: fujiwarat Date: 2016-05-26 12:22:53 +0900 conf/gconf: Fix SEGV in ibus_config_gconf_get_values BUG=https://github.com/ibus/ibus/issues/1858 R=shawn.p.huang@gmail.com Review URL: https://codereview.appspot.com/300810043 M conf/gconf/config.c commit b210c0d8c601f4b458b4f06937303e9479466fec Author: Marc-Antoine Perennou Date: 2016-05-26 12:17:50 +0900 configure: don't hardcode pkg-config BUG=https://github.com/ibus/ibus/pull/1860 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/299150043 Patch from Marc-Antoine Perennou . M configure.ac commit 84c18f1d382548c52138822a11473d2dac79e485 Author: Rui Matos Date: 2016-05-25 11:21:09 +0900 Install a DBus service file With the transition to user scoped DBus sessions (vs. login sessions) there's a need to start ibus-daemon via DBus activation so that the process gets properly tracked and disposed of when the login session ends. Otherwise the ibus-daemon process lingers on and keeps the whole login session up. We already connect and own a well known name on DBus. The remaining missing piece is the DBus service file which we introduce here. BUG=https://github.com/ibus/ibus/pull/1853 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/295340043 Patch from Rui Matos . M bus/Makefile.am A bus/org.freedesktop.IBus.service.in commit 0432aa66b8728bc266da3c2cca84587bc44b3557 Author: Matthias Clasen Date: 2016-03-08 11:16:24 +0900 Don't warn if DISPLAY is not set This is normal under Wayland, and not worth warning about. The warnings disrupt unit tests in GNOME continuous, which treat warnings as fatal. BUG=https://github.com/ibus/ibus/pull/1844 R=shawn.p.huang@gmail.com Review URL: https://codereview.appspot.com/289430043 Patch from Matthias Clasen . M src/ibusshare.c commit 0229c57773144f6f78ed568a0afc1999679c7d51 Author: fujiwarat Date: 2016-02-22 17:38:30 +0900 Release 1.5.13 Review URL: https://codereview.appspot.com/290840043 M configure.ac commit b51c6200686d5494f317f8675763bad5cdd442b2 Author: Daiki Ueno Date: 2016-02-17 16:29:03 +0900 Add SetCursorLocationRelative D-Bus method We have SetCursorLocation D-Bus method which takes the absolute coordinates of the screen, while on Wayland the coordinates are relative to the current input window and there is no way to calculate the absolute coordinates. That makes it impossible for the panel to position the lookup table correctly. This patch adds a new D-Bus method, SetCursorLocationRelative, which takes the relative coordinates, so that the panel implementation (typically the same process of Wayland compositor) can use that information. The counterpart of this changes is at: https://bugzilla.gnome.org/show_bug.cgi?id=753476 Unlike SetCursorLocation, SetCursorLocationRelative is not delivered to engines, since it is not very useful for the engines without knowing the current input window (which is also not accessible from a different process on Wayland). Co-authored-by: Rui Matos BUG= R=takao.fujiwara1@gmail.com Review URL: https://codereview.appspot.com/290780043 . M bus/inputcontext.c M bus/panelproxy.c M bus/panelproxy.h M client/gtk2/ibusimcontext.c M src/ibusinputcontext.c M src/ibusinputcontext.h M src/ibuspanelservice.c M src/ibuspanelservice.h commit 97e28cc04b4601295b22a0aa8e9e21ed4e0758a1 Author: fujiwarat Date: 2016-02-10 11:41:34 +0900 src: Use cache file for compose table for launching time Save the cache files of compose files under $HOME/.cache/ibus/compose for the performance. Load a compose file with the following order: 1. $HOME/.config/ibus/Compose 2. $HOME/.config/gtk-3.0/Compose 3. $HOME/.XCompose 4. /usr/share/X11/locale/$locale/Compose Check the system compose files of "el_GR", "fi_FI", "pt_BR" only for the performance because other compose files just load "en_US" compose file. BUG=https://bugzilla.gnome.org/show_bug.cgi?id=721120 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/286040043 M configure.ac M src/Makefile.am M src/ibuscomposetable.c M src/ibuscomposetable.h M src/ibusenginesimple.c commit 706ba01504a0c48391360a236d7c7aa8e0057753 Author: fujiwarat Date: 2016-02-01 11:26:23 +0900 src: Refactor ibuscomposetable.c Save raw integers of Unicode instead of code strings. Use g_warning() instead of g_set_error(). BUG=https://bugzilla.gnome.org/show_bug.cgi?id=721120 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/282390044 M src/ibuscomposetable.c commit d5bf50cbaf8901c4d32c212c5fea31419e1b4fb7 Author: fujiwarat Date: 2016-01-29 12:44:49 +0900 src: Change guint to guint16 in ibusenginesimple.c IBusComposeTable and IBusComposeTableCompact use guint16 for the data. BUG=https://bugzilla.gnome.org/show_bug.cgi?id=721120 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/282390043 M src/ibusenginesimple.c M src/ibusenginesimpleprivate.h commit 7241f66b05344b0b7caf2f83a23aa248233a955a Author: fujiwarat Date: 2016-01-29 11:54:42 +0900 src: Unify duplicated check_compact_table() and check_algorithmically() Clean up the duplicated APIs, check_compact_table() and check_algorithmically(), in ibuscomposetable.c and ibusenginesimple.c R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/286930043 M src/Makefile.am M src/ibuscomposetable.c M src/ibuscomposetable.h M src/ibusenginesimple.c M src/ibusenginesimple.h A src/ibusenginesimpleprivate.h commit 4b87be94e4e515c0437ec3f6a7f0dc93f2e5a3fc Author: fujiwarat Date: 2016-01-20 13:30:07 +0900 Release 1.5.12 (#2) Fix a build failure with make check. Review URL: https://codereview.appspot.com/285910043 M Makefile.am commit 350140e2db5af88c05a4de8a13ce0589c057424e Author: fujiwarat Date: 2016-01-19 13:24:51 +0900 Release 1.5.12 Review URL: https://codereview.appspot.com/285130043 M Makefile.am M configure.ac commit 8bc47907c3292c1f4ec6b8f101ea936c928c877a Author: fujiwarat Date: 2016-01-19 13:15:37 +0900 Update translations Update bn.po ca.po zh_CN.po zh_HK.po R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/272450043 M po/bn.po M po/ca.po M po/zh_CN.po M po/zh_HK.po commit 3af58fae1710ed3baf800c59da1ab918089c2a9b Author: fujiwarat Date: 2016-01-15 11:23:56 +0900 engine: Change language code from ISO 639-2 to ISO 639-1 in simple.xml BUG=https://github.com/ibus/ibus/issues/1834 Review URL: https://codereview.appspot.com/283040043 M engine/Makefile.am A engine/iso639converter.py M engine/simple.xml.in M ui/gtk3/switcher.vala commit 49f3a73bd658c39311afcbf2dcc0acf9faa59ea9 Author: fujiwarat Date: 2016-01-14 11:36:37 +0900 setup: Fix PyGIWarning: GdkX11 was imported without specifying a version R=shawn.p.huang@gmail.com Review URL: https://codereview.appspot.com/285830043 M setup/main.py commit 3ebeb6540ddfc75aeafdf87ccd6e4ae986e3e78d Author: fujiwarat Date: 2015-11-04 11:21:46 +0900 panel: Fix the default position of property panel with dual monitors "_NET_WORKAREA" Atom returns a big screen size including every monitors. Use Gdk.Screen.get_monitor_workarea() instead. Review URL: https://codereview.appspot.com/277760043 M ui/gtk3/propertypanel.vala commit 4a8024b0a3e5670dc5ad88a26b90b0a9801efcca Author: Alexey Kotlyarov Date: 2015-11-04 11:18:50 +0900 panel: Constrain the candidate area to the current monitor bounds If the second monitor has the different size, lookup window on the second monitor could not get the right size. BUG=https://github.com/ibus/ibus/issues/1594 Review URL: https://codereview.appspot.com/267710043 Patch from Alexey Kotlyarov . M ui/gtk2/candidatepanel.py M ui/gtk3/candidatepanel.vala commit 1d678673e18e132ed53df32502b779b0a56314d5 Author: fujiwarat Date: 2015-09-08 13:01:37 +0900 ibus-daemon update user cache when user observed path is updated After the system registry cache is generated by root, the cache remembers the observed path exists in /root == '~' but if a user updates the user observed path, the observed path exists in '~' and ibus-daemon cannot get the updated mtime because the cache refers the root directory but not the user directory. The patch tries to save '~' instead of the actual home dir in the cache. BUG=https://github.com/ibus/ibus/issues/1815 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/261040043 M configure.ac M src/ibusobservedpath.c M src/ibusregistry.c commit c0ced65ea1298e860c571cd9151d81e620834132 Author: Marc-Antoine Perennou Date: 2015-09-01 11:20:16 +0900 check for x11 for the ui too if built with --enable-ui --disable-xim it currently fails because X11_LIBS is empty BUG=https://github.com/ibus/ibus/pull/1812 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/264020043 Patch from Marc-Antoine Perennou . M configure.ac commit 173af53099633fa18713ac45f9f64b50607f83ff Author: fujiwarat Date: 2015-08-14 11:24:15 +0900 Add terminator in NO_SNOOPER_APPS terminator connects "key-press-event" signal in VTE and receives the KeyPress events and copies the events to the multiple terminals. If IBus uses snooper and IBusIMContext returns true, terminator cannot receive the IME events because VTE does not export IME "commit" signal. After move terminator in NO_SNOOPER_APPS, terminator can receive the KeyPress events from "key-press-event" signal before IBusIMContext key_press_event() class method receives the events. BUG=https://github.com/ibus/ibus/issues/1802 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/260120043 M configure.ac commit 8954a6f5ae4dd73e8189f5d52a7a378e8698c988 Author: Hodong Kim Date: 2015-07-21 11:39:25 +0900 client/x11: Remove an unused variable BUG=https://github.com/ibus/ibus/pull/1808 R=Shawn.P.Huang@gmail.com Review URL: https://codereview.appspot.com/256010044 Patch from Hodong Kim . M client/x11/main.c commit 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 R051 src/gencomposetable.c 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: 175df226 4d7f4ad5 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 R080 conf/dconf/dconf.xml.in.in conf/dconf/dconf.xml.in M conf/gconf/Makefile.am R080 conf/gconf/gconf.xml.in.in conf/gconf/gconf.xml.in M conf/memconf/Makefile.am R080 conf/memconf/memconf.xml.in.in conf/memconf/memconf.xml.in M configure.ac M engine/Makefile.am M engine/gensimple.py R099 engine/simple.xml.in.in engine/simple.xml.in M ui/gtk2/Makefile.am R090 ui/gtk2/gtkpanel.xml.in.in ui/gtk2/gtkpanel.xml.in M ui/gtk3/Makefile.am R080 ui/gtk3/gtkpanel.xml.in.in ui/gtk3/gtkpanel.xml.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 R091 conf/dconf/config.h conf/dconf/config-private.h M conf/dconf/config.c 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: 1b5b4067 7975fa01 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 R073 xinput-ibus.in xinput-ibus 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 R100 dconf/Makefile.am conf/dconf/Makefile.am R100 dconf/config.c conf/dconf/config.c R100 dconf/config.h conf/dconf/config.h R100 dconf/dconf.xml.in.in conf/dconf/dconf.xml.in.in R100 dconf/main.c conf/dconf/main.c R100 gconf/Makefile.am conf/gconf/Makefile.am R100 gconf/config.c conf/gconf/config.c R100 gconf/config.h conf/gconf/config.h R100 gconf/gconf.xml.in.in conf/gconf/gconf.xml.in.in R100 gconf/main.c conf/gconf/main.c R100 memconf/Makefile.am conf/memconf/Makefile.am R100 memconf/config.c conf/memconf/config.c R100 memconf/config.h conf/memconf/config.h R100 memconf/main.c conf/memconf/main.c R100 memconf/memconf.xml.in.in conf/memconf/memconf.xml.in.in M configure.ac 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 R100 ui/gtk/Makefile.am ui/gtk2/Makefile.am R100 ui/gtk/candidatepanel.py ui/gtk2/candidatepanel.py R100 ui/gtk/engineabout.py ui/gtk2/engineabout.py R100 ui/gtk/gtkpanel.xml.in.in ui/gtk2/gtkpanel.xml.in.in R100 ui/gtk/handle.py ui/gtk2/handle.py R100 ui/gtk/i18n.py ui/gtk2/i18n.py R100 ui/gtk/ibus-ui-gtk.in ui/gtk2/ibus-ui-gtk.in R100 ui/gtk/icon.py ui/gtk2/icon.py R100 ui/gtk/languagebar.py ui/gtk2/languagebar.py R100 ui/gtk/main.py ui/gtk2/main.py R100 ui/gtk/menu.py ui/gtk2/menu.py R100 ui/gtk/notifications.py ui/gtk2/notifications.py R100 ui/gtk/panel.py ui/gtk2/panel.py R100 ui/gtk/propitem.py ui/gtk2/propitem.py R100 ui/gtk/toolitem.py 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: 52425daa d0591328 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 R100 debian/ibus-gtk.install 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 R100 debian/libibus1.install debian/libibus-1.0-0.install R099 debian/libibus1.symbols debian/libibus-1.0-0.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 R050 memconf/main.cc memconf/main.c 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 R097 bindings/vala/test/test.vala bindings/vala/test/enchant.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 R100 bindings/vala/ibus-2.0.vapi bindings/vala/ibus-1.0.vapi R100 bindings/vala/ibus-2.0/ibus-2.0-custom.vala bindings/vala/ibus-1.0/ibus-1.0-custom.vala R100 bindings/vala/ibus-2.0/ibus-2.0.excludes bindings/vala/ibus-1.0/ibus-1.0.excludes R100 bindings/vala/ibus-2.0/ibus-2.0.files bindings/vala/ibus-1.0/ibus-1.0.files R100 bindings/vala/ibus-2.0/ibus-2.0.gi bindings/vala/ibus-1.0/ibus-1.0.gi R098 bindings/vala/ibus-2.0/ibus-2.0.metadata bindings/vala/ibus-1.0/ibus-1.0.metadata R100 bindings/vala/ibus-2.0/ibus-2.0.namespace bindings/vala/ibus-1.0/ibus-1.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 R100 debian/libibus2.install debian/libibus1.install A debian/libibus1.symbols D debian/libibus2.symbols M debian/rules M docs/reference/ibus/Makefile.am M gconf/Makefile.am R064 ibus-2.0.pc.in ibus-1.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/ibus-1.0-custom.vala R100 bindings/vala/ibus-1.0.vapi bindings/vala/ibus-2.0.vapi A bindings/vala/ibus-2.0/ibus-2.0-custom.vala R100 bindings/vala/ibus-1.0/ibus-1.0.excludes bindings/vala/ibus-2.0/ibus-2.0.excludes R100 bindings/vala/ibus-1.0/ibus-1.0.files bindings/vala/ibus-2.0/ibus-2.0.files R100 bindings/vala/ibus-1.0/ibus-1.0.gi bindings/vala/ibus-2.0/ibus-2.0.gi R100 bindings/vala/ibus-1.0/ibus-1.0.metadata bindings/vala/ibus-2.0/ibus-2.0.metadata R100 bindings/vala/ibus-1.0/ibus-1.0.namespace 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 R060 ibus-1.0.pc.in 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-keynames.c D src/test-lookuptable.c D src/test-text.c A src/tests/Makefile.am A src/tests/ibus-bus.c A src/tests/ibus-configservice.c R100 src/test-engine.c src/tests/ibus-engine.c A src/tests/ibus-factory.c R098 src/test-global-engine.c src/tests/ibus-global-engine.c R100 src/test-keymap.c src/tests/ibus-keymap.c A src/tests/ibus-keynames.c R100 src/test-proxy.c src/tests/ibus-proxy.c A src/tests/ibus-serializable.c R100 src/test-server.c 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: 2d6eeb67 683f8d03 Author: Peng Huang Date: 2010-06-05 09:41:30 +0800 Merge branch 'async_process_key_event' commit 2d6eeb67267c65a9bc7c537d80a6970121af714a Merge: 3f640787 9dabf25c 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: 42b31b80 978325de 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.symbols R100 debian/libibus1.install 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 R098 docs/reference/ibus/ibus-docs.sgml 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: 1a60516d 80c35b5f 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: 39782a6a 2b25925d 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: 6af061df 1d01af4b 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: 80077fe1 54547855 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: b873dec8 80f5d321 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: 7c842d9a 59b2900f 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 R070 xinput-ibus 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: 7645a2f4 abac005c 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 R100 doc/specification 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: 7a9f000a c57f7dd9 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: 4b2c6ed7 d494b47e 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. R100 data/icons/16/ibus-off.png data/icons/16/ibus-keyboard.png R100 data/icons/22/ibus-off.png data/icons/22/ibus-keyboard.png R100 data/icons/24/ibus-off.png data/icons/24/ibus-keyboard.png R100 data/icons/32/ibus-off.png data/icons/32/ibus-keyboard.png R100 data/icons/48/ibus-off.png data/icons/48/ibus-keyboard.png M data/icons/Makefile.am D data/icons/ibus-off.svg R100 data/icons/ibus-engine.svg data/icons/scalable/ibus-engine.svg R100 data/icons/scalable/ibus-off.svg data/icons/scalable/ibus-keyboard.svg R100 data/icons/ibus-setup.svg data/icons/scalable/ibus-setup.svg R100 data/icons/ibus.svg 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 R100 data/icons/ibus-keyboard.svg 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 R100 data/icons/engine-default.svg 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: c06938c8 cca94cfa 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: 306f615f 708737a8 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: cf56e576 2ec3479e 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: 3b3f6ac8 88257549 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: a4f5ccb5 912f742d 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: 9149a03e 584c5c27 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: 34db2e09 88e85a79 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 R100 po/te_IN.po po/te.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 R100 po/gu_IN.po po/gu.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 R100 bus/ibus.desktop bus/ibus.desktop.in M configure.ac M data/Makefile.am R066 data/ibus.schemas data/ibus.schemas.in M setup/Makefile.am R100 setup/ibus-setup.desktop 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 R100 setup/ibus.schemas data/ibus.schemas R100 icons/Makefile.am data/icons/Makefile.am R100 icons/engine-default.svg data/icons/engine-default.svg R100 icons/ibus-help.png data/icons/ibus-help.png R100 icons/ibus-keyboard.svg data/icons/ibus-keyboard.svg R100 icons/ibus-locale.svg data/icons/ibus-locale.svg R100 icons/ibus-setup.svg data/icons/ibus-setup.svg R100 icons/ibus-zh.svg data/icons/ibus-zh.svg R100 icons/ibus.svg data/icons/ibus.svg 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 R062 setup/ibus-setup.desktop.in setup/ibus-setup.desktop 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 R090 gconf/gconf.xml.in gconf/gconf.xml.in.in M ui/gtk/Makefile.am R089 ui/gtk/gtkpanel.xml.in 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: aaa9a8ce a07a51ff 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 R098 lib/Makefile.am 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/ibusdaemon.py D daemon/inputcontext.py D daemon/lookuptable.py D daemon/notifications.py D daemon/panel.py D daemon/register.py R090 gconf/ibus-gconf.in docs/Makefile.am R086 daemon/ibus-daemon.in 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 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 R095 ibus/gtk.py 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 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/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: 998cdda7 3439d61d 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 R100 daemon/notify.py 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 A ui/Makefile.am R100 panel/.gitignore ui/gtk/.gitignore R092 panel/Makefile.am ui/gtk/Makefile.am R100 panel/candidatepanel.py ui/gtk/candidatepanel.py R100 panel/handle.py ui/gtk/handle.py R094 panel/ibus-panel.in ui/gtk/ibus-ui-gtk.in R100 panel/icon.py ui/gtk/icon.py R100 panel/languagebar.py ui/gtk/languagebar.py R100 panel/main.py ui/gtk/main.py R100 panel/menu.py ui/gtk/menu.py R100 panel/panel.py ui/gtk/panel.py R100 panel/propitem.py ui/gtk/propitem.py R100 panel/toolitem.py 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: 368ff211 221f2c6b 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: 593ad430 7f04c700 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: 8414a128 9b481260 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: d59183cb 659e44fb 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: 7e77e8d4 9b8c9a85 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: b2c95f23 70ba17bd 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: f0113220 025371da 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: ad00c89c 1aecce03 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 M client/x11/Makefile.am M client/x11/main.c M configure.ac R100 client/x11/IMdkit/FrameMgr.c util/IMdkit/FrameMgr.c R100 client/x11/IMdkit/FrameMgr.h util/IMdkit/FrameMgr.h R100 client/x11/IMdkit/IMConn.c util/IMdkit/IMConn.c R100 client/x11/IMdkit/IMMethod.c util/IMdkit/IMMethod.c R100 client/x11/IMdkit/IMValues.c util/IMdkit/IMValues.c R100 client/x11/IMdkit/IMdkit.h util/IMdkit/IMdkit.h R100 client/x11/IMdkit/Makefile.am util/IMdkit/Makefile.am R100 client/x11/IMdkit/Xi18n.h util/IMdkit/Xi18n.h R100 client/x11/IMdkit/Xi18nX.h util/IMdkit/Xi18nX.h R100 client/x11/IMdkit/XimFunc.h util/IMdkit/XimFunc.h R100 client/x11/IMdkit/XimProto.h util/IMdkit/XimProto.h R100 client/x11/IMdkit/Xtrans.h util/IMdkit/Xtrans.h R100 client/x11/IMdkit/i18nAttr.c util/IMdkit/i18nAttr.c R100 client/x11/IMdkit/i18nClbk.c util/IMdkit/i18nClbk.c R100 client/x11/IMdkit/i18nIMProto.c util/IMdkit/i18nIMProto.c R100 client/x11/IMdkit/i18nIc.c util/IMdkit/i18nIc.c R100 client/x11/IMdkit/i18nMethod.c util/IMdkit/i18nMethod.c R100 client/x11/IMdkit/i18nPtHdr.c util/IMdkit/i18nPtHdr.c R100 client/x11/IMdkit/i18nUtil.c util/IMdkit/i18nUtil.c R100 client/x11/IMdkit/i18nX.c 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 R095 gtk2/ibusim.c client/gtk2/ibusim.c R098 gtk2/ibusimclient.c client/gtk2/ibusimclient.c R095 gtk2/ibusimclient.h client/gtk2/ibusimclient.h R100 gtk2/ibusimcontext.c client/gtk2/ibusimcontext.c R100 gtk2/ibusimcontext.h client/gtk2/ibusimcontext.h R100 gtk2/ibusmarshalers.list client/gtk2/ibusmarshalers.list R100 qt4/.gitignore client/qt4/.gitignore R100 qt4/Makefile.am client/qt4/Makefile.am R100 qt4/ibus-client.cpp client/qt4/ibus-client.cpp R100 qt4/ibus-client.h client/qt4/ibus-client.h R100 qt4/ibus-input-context.cpp client/qt4/ibus-input-context.cpp R100 qt4/ibus-input-context.h client/qt4/ibus-input-context.h R100 qt4/ibus.pro client/qt4/ibus.pro R100 qt4/im-ibus-qt.cpp client/qt4/im-ibus-qt.cpp R100 x11/IMdkit/FrameMgr.c client/x11/IMdkit/FrameMgr.c R100 x11/IMdkit/FrameMgr.h client/x11/IMdkit/FrameMgr.h R100 x11/IMdkit/IMConn.c client/x11/IMdkit/IMConn.c R100 x11/IMdkit/IMMethod.c client/x11/IMdkit/IMMethod.c R100 x11/IMdkit/IMValues.c client/x11/IMdkit/IMValues.c R100 x11/IMdkit/IMdkit.h client/x11/IMdkit/IMdkit.h R100 x11/IMdkit/Makefile.am client/x11/IMdkit/Makefile.am R100 x11/IMdkit/Xi18n.h client/x11/IMdkit/Xi18n.h R100 x11/IMdkit/Xi18nX.h client/x11/IMdkit/Xi18nX.h R100 x11/IMdkit/XimFunc.h client/x11/IMdkit/XimFunc.h R100 x11/IMdkit/XimProto.h client/x11/IMdkit/XimProto.h R100 x11/IMdkit/Xtrans.h client/x11/IMdkit/Xtrans.h R100 x11/IMdkit/i18nAttr.c client/x11/IMdkit/i18nAttr.c R100 x11/IMdkit/i18nClbk.c client/x11/IMdkit/i18nClbk.c R100 x11/IMdkit/i18nIMProto.c client/x11/IMdkit/i18nIMProto.c R100 x11/IMdkit/i18nIc.c client/x11/IMdkit/i18nIc.c R100 x11/IMdkit/i18nMethod.c client/x11/IMdkit/i18nMethod.c R100 x11/IMdkit/i18nPtHdr.c client/x11/IMdkit/i18nPtHdr.c R100 x11/IMdkit/i18nUtil.c client/x11/IMdkit/i18nUtil.c R100 x11/IMdkit/i18nX.c client/x11/IMdkit/i18nX.c R100 x11/Makefile.am client/x11/Makefile.am R100 x11/gdk-private.c client/x11/gdk-private.c R100 x11/gdk-private.h client/x11/gdk-private.h R100 x11/main.c client/x11/main.c M configure.ac A lib/Makefile.am R079 gtk2/Makefile.am lib/gtk2/Makefile.am A lib/gtk2/ibusimclient.c A lib/gtk2/ibusimclient.h A lib/gtk2/ibusmarshalers.list 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 R100 ibus/connection.py ibus/bus.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 R052 panel/image.py panel/icon.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 R099 panel/lang.py ibus/lang.py M panel/Makefile.am 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 R100 ibusdaemon/.gitignore daemon/.gitignore R096 ibusdaemon/Makefile.am daemon/Makefile.am R100 ibusdaemon/bus.py daemon/bus.py R100 ibusdaemon/connection.py daemon/connection.py R100 ibusdaemon/contextmanager.py daemon/contextmanager.py R100 ibusdaemon/engine.py daemon/engine.py R100 ibusdaemon/enginefactory.py daemon/enginefactory.py R100 ibusdaemon/factorymanager.py daemon/factorymanager.py R093 ibusdaemon/ibus-daemon.in daemon/ibus-daemon.in R100 ibusdaemon/ibusdaemon.py daemon/ibusdaemon.py R100 ibusdaemon/inputcontext.py daemon/inputcontext.py R100 ibusdaemon/lookuptable.py daemon/lookuptable.py R100 ibusdaemon/panel.py daemon/panel.py M ibus.spec.in 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 R100 qt/.gitignore qt4/.gitignore R100 qt/Makefile.am qt4/Makefile.am R100 qt/ibus-client.cpp qt4/ibus-client.cpp R100 qt/ibus-client.h qt4/ibus-client.h R100 qt/ibus-input-context.cpp qt4/ibus-input-context.cpp R100 qt/ibus-input-context.h qt4/ibus-input-context.h R100 qt/ibus.pro qt4/ibus.pro R100 qt/im-ibus-qt.cpp 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/gikimclient.h D gtk2/gikimcontext.c R073 gtk2/gikim.c gtk2/ibusim.c R082 gtk2/gikimclient.c gtk2/ibusimclient.c A gtk2/ibusimclient.h A gtk2/ibusimcontext.c R064 gtk2/gikimcontext.h 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/clientmanager.py A ibusdaemon/contextmanager.py R091 ibusdaemon/client.py 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. R100 engine/demo/Makefile engine/enchant/Makefile R100 engine/demo/engine.py engine/enchant/engine.py R100 engine/demo/factory.py engine/enchant/factory.py R100 engine/demo/main.py 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. R100 icons/keyboard.svg icons/ibus-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 R098 ibus/eng_demo.py engine/demo/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/server.py R095 ibus/bus.py ibusdaemon/bus.py R100 ibus/client.py ibusdaemon/client.py R088 ibus/clientmanager.py ibusdaemon/clientmanager.py R100 ibus/connection.py ibusdaemon/connection.py R100 ibus/engine.py ibusdaemon/engine.py R096 ibus/factorymanager.py ibusdaemon/factorymanager.py R096 ibus/ibusdaemon.py 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.22/engine/0000755000000000000000000000000013623751706010771 500000000000000ibus-1.5.22/engine/Makefile.am0000644000000000000000000000435013623750431012741 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2010-2016, Google Inc. All rights reserved. # Copyright (c) 2007-2016 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 = \ iso639converter.py \ 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.22/engine/Makefile.in0000644000000000000000000007631013623751264012764 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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-2016, Google Inc. All rights reserved. # Copyright (c) 2007-2016 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/ibus_engine_simple-main.Po 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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 = \ iso639converter.py \ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 -f ./$(DEPDIR)/ibus_engine_simple-main.Po -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 -f ./$(DEPDIR)/ibus_engine_simple-main.Po -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 am--depfiles 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.22/engine/ibus_engine_simple_vala.stamp0000644000000000000000000000000613623751706016616 00000000000000stamp ibus-1.5.22/engine/iso639converter.py0000755000000000000000000001432613623750431014252 00000000000000#!/usr/bin/python # vim:set fileencoding=utf-8 et sts=4 sw=4: # # ibus - Intelligent Input Bus for Linux / Unix OS # # Copyright © 2016 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, see . # This script converts ISO 639-2 of three characters to ISO 639-1 of two # characters in simple.xml. # E.g. "eng" to "en" from xml.sax import make_parser as sax_make_parser from xml.sax.handler import feature_namespaces as sax_feature_namespaces from xml.sax.saxutils import XMLFilterBase, XMLGenerator from xml.sax._exceptions import SAXParseException import codecs import getopt import io import os import sys INSTALLED_SIMPLE_XML = '/usr/share/ibus/component/simple.xml' PY3K = sys.version_info >= (3, 0) if PY3K: from io import StringIO else: # io.StringIO does not work with XMLGenerator from cStringIO import StringIO # iso_639.xml includes UTF-8 reload(sys) sys.setdefaultencoding('utf-8') def usage(prgname): print('''\ Usage: %s [OPTION...] Options: -h, --help Show this message -i, --input=SIMPLE_XML Load SIMPLE_XML file (default is: %s) -o, --output=FILE Output FILE (default is stdout) ''' % (prgname, INSTALLED_SIMPLE_XML)) class ISO639XML(XMLFilterBase): def __init__(self, parser=None): self.__code2to1 = {} self.__codetoname = {} XMLFilterBase.__init__(self, parser) def startElement(self, name, attrs): if name != 'iso_639_entry': return n = attrs.get('name') iso639_1 = attrs.get('iso_639_1_code') iso639_2b = attrs.get('iso_639_2B_code') iso639_2t = attrs.get('iso_639_2T_code') if iso639_1 != None: self.__codetoname[iso639_1] = n if iso639_2b != None: self.__code2to1[iso639_2b] = iso639_1 self.__codetoname[iso639_2b] = n if iso639_2t != None and iso639_2b != iso639_2t: self.__code2to1[iso639_2t] = iso639_1 self.__codetoname[iso639_2t] = n def code2to1(self, iso639_2): try: return self.__code2to1[iso639_2] except KeyError: return None class IBusComponentXML(XMLFilterBase): def __init__(self, parser=None, downstream=None, iso639=None): XMLFilterBase.__init__(self, parser) self.__downstream = downstream self.__iso639 = iso639 self.__is_language = False def startDocument(self): if self.__downstream: self.__downstream.startDocument() def endDocument(self): if self.__downstream: self.__downstream.endDocument() def startElement(self, name, attrs): if name == 'language': self.__is_language = True if self.__downstream: self.__downstream.startElement(name, attrs) def endElement(self, name): if name == 'language': self.__is_language = False if self.__downstream: self.__downstream.endElement(name) def characters(self, text): if self.__is_language: if self.__iso639: iso639_1 = self.__iso639.code2to1(text) if iso639_1 != None: text = iso639_1 if self.__downstream: self.__downstream.characters(text) class ConvertEngineXML(): def __init__(self, path, iso639=None): self.__path = path self.__iso639 = iso639 self.__result = StringIO() downstream = XMLGenerator(self.__result, 'utf-8') self.__load(downstream) def __load(self, downstream=None): parser = sax_make_parser() parser.setFeature(sax_feature_namespaces, 0) self.__handler = IBusComponentXML(parser, downstream, self.__iso639) parser.setContentHandler(self.__handler) f = codecs.open(self.__path, 'r', encoding='utf-8') try: parser.parse(f) except SAXParseException: print('Error: Invalid file format: %s' % path) finally: f.close() def write(self, output=None): if output != None: od = codecs.open(output, 'w', encoding='utf-8') else: if PY3K: od = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') else: od = codecs.getwriter('utf-8')(sys.stdout) contents = self.__result.getvalue() od.write(contents) def parse_iso639(path): f = codecs.open(path, 'r', encoding='utf-8') parser = sax_make_parser() parser.setFeature(sax_feature_namespaces, 0) handler = ISO639XML(parser) parser.setContentHandler(handler) try: parser.parse(f) except SAXParseException: print('Error: Invalid file format: %s' % path) finally: f.close() return handler if __name__ == '__main__': prgname = os.path.basename(sys.argv[0]) try: opts, args = getopt.getopt(sys.argv[1:], 'hi:o:', ['help', 'input=', 'output=']) except getopt.GetoptError as err: print(err) usage(prgname) sys.exit(2) if len(args) > 0: usage(prgname) sys.exit(2) input = INSTALLED_SIMPLE_XML output = None for opt, arg in opts: if opt in ('-h', '--help'): usage(prgname) sys.exit() elif opt in ('-i', '--input'): input = arg elif opt in ('-o', '--output'): output = arg iso639 = parse_iso639('/usr/share/xml/iso-codes/iso_639.xml') xml = ConvertEngineXML(input, iso639) xml.write(output) ibus-1.5.22/engine/simple.xml.in0000644000000000000000000006767713623750431013352 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 en GPL Peng Huang <shawn.p.huang@gmail.com> us English (US) English (US) ibus-keyboard 99 xkb:us:intl:eng en 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 en GPL Peng Huang <shawn.p.huang@gmail.com> us colemak English (Colemak) English (Colemak) ibus-keyboard 1 xkb:us:dvorak:eng en GPL Peng Huang <shawn.p.huang@gmail.com> us dvorak English (Dvorak) English (Dvorak) ibus-keyboard 1 xkb:us:altgr-intl:eng en 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 ar GPL Peng Huang <shawn.p.huang@gmail.com> ara Arabic Arabic ibus-keyboard 99 xkb:be::ger de GPL Peng Huang <shawn.p.huang@gmail.com> be Belgian Belgian ibus-keyboard 1 xkb:be::nld nl GPL Peng Huang <shawn.p.huang@gmail.com> be Belgian Belgian ibus-keyboard 99 xkb:be::fra fr GPL Peng Huang <shawn.p.huang@gmail.com> be Belgian Belgian ibus-keyboard 1 xkb:br::por pt GPL Peng Huang <shawn.p.huang@gmail.com> br Portuguese (Brazil) Portuguese (Brazil) ibus-keyboard 99 xkb:br:dvorak:por pt GPL Peng Huang <shawn.p.huang@gmail.com> br dvorak Portuguese (Brazil, Dvorak) Portuguese (Brazil, Dvorak) ibus-keyboard 1 xkb:bg::bul bg GPL Peng Huang <shawn.p.huang@gmail.com> bg Bulgarian Bulgarian ibus-keyboard 99 xkb:bg:phonetic:bul bg GPL Peng Huang <shawn.p.huang@gmail.com> bg phonetic Bulgarian (traditional phonetic) Bulgarian (traditional phonetic) ibus-keyboard 99 xkb:ca::fra fr GPL Peng Huang <shawn.p.huang@gmail.com> ca French (Canada) French (Canada) ibus-keyboard 1 xkb:ca:eng:eng en GPL Peng Huang <shawn.p.huang@gmail.com> ca eng English (Canada) English (Canada) ibus-keyboard 1 xkb:hr::hr hr GPL Peng Huang <shawn.p.huang@gmail.com> hr Croatian Croatian ibus-keyboard 99 xkb:cz::cze cs GPL Peng Huang <shawn.p.huang@gmail.com> cz Czech Czech ibus-keyboard 99 xkb:cz:qwerty:cze cs GPL Peng Huang <shawn.p.huang@gmail.com> cz qwerty Czech (qwerty) Czech (qwerty) ibus-keyboard 99 xkb:dk::dan da GPL Peng Huang <shawn.p.huang@gmail.com> dk Danish Danish ibus-keyboard 99 xkb:ee::est et GPL Peng Huang <shawn.p.huang@gmail.com> ee Estonian Estonian ibus-keyboard 99 xkb:fi::fin fi GPL Peng Huang <shawn.p.huang@gmail.com> fi Finnish Finnish ibus-keyboard 99 xkb:fr::fra fr GPL Peng Huang <shawn.p.huang@gmail.com> fr French French ibus-keyboard 99 xkb:fr:oss:fra fr GPL Peng Huang <shawn.p.huang@gmail.com> fr oss French (alternative) French (alternative) ibus-keyboard 1 xkb:fr:bepo:fra fr 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:bepo_afnor:fra fr GPL Peng Huang <shawn.p.huang@gmail.com> fr bepo_afnor French (Bepo, ergonomic, Dvorak way, AFNOR) French (Bepo, ergonomic, Dvorak way, AFNOR) ibus-keyboard 1 xkb:fr:dvorak:fra fr GPL Peng Huang <shawn.p.huang@gmail.com> fr dvorak French (Dvorak) French (Dvorak) ibus-keyboard 1 xkb:de::ger de GPL Peng Huang <shawn.p.huang@gmail.com> de German German ibus-keyboard 99 xkb:de:dvorak:ger de GPL Peng Huang <shawn.p.huang@gmail.com> de dvorak German (Dvorak) German (Dvorak) ibus-keyboard 1 xkb:de:neo:ger de GPL Peng Huang <shawn.p.huang@gmail.com> de neo German (Neo 2) German (Neo 2) ibus-keyboard 1 xkb:de:nodeadkeys:ger de GPL Peng Huang <shawn.p.huang@gmail.com> de nodeadkeys German (eliminate dead keys) German (eliminate dead keys) ibus-keyboard 1 xkb:gr::gre el GPL Peng Huang <shawn.p.huang@gmail.com> gr Greek Greek ibus-keyboard 99 xkb:hu::hun hu GPL Peng Huang <shawn.p.huang@gmail.com> hu Hungarian Hungarian ibus-keyboard 99 xkb:il::heb he GPL Peng Huang <shawn.p.huang@gmail.com> il Hebrew Hebrew ibus-keyboard 99 xkb:it::ita it GPL Peng Huang <shawn.p.huang@gmail.com> it Italian Italian ibus-keyboard 99 xkb:jp::jpn ja GPL Peng Huang <shawn.p.huang@gmail.com> jp Japanese Japanese ibus-keyboard 1 xkb:latam::spa es GPL Peng Huang <shawn.p.huang@gmail.com> latam Spanish (Latin American) Spanish (Latin American) ibus-keyboard 1 xkb:lt::lit lt GPL Peng Huang <shawn.p.huang@gmail.com> lt Lithuanian Lithuanian ibus-keyboard 99 xkb:lv:apostrophe:lav lv GPL Peng Huang <shawn.p.huang@gmail.com> lv apostrophe Latvian (apostrophe variant) Latvian (apostrophe variant) ibus-keyboard 99 xkb:no::nor no GPL Peng Huang <shawn.p.huang@gmail.com> no Norwegian Norwegian ibus-keyboard 99 xkb:no:dvorak:nor no GPL Peng Huang <shawn.p.huang@gmail.com> no dvorak Norwegian (Dvorak) Norwegian (Dvorak) ibus-keyboard 1 xkb:pl::pol pl GPL Peng Huang <shawn.p.huang@gmail.com> pl Polish Polish ibus-keyboard 99 xkb:pl:dvorak:pol pl GPL Peng Huang <shawn.p.huang@gmail.com> pl dvorak Polish (Dvorak) Polish (Dvorak) ibus-keyboard 1 xkb:pl:qwertz:pol pl GPL Peng Huang <shawn.p.huang@gmail.com> pl qwertz Polish (qwertz) Polish (qwertz) ibus-keyboard 1 xkb:pt::por pt GPL Peng Huang <shawn.p.huang@gmail.com> pt Portuguese Portuguese ibus-keyboard 99 xkb:ro::rum ro GPL Peng Huang <shawn.p.huang@gmail.com> ro Romanian Romanian ibus-keyboard 99 xkb:ru::rus ru GPL Peng Huang <shawn.p.huang@gmail.com> ru Russian Russian ibus-keyboard 99 xkb:ru:phonetic:rus ru GPL Peng Huang <shawn.p.huang@gmail.com> ru phonetic Russian (phonetic) Russian (phonetic) ibus-keyboard 1 xkb:rs::srp sr GPL Peng Huang <shawn.p.huang@gmail.com> rs Serbian Serbian ibus-keyboard 99 xkb:si::slv sl GPL Peng Huang <shawn.p.huang@gmail.com> si Slovenian Slovenian ibus-keyboard 99 xkb:sk::slo sk GPL Peng Huang <shawn.p.huang@gmail.com> sk Slovak Slovak ibus-keyboard 99 xkb:sk:qwerty:slo sk GPL Peng Huang <shawn.p.huang@gmail.com> sk qwerty Slovak (qwerty) Slovak (qwerty) ibus-keyboard 99 xkb:es::spa es GPL Peng Huang <shawn.p.huang@gmail.com> es Spanish Spanish ibus-keyboard 99 xkb:es:cat:cat ca 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 sv GPL Peng Huang <shawn.p.huang@gmail.com> se Swedish Swedish ibus-keyboard 99 xkb:se:dvorak:swe sv GPL Peng Huang <shawn.p.huang@gmail.com> se dvorak Swedish (Dvorak) Swedish (Dvorak) ibus-keyboard 1 xkb:se:svdvorak:swe sv GPL Peng Huang <shawn.p.huang@gmail.com> se svdvorak Swedish (Svdvorak) Swedish (Svdvorak) ibus-keyboard 1 xkb:ch::ger de GPL Peng Huang <shawn.p.huang@gmail.com> ch German (Switzerland) German (Switzerland) ibus-keyboard 1 xkb:ch:fr:fra fr GPL Peng Huang <shawn.p.huang@gmail.com> ch fr French (Switzerland) French (Switzerland) ibus-keyboard 1 xkb:tr::tur tr GPL Peng Huang <shawn.p.huang@gmail.com> tr Turkish Turkish ibus-keyboard 99 xkb:ua::ukr uk GPL Peng Huang <shawn.p.huang@gmail.com> ua Ukrainian Ukrainian ibus-keyboard 99 xkb:uz::uzb uz GPL Peng Huang <shawn.p.huang@gmail.com> uz Uzbek Uzbek ibus-keyboard 99 xkb:uz:cyrillic:uzb uz GPL Peng Huang <shawn.p.huang@gmail.com> uz cyrillic Uzbek Cyrillic Uzbek Cyrillic ibus-keyboard 1 xkb:uz:latin:uzb uz GPL Peng Huang <shawn.p.huang@gmail.com> uz latin Uzbek Latin Uzbek Latin ibus-keyboard 1 xkb:gb:extd:eng en 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 en GPL Peng Huang <shawn.p.huang@gmail.com> gb dvorak English (UK, Dvorak) English (UK, Dvorak) ibus-keyboard 1 xkb:my::msa ms GPL Peng Huang <shawn.p.huang@gmail.com> my Malay (Jawi) Malay (Jawi) ibus-keyboard 1 xkb:mn::mon mn GPL Peng Huang <shawn.p.huang@gmail.com> mn Mongolian Mongolian ibus-keyboard 1 ibus-1.5.22/engine/main.vala0000644000000000000000000000662513623750431012505 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.22/engine/main.c0000644000000000000000000002666413623751706012017 00000000000000/* main.c generated by valac 0.47.91, 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; enum { DUMMY_ENGINE_0_PROPERTY, DUMMY_ENGINE_NUM_PROPERTIES }; static GParamSpec* dummy_engine_properties[DUMMY_ENGINE_NUM_PROPERTIES]; 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (DummyEngine, g_object_unref) DummyEngine* dummy_engine_new (void); DummyEngine* dummy_engine_construct (GType object_type); static GType dummy_engine_get_type_once (void); gint _vala_main (gchar** args, gint 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, gpointer klass_data) { dummy_engine_parent_class = g_type_class_peek_parent (klass); } static void dummy_engine_instance_init (DummyEngine * self, gpointer klass) { } static GType dummy_engine_get_type_once (void) { 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); return dummy_engine_type_id; } 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)) { GType dummy_engine_type_id; dummy_engine_type_id = dummy_engine_get_type_once (); 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_; IBusEngineSimple* simple = NULL; IBusEngine* _tmp0_; IBusEngineSimple* _tmp1_; IBusEngineSimple* _tmp2_; gchar* user_file = NULL; gchar* home = NULL; const gchar* _tmp3_; gchar* _tmp4_; const gchar* _tmp5_; const gchar* _tmp11_; gchar* _tmp12_; const gchar* _tmp13_; gboolean result = FALSE; _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_; gchar* _tmp7_; const gchar* _tmp8_; _tmp6_ = home; _tmp7_ = g_strconcat (_tmp6_, "/.XCompose", NULL); _g_free0 (user_file); user_file = _tmp7_; _tmp8_ = user_file; if (g_file_test (_tmp8_, G_FILE_TEST_EXISTS)) { IBusEngineSimple* _tmp9_; const gchar* _tmp10_; _tmp9_ = simple; _tmp10_ = user_file; ibus_engine_simple_add_compose_file (_tmp9_, _tmp10_); } } _tmp11_ = g_getenv ("XCOMPOSEFILE"); _tmp12_ = g_strdup (_tmp11_); _g_free0 (user_file); user_file = _tmp12_; _tmp13_ = user_file; if (_tmp13_ != NULL) { const gchar* _tmp14_; _tmp14_ = user_file; if (g_file_test (_tmp14_, G_FILE_TEST_EXISTS)) { IBusEngineSimple* _tmp15_; const gchar* _tmp16_; _tmp15_ = simple; _tmp16_ = user_file; ibus_engine_simple_add_compose_file (_tmp15_, _tmp16_); } } 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) { Block2Data* _data2_; static const char path[] = "/org/freedesktop/IBus/engine/simple/%d"; gchar* _tmp0_; gchar* _tmp1_; IBusBus* _tmp2_; GDBusConnection* _tmp3_; IBusEngine* _tmp4_; IBusEngine* _tmp5_; IBusEngine* _tmp6_; IBusEngine* _tmp7_; IBusEngine* result = 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_); if (!g_str_has_prefix (name, "xkb:")) { result = NULL; block2_data_unref (_data2_); _data2_ = NULL; return result; } _data1_->id = _data1_->id + 1; _tmp0_ = g_strdup_printf (path, _data1_->id); _tmp1_ = _tmp0_; _tmp2_ = _data1_->bus; _tmp3_ = ibus_bus_get_connection (_tmp2_); _tmp4_ = ibus_engine_new_with_type (ibus_engine_simple_get_type (), name, _tmp1_, _tmp3_); g_object_ref_sink (_tmp4_); _tmp5_ = _tmp4_; _g_free0 (_tmp1_); _data2_->engine = _tmp5_; g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, ___lambda6__gsource_func, block2_data_ref (_data2_), block2_data_unref); _tmp6_ = _data2_->engine; _tmp7_ = _g_object_ref0 (_tmp6_); result = _tmp7_; 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, gint args_length1) { Block1Data* _data1_; IBusBus* _tmp0_; IBusBus* _tmp1_; IBusBus* _tmp2_; IBusFactory* factory = NULL; IBusBus* _tmp3_; GDBusConnection* _tmp4_; IBusFactory* _tmp5_; IBusFactory* _tmp6_; guint flags = 0U; guint retval = 0U; IBusBus* _tmp7_; gint result = 0; _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; if (!ibus_bus_is_connected (_tmp1_)) { g_warning ("main.vala:35: ibus-daemon does not exist."); result = 1; block1_data_unref (_data1_); _data1_ = NULL; return result; } _tmp2_ = _data1_->bus; g_signal_connect (_tmp2_, "disconnected", (GCallback) ___lambda4__ibus_bus_disconnected, NULL); _tmp3_ = _data1_->bus; _tmp4_ = ibus_bus_get_connection (_tmp3_); _tmp5_ = ibus_factory_new (_tmp4_); g_object_ref_sink (_tmp5_); factory = _tmp5_; _data1_->id = 0; _tmp6_ = factory; g_signal_connect_data (_tmp6_, "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); _tmp7_ = _data1_->bus; retval = (guint) ibus_bus_request_name (_tmp7_, "org.freedesktop.IBus.Simple", (guint32) flags); if (retval == ((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) { return _vala_main (argv, argc); } ibus-1.5.22/config.h.in0000644000000000000000000000735613623751262011477 00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* dconf is 0.13.4 or later */ #undef DCONF_0_13_4 /* Define to 1 if translation of program messages to the user's native language is requested. */ #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 to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT /* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE /* Define to 1 if you have the `daemon' function. */ #undef HAVE_DAEMON /* Define if the GNU dcgettext() function is already present or preinstalled. */ #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 if you have the iconv() function and it works. */ #undef HAVE_ICONV /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_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_PRCTL_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 /* The default socket directory to connect ibus-daemon. */ #undef IBUS_SOCKET_DIR /* Define the location where the catalogs will be installed */ #undef LOCALEDIR /* Define to the sub-directory where 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.22/Makefile.am0000644000000000000000000000672113623750431011500 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2016 Peng Huang # Copyright (c) 2015-2019 Takao Fujiwara # Copyright (c) 2007-2019 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 \ portal \ data \ m4 \ po \ docs \ $(ENGINE_DIR) \ $(UI_DIR) \ tools \ $(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 = \ COPYING.unicode \ 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 \ --enable-memconf \ $(NULL) dist-hook: if test -d .git ; then \ git log --name-status --date=iso > $(distdir)/ChangeLog ; \ IBUS_PREV_MICRO_VERSION=`expr $(IBUS_MICRO_VERSION) - 1`; \ IBUS_PREV_VERSION=\ "$(IBUS_MAJOR_VERSION).$(IBUS_MINOR_VERSION).$$IBUS_PREV_MICRO_VERSION"; \ echo "Changes in IBus $(IBUS_VERSION)" > $(distdir)/NEWS; \ echo "" >> $(distdir)/NEWS; \ git shortlog $$IBUS_PREV_VERSION...$(IBUS_VERSION) \ >> $(distdir)/NEWS; \ echo "" >> $(distdir)/NEWS; \ git log $$IBUS_PREV_VERSION...$(IBUS_VERSION) --reverse \ --pretty=format:'%s (%an) %h' >> $(distdir)/NEWS; \ fi distclean-local: if test "x$(srcdir)" = "x."; then :; else \ rm -f ChangeLog; \ rm -f NEWS; \ 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 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 ibus-1.5.22/portal/0000755000000000000000000000000013623751575011031 500000000000000ibus-1.5.22/portal/Makefile.am0000644000000000000000000000501413623750431012773 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) ibus_dbus_built_sources = ibus-portal-dbus.c ibus-portal-dbus.h BUILT_SOURCES = $(ibus_dbus_built_sources) libexec_PROGRAMS = ibus-portal ibus_portal_DEPENDENCIES = \ $(libibus) \ $(NULL) ibus_portal_SOURCES = \ portal.c \ $(ibus_dbus_built_sources) \ $(NULL) ibus_portal_CFLAGS = \ $(AM_CFLAGS) \ $(NULL) ibus_portal_LDADD = \ $(AM_LDADD) \ $(NULL) $(libibus): $(MAKE) -C $(top_builddir)/src dbusservice_in_files = org.freedesktop.portal.IBus.service.in dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) dbusservicedir=${datadir}/dbus-1/services org.freedesktop.portal.IBus.service: org.freedesktop.portal.IBus.service.in $(AM_V_GEN) sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@.tmp && mv $@.tmp $@ $(ibus_dbus_built_sources) : org.freedesktop.IBus.Portal.xml $(AM_V_GEN) $(GDBUS_CODEGEN) \ --interface-prefix org.freedesktop.IBus. \ --c-namespace IBusDbus \ --generate-c-code $(builddir)/ibus-portal-dbus \ $^ \ $(NULL) EXTRA_DIST = \ $(dbusservice_in_files) \ org.freedesktop.IBus.Portal.xml \ $(NULL) CLEANFILES = \ $(dbusservice_DATA) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.22/portal/org.freedesktop.IBus.Portal.xml0000644000000000000000000001146713623750431016674 00000000000000 ibus-1.5.22/portal/Makefile.in0000644000000000000000000010215713623751264013017 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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-portal$(EXEEXT) subdir = portal ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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)$(dbusservicedir)" PROGRAMS = $(libexec_PROGRAMS) am__objects_1 = ibus_portal-ibus-portal-dbus.$(OBJEXT) am__objects_2 = am_ibus_portal_OBJECTS = ibus_portal-portal.$(OBJEXT) $(am__objects_1) \ $(am__objects_2) ibus_portal_OBJECTS = $(am_ibus_portal_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_portal_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ibus_portal_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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/ibus_portal-ibus-portal-dbus.Po \ ./$(DEPDIR)/ibus_portal-portal.Po 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_portal_SOURCES) DIST_SOURCES = $(ibus_portal_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 = $(dbusservice_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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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) ibus_dbus_built_sources = ibus-portal-dbus.c ibus-portal-dbus.h BUILT_SOURCES = $(ibus_dbus_built_sources) ibus_portal_DEPENDENCIES = \ $(libibus) \ $(NULL) ibus_portal_SOURCES = \ portal.c \ $(ibus_dbus_built_sources) \ $(NULL) ibus_portal_CFLAGS = \ $(AM_CFLAGS) \ $(NULL) ibus_portal_LDADD = \ $(AM_LDADD) \ $(NULL) dbusservice_in_files = org.freedesktop.portal.IBus.service.in dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) dbusservicedir = ${datadir}/dbus-1/services EXTRA_DIST = \ $(dbusservice_in_files) \ org.freedesktop.IBus.Portal.xml \ $(NULL) CLEANFILES = \ $(dbusservice_DATA) \ $(NULL) all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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 portal/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu portal/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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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-portal$(EXEEXT): $(ibus_portal_OBJECTS) $(ibus_portal_DEPENDENCIES) $(EXTRA_ibus_portal_DEPENDENCIES) @rm -f ibus-portal$(EXEEXT) $(AM_V_CCLD)$(ibus_portal_LINK) $(ibus_portal_OBJECTS) $(ibus_portal_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_portal-ibus-portal-dbus.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_portal-portal.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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_portal-portal.o: portal.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_portal_CFLAGS) $(CFLAGS) -MT ibus_portal-portal.o -MD -MP -MF $(DEPDIR)/ibus_portal-portal.Tpo -c -o ibus_portal-portal.o `test -f 'portal.c' || echo '$(srcdir)/'`portal.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_portal-portal.Tpo $(DEPDIR)/ibus_portal-portal.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='portal.c' object='ibus_portal-portal.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_portal_CFLAGS) $(CFLAGS) -c -o ibus_portal-portal.o `test -f 'portal.c' || echo '$(srcdir)/'`portal.c ibus_portal-portal.obj: portal.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_portal_CFLAGS) $(CFLAGS) -MT ibus_portal-portal.obj -MD -MP -MF $(DEPDIR)/ibus_portal-portal.Tpo -c -o ibus_portal-portal.obj `if test -f 'portal.c'; then $(CYGPATH_W) 'portal.c'; else $(CYGPATH_W) '$(srcdir)/portal.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_portal-portal.Tpo $(DEPDIR)/ibus_portal-portal.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='portal.c' object='ibus_portal-portal.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_portal_CFLAGS) $(CFLAGS) -c -o ibus_portal-portal.obj `if test -f 'portal.c'; then $(CYGPATH_W) 'portal.c'; else $(CYGPATH_W) '$(srcdir)/portal.c'; fi` ibus_portal-ibus-portal-dbus.o: ibus-portal-dbus.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_portal_CFLAGS) $(CFLAGS) -MT ibus_portal-ibus-portal-dbus.o -MD -MP -MF $(DEPDIR)/ibus_portal-ibus-portal-dbus.Tpo -c -o ibus_portal-ibus-portal-dbus.o `test -f 'ibus-portal-dbus.c' || echo '$(srcdir)/'`ibus-portal-dbus.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_portal-ibus-portal-dbus.Tpo $(DEPDIR)/ibus_portal-ibus-portal-dbus.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibus-portal-dbus.c' object='ibus_portal-ibus-portal-dbus.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_portal_CFLAGS) $(CFLAGS) -c -o ibus_portal-ibus-portal-dbus.o `test -f 'ibus-portal-dbus.c' || echo '$(srcdir)/'`ibus-portal-dbus.c ibus_portal-ibus-portal-dbus.obj: ibus-portal-dbus.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_portal_CFLAGS) $(CFLAGS) -MT ibus_portal-ibus-portal-dbus.obj -MD -MP -MF $(DEPDIR)/ibus_portal-ibus-portal-dbus.Tpo -c -o ibus_portal-ibus-portal-dbus.obj `if test -f 'ibus-portal-dbus.c'; then $(CYGPATH_W) 'ibus-portal-dbus.c'; else $(CYGPATH_W) '$(srcdir)/ibus-portal-dbus.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_portal-ibus-portal-dbus.Tpo $(DEPDIR)/ibus_portal-ibus-portal-dbus.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibus-portal-dbus.c' object='ibus_portal-ibus-portal-dbus.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_portal_CFLAGS) $(CFLAGS) -c -o ibus_portal-ibus-portal-dbus.obj `if test -f 'ibus-portal-dbus.c'; then $(CYGPATH_W) 'ibus-portal-dbus.c'; else $(CYGPATH_W) '$(srcdir)/ibus-portal-dbus.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dbusserviceDATA: $(dbusservice_DATA) @$(NORMAL_INSTALL) @list='$(dbusservice_DATA)'; test -n "$(dbusservicedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dbusservicedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dbusservicedir)" || 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)$(dbusservicedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dbusservicedir)" || exit $$?; \ done uninstall-dbusserviceDATA: @$(NORMAL_UNINSTALL) @list='$(dbusservice_DATA)'; test -n "$(dbusservicedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(dbusservicedir)'; $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(PROGRAMS) $(DATA) installdirs: for dir in "$(DESTDIR)$(libexecdir)" "$(DESTDIR)$(dbusservicedir)"; 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: 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-generic clean-libexecPROGRAMS clean-libtool \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/ibus_portal-ibus-portal-dbus.Po -rm -f ./$(DEPDIR)/ibus_portal-portal.Po -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-dbusserviceDATA 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 -f ./$(DEPDIR)/ibus_portal-ibus-portal-dbus.Po -rm -f ./$(DEPDIR)/ibus_portal-portal.Po -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-dbusserviceDATA uninstall-libexecPROGRAMS .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles 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-dbusserviceDATA \ 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-dbusserviceDATA \ uninstall-libexecPROGRAMS .PRECIOUS: Makefile $(libibus): $(MAKE) -C $(top_builddir)/src org.freedesktop.portal.IBus.service: org.freedesktop.portal.IBus.service.in $(AM_V_GEN) sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@.tmp && mv $@.tmp $@ $(ibus_dbus_built_sources) : org.freedesktop.IBus.Portal.xml $(AM_V_GEN) $(GDBUS_CODEGEN) \ --interface-prefix org.freedesktop.IBus. \ --c-namespace IBusDbus \ --generate-c-code $(builddir)/ibus-portal-dbus \ $^ \ $(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.22/portal/ibus-portal-dbus.h0000644000000000000000000007727413623751575014337 00000000000000/* * This file is generated by gdbus-codegen, do not modify it. * * The license of this code is the same as for the D-Bus interface description * it was derived from. Note that it links to GLib, so must comply with the * LGPL linking clauses. */ #ifndef ____IBUS_PORTAL_DBUS_H__ #define ____IBUS_PORTAL_DBUS_H__ #include G_BEGIN_DECLS /* ------------------------------------------------------------------------ */ /* Declarations for org.freedesktop.IBus.Portal */ #define IBUS_DBUS_TYPE_PORTAL (ibus_dbus_portal_get_type ()) #define IBUS_DBUS_PORTAL(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IBUS_DBUS_TYPE_PORTAL, IBusDbusPortal)) #define IBUS_DBUS_IS_PORTAL(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), IBUS_DBUS_TYPE_PORTAL)) #define IBUS_DBUS_PORTAL_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), IBUS_DBUS_TYPE_PORTAL, IBusDbusPortalIface)) struct _IBusDbusPortal; typedef struct _IBusDbusPortal IBusDbusPortal; typedef struct _IBusDbusPortalIface IBusDbusPortalIface; struct _IBusDbusPortalIface { GTypeInterface parent_iface; gboolean (*handle_create_input_context) ( IBusDbusPortal *object, GDBusMethodInvocation *invocation, const gchar *arg_client_name); }; GType ibus_dbus_portal_get_type (void) G_GNUC_CONST; GDBusInterfaceInfo *ibus_dbus_portal_interface_info (void); guint ibus_dbus_portal_override_properties (GObjectClass *klass, guint property_id_begin); /* D-Bus method call completion functions: */ void ibus_dbus_portal_complete_create_input_context ( IBusDbusPortal *object, GDBusMethodInvocation *invocation, const gchar *object_path); /* D-Bus method calls: */ void ibus_dbus_portal_call_create_input_context ( IBusDbusPortal *proxy, const gchar *arg_client_name, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_portal_call_create_input_context_finish ( IBusDbusPortal *proxy, gchar **out_object_path, GAsyncResult *res, GError **error); gboolean ibus_dbus_portal_call_create_input_context_sync ( IBusDbusPortal *proxy, const gchar *arg_client_name, gchar **out_object_path, GCancellable *cancellable, GError **error); /* ---- */ #define IBUS_DBUS_TYPE_PORTAL_PROXY (ibus_dbus_portal_proxy_get_type ()) #define IBUS_DBUS_PORTAL_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IBUS_DBUS_TYPE_PORTAL_PROXY, IBusDbusPortalProxy)) #define IBUS_DBUS_PORTAL_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), IBUS_DBUS_TYPE_PORTAL_PROXY, IBusDbusPortalProxyClass)) #define IBUS_DBUS_PORTAL_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), IBUS_DBUS_TYPE_PORTAL_PROXY, IBusDbusPortalProxyClass)) #define IBUS_DBUS_IS_PORTAL_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), IBUS_DBUS_TYPE_PORTAL_PROXY)) #define IBUS_DBUS_IS_PORTAL_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), IBUS_DBUS_TYPE_PORTAL_PROXY)) typedef struct _IBusDbusPortalProxy IBusDbusPortalProxy; typedef struct _IBusDbusPortalProxyClass IBusDbusPortalProxyClass; typedef struct _IBusDbusPortalProxyPrivate IBusDbusPortalProxyPrivate; struct _IBusDbusPortalProxy { /*< private >*/ GDBusProxy parent_instance; IBusDbusPortalProxyPrivate *priv; }; struct _IBusDbusPortalProxyClass { GDBusProxyClass parent_class; }; GType ibus_dbus_portal_proxy_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusDbusPortalProxy, g_object_unref) #endif void ibus_dbus_portal_proxy_new ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); IBusDbusPortal *ibus_dbus_portal_proxy_new_finish ( GAsyncResult *res, GError **error); IBusDbusPortal *ibus_dbus_portal_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); void ibus_dbus_portal_proxy_new_for_bus ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); IBusDbusPortal *ibus_dbus_portal_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error); IBusDbusPortal *ibus_dbus_portal_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); /* ---- */ #define IBUS_DBUS_TYPE_PORTAL_SKELETON (ibus_dbus_portal_skeleton_get_type ()) #define IBUS_DBUS_PORTAL_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IBUS_DBUS_TYPE_PORTAL_SKELETON, IBusDbusPortalSkeleton)) #define IBUS_DBUS_PORTAL_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), IBUS_DBUS_TYPE_PORTAL_SKELETON, IBusDbusPortalSkeletonClass)) #define IBUS_DBUS_PORTAL_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), IBUS_DBUS_TYPE_PORTAL_SKELETON, IBusDbusPortalSkeletonClass)) #define IBUS_DBUS_IS_PORTAL_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), IBUS_DBUS_TYPE_PORTAL_SKELETON)) #define IBUS_DBUS_IS_PORTAL_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), IBUS_DBUS_TYPE_PORTAL_SKELETON)) typedef struct _IBusDbusPortalSkeleton IBusDbusPortalSkeleton; typedef struct _IBusDbusPortalSkeletonClass IBusDbusPortalSkeletonClass; typedef struct _IBusDbusPortalSkeletonPrivate IBusDbusPortalSkeletonPrivate; struct _IBusDbusPortalSkeleton { /*< private >*/ GDBusInterfaceSkeleton parent_instance; IBusDbusPortalSkeletonPrivate *priv; }; struct _IBusDbusPortalSkeletonClass { GDBusInterfaceSkeletonClass parent_class; }; GType ibus_dbus_portal_skeleton_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusDbusPortalSkeleton, g_object_unref) #endif IBusDbusPortal *ibus_dbus_portal_skeleton_new (void); /* ------------------------------------------------------------------------ */ /* Declarations for org.freedesktop.IBus.InputContext */ #define IBUS_DBUS_TYPE_INPUT_CONTEXT (ibus_dbus_input_context_get_type ()) #define IBUS_DBUS_INPUT_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IBUS_DBUS_TYPE_INPUT_CONTEXT, IBusDbusInputContext)) #define IBUS_DBUS_IS_INPUT_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), IBUS_DBUS_TYPE_INPUT_CONTEXT)) #define IBUS_DBUS_INPUT_CONTEXT_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), IBUS_DBUS_TYPE_INPUT_CONTEXT, IBusDbusInputContextIface)) struct _IBusDbusInputContext; typedef struct _IBusDbusInputContext IBusDbusInputContext; typedef struct _IBusDbusInputContextIface IBusDbusInputContextIface; struct _IBusDbusInputContextIface { GTypeInterface parent_iface; gboolean (*handle_cancel_hand_writing) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, guint arg_n_strokes); gboolean (*handle_focus_in) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); gboolean (*handle_focus_out) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); gboolean (*handle_get_engine) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); gboolean (*handle_process_hand_writing_event) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, GVariant *arg_coordinates); gboolean (*handle_process_key_event) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, guint arg_keyval, guint arg_keycode, guint arg_state); gboolean (*handle_property_activate) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, const gchar *arg_name, guint arg_state); gboolean (*handle_reset) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); gboolean (*handle_set_capabilities) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, guint arg_caps); gboolean (*handle_set_cursor_location) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, gint arg_x, gint arg_y, gint arg_w, gint arg_h); gboolean (*handle_set_cursor_location_relative) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, gint arg_x, gint arg_y, gint arg_w, gint arg_h); gboolean (*handle_set_engine) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, const gchar *arg_name); gboolean (*handle_set_surrounding_text) ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, GVariant *arg_text, guint arg_cursor_pos, guint arg_anchor_pos); GVariant * (*get_client_commit_preedit) (IBusDbusInputContext *object); GVariant * (*get_content_type) (IBusDbusInputContext *object); void (*commit_text) ( IBusDbusInputContext *object, GVariant *arg_text); void (*cursor_down_lookup_table) ( IBusDbusInputContext *object); void (*cursor_up_lookup_table) ( IBusDbusInputContext *object); void (*forward_key_event) ( IBusDbusInputContext *object, guint arg_keyval, guint arg_keycode, guint arg_state); void (*hide_auxiliary_text) ( IBusDbusInputContext *object); void (*hide_lookup_table) ( IBusDbusInputContext *object); void (*hide_preedit_text) ( IBusDbusInputContext *object); void (*page_down_lookup_table) ( IBusDbusInputContext *object); void (*page_up_lookup_table) ( IBusDbusInputContext *object); void (*register_properties) ( IBusDbusInputContext *object, GVariant *arg_props); void (*show_auxiliary_text) ( IBusDbusInputContext *object); void (*show_lookup_table) ( IBusDbusInputContext *object); void (*show_preedit_text) ( IBusDbusInputContext *object); void (*update_auxiliary_text) ( IBusDbusInputContext *object, GVariant *arg_text, gboolean arg_visible); void (*update_lookup_table) ( IBusDbusInputContext *object, GVariant *arg_table, gboolean arg_visible); void (*update_preedit_text) ( IBusDbusInputContext *object, GVariant *arg_text, guint arg_cursor_pos, gboolean arg_visible); void (*update_preedit_text_with_mode) ( IBusDbusInputContext *object, GVariant *arg_text, guint arg_cursor_pos, gboolean arg_visible, guint arg_mode); void (*update_property) ( IBusDbusInputContext *object, GVariant *arg_prop); }; GType ibus_dbus_input_context_get_type (void) G_GNUC_CONST; GDBusInterfaceInfo *ibus_dbus_input_context_interface_info (void); guint ibus_dbus_input_context_override_properties (GObjectClass *klass, guint property_id_begin); /* D-Bus method call completion functions: */ void ibus_dbus_input_context_complete_process_key_event ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, gboolean handled); void ibus_dbus_input_context_complete_set_cursor_location ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); void ibus_dbus_input_context_complete_set_cursor_location_relative ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); void ibus_dbus_input_context_complete_process_hand_writing_event ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); void ibus_dbus_input_context_complete_cancel_hand_writing ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); void ibus_dbus_input_context_complete_focus_in ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); void ibus_dbus_input_context_complete_focus_out ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); void ibus_dbus_input_context_complete_reset ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); void ibus_dbus_input_context_complete_set_capabilities ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); void ibus_dbus_input_context_complete_property_activate ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); void ibus_dbus_input_context_complete_set_engine ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); void ibus_dbus_input_context_complete_get_engine ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, GVariant *desc); void ibus_dbus_input_context_complete_set_surrounding_text ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation); /* D-Bus signal emissions functions: */ void ibus_dbus_input_context_emit_commit_text ( IBusDbusInputContext *object, GVariant *arg_text); void ibus_dbus_input_context_emit_forward_key_event ( IBusDbusInputContext *object, guint arg_keyval, guint arg_keycode, guint arg_state); void ibus_dbus_input_context_emit_update_preedit_text ( IBusDbusInputContext *object, GVariant *arg_text, guint arg_cursor_pos, gboolean arg_visible); void ibus_dbus_input_context_emit_update_preedit_text_with_mode ( IBusDbusInputContext *object, GVariant *arg_text, guint arg_cursor_pos, gboolean arg_visible, guint arg_mode); void ibus_dbus_input_context_emit_show_preedit_text ( IBusDbusInputContext *object); void ibus_dbus_input_context_emit_hide_preedit_text ( IBusDbusInputContext *object); void ibus_dbus_input_context_emit_update_auxiliary_text ( IBusDbusInputContext *object, GVariant *arg_text, gboolean arg_visible); void ibus_dbus_input_context_emit_show_auxiliary_text ( IBusDbusInputContext *object); void ibus_dbus_input_context_emit_hide_auxiliary_text ( IBusDbusInputContext *object); void ibus_dbus_input_context_emit_update_lookup_table ( IBusDbusInputContext *object, GVariant *arg_table, gboolean arg_visible); void ibus_dbus_input_context_emit_show_lookup_table ( IBusDbusInputContext *object); void ibus_dbus_input_context_emit_hide_lookup_table ( IBusDbusInputContext *object); void ibus_dbus_input_context_emit_page_up_lookup_table ( IBusDbusInputContext *object); void ibus_dbus_input_context_emit_page_down_lookup_table ( IBusDbusInputContext *object); void ibus_dbus_input_context_emit_cursor_up_lookup_table ( IBusDbusInputContext *object); void ibus_dbus_input_context_emit_cursor_down_lookup_table ( IBusDbusInputContext *object); void ibus_dbus_input_context_emit_register_properties ( IBusDbusInputContext *object, GVariant *arg_props); void ibus_dbus_input_context_emit_update_property ( IBusDbusInputContext *object, GVariant *arg_prop); /* D-Bus method calls: */ void ibus_dbus_input_context_call_process_key_event ( IBusDbusInputContext *proxy, guint arg_keyval, guint arg_keycode, guint arg_state, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_process_key_event_finish ( IBusDbusInputContext *proxy, gboolean *out_handled, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_process_key_event_sync ( IBusDbusInputContext *proxy, guint arg_keyval, guint arg_keycode, guint arg_state, gboolean *out_handled, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_set_cursor_location ( IBusDbusInputContext *proxy, gint arg_x, gint arg_y, gint arg_w, gint arg_h, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_set_cursor_location_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_set_cursor_location_sync ( IBusDbusInputContext *proxy, gint arg_x, gint arg_y, gint arg_w, gint arg_h, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_set_cursor_location_relative ( IBusDbusInputContext *proxy, gint arg_x, gint arg_y, gint arg_w, gint arg_h, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_set_cursor_location_relative_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_set_cursor_location_relative_sync ( IBusDbusInputContext *proxy, gint arg_x, gint arg_y, gint arg_w, gint arg_h, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_process_hand_writing_event ( IBusDbusInputContext *proxy, GVariant *arg_coordinates, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_process_hand_writing_event_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_process_hand_writing_event_sync ( IBusDbusInputContext *proxy, GVariant *arg_coordinates, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_cancel_hand_writing ( IBusDbusInputContext *proxy, guint arg_n_strokes, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_cancel_hand_writing_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_cancel_hand_writing_sync ( IBusDbusInputContext *proxy, guint arg_n_strokes, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_focus_in ( IBusDbusInputContext *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_focus_in_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_focus_in_sync ( IBusDbusInputContext *proxy, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_focus_out ( IBusDbusInputContext *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_focus_out_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_focus_out_sync ( IBusDbusInputContext *proxy, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_reset ( IBusDbusInputContext *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_reset_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_reset_sync ( IBusDbusInputContext *proxy, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_set_capabilities ( IBusDbusInputContext *proxy, guint arg_caps, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_set_capabilities_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_set_capabilities_sync ( IBusDbusInputContext *proxy, guint arg_caps, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_property_activate ( IBusDbusInputContext *proxy, const gchar *arg_name, guint arg_state, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_property_activate_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_property_activate_sync ( IBusDbusInputContext *proxy, const gchar *arg_name, guint arg_state, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_set_engine ( IBusDbusInputContext *proxy, const gchar *arg_name, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_set_engine_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_set_engine_sync ( IBusDbusInputContext *proxy, const gchar *arg_name, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_get_engine ( IBusDbusInputContext *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_get_engine_finish ( IBusDbusInputContext *proxy, GVariant **out_desc, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_get_engine_sync ( IBusDbusInputContext *proxy, GVariant **out_desc, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_call_set_surrounding_text ( IBusDbusInputContext *proxy, GVariant *arg_text, guint arg_cursor_pos, guint arg_anchor_pos, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_input_context_call_set_surrounding_text_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_input_context_call_set_surrounding_text_sync ( IBusDbusInputContext *proxy, GVariant *arg_text, guint arg_cursor_pos, guint arg_anchor_pos, GCancellable *cancellable, GError **error); /* D-Bus property accessors: */ GVariant *ibus_dbus_input_context_get_content_type (IBusDbusInputContext *object); GVariant *ibus_dbus_input_context_dup_content_type (IBusDbusInputContext *object); void ibus_dbus_input_context_set_content_type (IBusDbusInputContext *object, GVariant *value); GVariant *ibus_dbus_input_context_get_client_commit_preedit (IBusDbusInputContext *object); GVariant *ibus_dbus_input_context_dup_client_commit_preedit (IBusDbusInputContext *object); void ibus_dbus_input_context_set_client_commit_preedit (IBusDbusInputContext *object, GVariant *value); /* ---- */ #define IBUS_DBUS_TYPE_INPUT_CONTEXT_PROXY (ibus_dbus_input_context_proxy_get_type ()) #define IBUS_DBUS_INPUT_CONTEXT_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IBUS_DBUS_TYPE_INPUT_CONTEXT_PROXY, IBusDbusInputContextProxy)) #define IBUS_DBUS_INPUT_CONTEXT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), IBUS_DBUS_TYPE_INPUT_CONTEXT_PROXY, IBusDbusInputContextProxyClass)) #define IBUS_DBUS_INPUT_CONTEXT_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), IBUS_DBUS_TYPE_INPUT_CONTEXT_PROXY, IBusDbusInputContextProxyClass)) #define IBUS_DBUS_IS_INPUT_CONTEXT_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), IBUS_DBUS_TYPE_INPUT_CONTEXT_PROXY)) #define IBUS_DBUS_IS_INPUT_CONTEXT_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), IBUS_DBUS_TYPE_INPUT_CONTEXT_PROXY)) typedef struct _IBusDbusInputContextProxy IBusDbusInputContextProxy; typedef struct _IBusDbusInputContextProxyClass IBusDbusInputContextProxyClass; typedef struct _IBusDbusInputContextProxyPrivate IBusDbusInputContextProxyPrivate; struct _IBusDbusInputContextProxy { /*< private >*/ GDBusProxy parent_instance; IBusDbusInputContextProxyPrivate *priv; }; struct _IBusDbusInputContextProxyClass { GDBusProxyClass parent_class; }; GType ibus_dbus_input_context_proxy_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusDbusInputContextProxy, g_object_unref) #endif void ibus_dbus_input_context_proxy_new ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); IBusDbusInputContext *ibus_dbus_input_context_proxy_new_finish ( GAsyncResult *res, GError **error); IBusDbusInputContext *ibus_dbus_input_context_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); void ibus_dbus_input_context_proxy_new_for_bus ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); IBusDbusInputContext *ibus_dbus_input_context_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error); IBusDbusInputContext *ibus_dbus_input_context_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); /* ---- */ #define IBUS_DBUS_TYPE_INPUT_CONTEXT_SKELETON (ibus_dbus_input_context_skeleton_get_type ()) #define IBUS_DBUS_INPUT_CONTEXT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IBUS_DBUS_TYPE_INPUT_CONTEXT_SKELETON, IBusDbusInputContextSkeleton)) #define IBUS_DBUS_INPUT_CONTEXT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), IBUS_DBUS_TYPE_INPUT_CONTEXT_SKELETON, IBusDbusInputContextSkeletonClass)) #define IBUS_DBUS_INPUT_CONTEXT_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), IBUS_DBUS_TYPE_INPUT_CONTEXT_SKELETON, IBusDbusInputContextSkeletonClass)) #define IBUS_DBUS_IS_INPUT_CONTEXT_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), IBUS_DBUS_TYPE_INPUT_CONTEXT_SKELETON)) #define IBUS_DBUS_IS_INPUT_CONTEXT_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), IBUS_DBUS_TYPE_INPUT_CONTEXT_SKELETON)) typedef struct _IBusDbusInputContextSkeleton IBusDbusInputContextSkeleton; typedef struct _IBusDbusInputContextSkeletonClass IBusDbusInputContextSkeletonClass; typedef struct _IBusDbusInputContextSkeletonPrivate IBusDbusInputContextSkeletonPrivate; struct _IBusDbusInputContextSkeleton { /*< private >*/ GDBusInterfaceSkeleton parent_instance; IBusDbusInputContextSkeletonPrivate *priv; }; struct _IBusDbusInputContextSkeletonClass { GDBusInterfaceSkeletonClass parent_class; }; GType ibus_dbus_input_context_skeleton_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusDbusInputContextSkeleton, g_object_unref) #endif IBusDbusInputContext *ibus_dbus_input_context_skeleton_new (void); /* ------------------------------------------------------------------------ */ /* Declarations for org.freedesktop.IBus.Service */ #define IBUS_DBUS_TYPE_SERVICE (ibus_dbus_service_get_type ()) #define IBUS_DBUS_SERVICE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IBUS_DBUS_TYPE_SERVICE, IBusDbusService)) #define IBUS_DBUS_IS_SERVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), IBUS_DBUS_TYPE_SERVICE)) #define IBUS_DBUS_SERVICE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), IBUS_DBUS_TYPE_SERVICE, IBusDbusServiceIface)) struct _IBusDbusService; typedef struct _IBusDbusService IBusDbusService; typedef struct _IBusDbusServiceIface IBusDbusServiceIface; struct _IBusDbusServiceIface { GTypeInterface parent_iface; gboolean (*handle_destroy) ( IBusDbusService *object, GDBusMethodInvocation *invocation); }; GType ibus_dbus_service_get_type (void) G_GNUC_CONST; GDBusInterfaceInfo *ibus_dbus_service_interface_info (void); guint ibus_dbus_service_override_properties (GObjectClass *klass, guint property_id_begin); /* D-Bus method call completion functions: */ void ibus_dbus_service_complete_destroy ( IBusDbusService *object, GDBusMethodInvocation *invocation); /* D-Bus method calls: */ void ibus_dbus_service_call_destroy ( IBusDbusService *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); gboolean ibus_dbus_service_call_destroy_finish ( IBusDbusService *proxy, GAsyncResult *res, GError **error); gboolean ibus_dbus_service_call_destroy_sync ( IBusDbusService *proxy, GCancellable *cancellable, GError **error); /* ---- */ #define IBUS_DBUS_TYPE_SERVICE_PROXY (ibus_dbus_service_proxy_get_type ()) #define IBUS_DBUS_SERVICE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IBUS_DBUS_TYPE_SERVICE_PROXY, IBusDbusServiceProxy)) #define IBUS_DBUS_SERVICE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), IBUS_DBUS_TYPE_SERVICE_PROXY, IBusDbusServiceProxyClass)) #define IBUS_DBUS_SERVICE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), IBUS_DBUS_TYPE_SERVICE_PROXY, IBusDbusServiceProxyClass)) #define IBUS_DBUS_IS_SERVICE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), IBUS_DBUS_TYPE_SERVICE_PROXY)) #define IBUS_DBUS_IS_SERVICE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), IBUS_DBUS_TYPE_SERVICE_PROXY)) typedef struct _IBusDbusServiceProxy IBusDbusServiceProxy; typedef struct _IBusDbusServiceProxyClass IBusDbusServiceProxyClass; typedef struct _IBusDbusServiceProxyPrivate IBusDbusServiceProxyPrivate; struct _IBusDbusServiceProxy { /*< private >*/ GDBusProxy parent_instance; IBusDbusServiceProxyPrivate *priv; }; struct _IBusDbusServiceProxyClass { GDBusProxyClass parent_class; }; GType ibus_dbus_service_proxy_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusDbusServiceProxy, g_object_unref) #endif void ibus_dbus_service_proxy_new ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); IBusDbusService *ibus_dbus_service_proxy_new_finish ( GAsyncResult *res, GError **error); IBusDbusService *ibus_dbus_service_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); void ibus_dbus_service_proxy_new_for_bus ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); IBusDbusService *ibus_dbus_service_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error); IBusDbusService *ibus_dbus_service_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error); /* ---- */ #define IBUS_DBUS_TYPE_SERVICE_SKELETON (ibus_dbus_service_skeleton_get_type ()) #define IBUS_DBUS_SERVICE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), IBUS_DBUS_TYPE_SERVICE_SKELETON, IBusDbusServiceSkeleton)) #define IBUS_DBUS_SERVICE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), IBUS_DBUS_TYPE_SERVICE_SKELETON, IBusDbusServiceSkeletonClass)) #define IBUS_DBUS_SERVICE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), IBUS_DBUS_TYPE_SERVICE_SKELETON, IBusDbusServiceSkeletonClass)) #define IBUS_DBUS_IS_SERVICE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), IBUS_DBUS_TYPE_SERVICE_SKELETON)) #define IBUS_DBUS_IS_SERVICE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), IBUS_DBUS_TYPE_SERVICE_SKELETON)) typedef struct _IBusDbusServiceSkeleton IBusDbusServiceSkeleton; typedef struct _IBusDbusServiceSkeletonClass IBusDbusServiceSkeletonClass; typedef struct _IBusDbusServiceSkeletonPrivate IBusDbusServiceSkeletonPrivate; struct _IBusDbusServiceSkeleton { /*< private >*/ GDBusInterfaceSkeleton parent_instance; IBusDbusServiceSkeletonPrivate *priv; }; struct _IBusDbusServiceSkeletonClass { GDBusInterfaceSkeletonClass parent_class; }; GType ibus_dbus_service_skeleton_get_type (void) G_GNUC_CONST; #if GLIB_CHECK_VERSION(2, 44, 0) G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusDbusServiceSkeleton, g_object_unref) #endif IBusDbusService *ibus_dbus_service_skeleton_new (void); G_END_DECLS #endif /* ____IBUS_PORTAL_DBUS_H__ */ ibus-1.5.22/portal/portal.c0000644000000000000000000005712013623750431012411 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2017-2019 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 "ibus-portal-dbus.h" typedef struct _IBusPortal IBusPortal; typedef struct _IBusPortalClass IBusPortalClass; typedef struct _IBusPortalContext IBusPortalContext; typedef struct _IBusPortalContextClass IBusPortalContextClass; struct _IBusPortalContext { IBusDbusInputContextSkeleton parent_instance; IBusInputContext *context; guint id; char *owner; char *object_path; IBusDbusService *service; }; struct _IBusPortalContextClass { IBusDbusInputContextSkeletonClass parent_class; }; struct _IBusPortal { IBusDbusPortalSkeleton parent_instance; }; struct _IBusPortalClass { IBusDbusPortalSkeletonClass parent_class; }; enum { PROP_CONTENT_TYPE = 1, PROP_CLIENT_COMMIT_PREEDIT, N_PROPERTIES }; static GMainLoop *loop = NULL; static IBusBus *ibus_bus; static IBusPortal *ibus_portal = NULL; static gboolean opt_verbose; static gboolean opt_replace; static GList *all_contexts = NULL; static guint next_context_id; GType ibus_portal_context_get_type (void) G_GNUC_CONST; static void ibus_portal_context_iface_init (IBusDbusInputContextIface *iface); static void portal_context_g_signal (GDBusProxy *proxy, const gchar *sender_name, const gchar *signal_name, GVariant *parameters, IBusPortalContext *portal_context); G_DEFINE_TYPE_WITH_CODE (IBusPortalContext, ibus_portal_context, IBUS_DBUS_TYPE_INPUT_CONTEXT_SKELETON, G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_INPUT_CONTEXT, ibus_portal_context_iface_init)); static void _forward_method_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { GDBusMethodInvocation *invocation = user_data; GError *error = NULL; GVariant *variant = g_dbus_proxy_call_finish ((GDBusProxy *) source_object, res, &error); if (variant == NULL) { g_dbus_method_invocation_return_gerror (invocation, error); g_error_free (error); return; } g_dbus_method_invocation_return_value (invocation, variant); } static gboolean _forward_method (IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { IBusPortalContext *portal_context = (IBusPortalContext *)object; GDBusMessage *message = g_dbus_method_invocation_get_message (invocation); g_dbus_proxy_call (G_DBUS_PROXY (portal_context->context), g_dbus_method_invocation_get_method_name (invocation), g_dbus_message_get_body (message), G_DBUS_CALL_FLAGS_NONE, -1, NULL, /* cancellable */ _forward_method_cb, invocation); return TRUE; } static gboolean ibus_dbus_context_cancel_hand_writing (IBusDbusInputContext *object, GDBusMethodInvocation *invocation, guint arg_n_strokes) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_focus_in (IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_focus_out (IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_get_engine (IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_process_hand_writing_event (IBusDbusInputContext *object, GDBusMethodInvocation *invocation, GVariant *arg_coordinates) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_process_key_event (IBusDbusInputContext *object, GDBusMethodInvocation *invocation, guint arg_keyval, guint arg_keycode, guint arg_state) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_property_activate (IBusDbusInputContext *object, GDBusMethodInvocation *invocation, const gchar *arg_name, guint arg_state) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_reset (IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_set_capabilities (IBusDbusInputContext *object, GDBusMethodInvocation *invocation, guint arg_caps) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_set_cursor_location (IBusDbusInputContext *object, GDBusMethodInvocation *invocation, gint arg_x, gint arg_y, gint arg_w, gint arg_h) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_set_cursor_location_relative (IBusDbusInputContext *object, GDBusMethodInvocation *invocation, gint arg_x, gint arg_y, gint arg_w, gint arg_h) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_set_engine (IBusDbusInputContext *object, GDBusMethodInvocation *invocation, const gchar *arg_name) { return _forward_method (object, invocation); } static gboolean ibus_dbus_context_set_surrounding_text (IBusDbusInputContext *object, GDBusMethodInvocation *invocation, GVariant *arg_text, guint arg_cursor_pos, guint arg_anchor_pos) { return _forward_method (object, invocation); } static void ibus_portal_context_iface_init (IBusDbusInputContextIface *iface) { iface->handle_cancel_hand_writing = ibus_dbus_context_cancel_hand_writing; iface->handle_focus_in = ibus_dbus_context_focus_in; iface->handle_focus_out = ibus_dbus_context_focus_out; iface->handle_get_engine = ibus_dbus_context_get_engine; iface->handle_process_hand_writing_event = ibus_dbus_context_process_hand_writing_event; iface->handle_process_key_event = ibus_dbus_context_process_key_event; iface->handle_property_activate = ibus_dbus_context_property_activate; iface->handle_reset = ibus_dbus_context_reset; iface->handle_set_capabilities = ibus_dbus_context_set_capabilities; iface->handle_set_cursor_location = ibus_dbus_context_set_cursor_location; iface->handle_set_cursor_location_relative = ibus_dbus_context_set_cursor_location_relative; iface->handle_set_engine = ibus_dbus_context_set_engine; iface->handle_set_surrounding_text = ibus_dbus_context_set_surrounding_text; } static void ibus_portal_context_init (IBusPortalContext *portal_context) { } static void ibus_portal_context_finalize (GObject *object) { IBusPortalContext *portal_context = (IBusPortalContext *)object; all_contexts = g_list_remove (all_contexts, portal_context); g_dbus_interface_skeleton_unexport ( G_DBUS_INTERFACE_SKELETON (portal_context->service)); g_dbus_interface_skeleton_unexport ( G_DBUS_INTERFACE_SKELETON (portal_context)); g_free (portal_context->owner); g_free (portal_context->object_path); g_object_unref (portal_context->service); g_signal_handlers_disconnect_by_func ( portal_context->context, G_CALLBACK(portal_context_g_signal), portal_context); g_object_unref (portal_context->context); G_OBJECT_CLASS (ibus_portal_context_parent_class)->finalize (object); } static void ibus_portal_context_set_property (IBusPortalContext *portal_context, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_CONTENT_TYPE: g_dbus_proxy_call (G_DBUS_PROXY (portal_context->context), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", IBUS_INTERFACE_INPUT_CONTEXT, "ContentType", g_value_get_variant (value)), G_DBUS_CALL_FLAGS_NONE, -1, NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); break; case PROP_CLIENT_COMMIT_PREEDIT: g_dbus_proxy_call (G_DBUS_PROXY (portal_context->context), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", IBUS_INTERFACE_INPUT_CONTEXT, "ClientCommitPreedit", g_value_get_variant (value)), G_DBUS_CALL_FLAGS_NONE, -1, NULL, /* cancellable */ NULL, /* callback */ NULL /* user_data */ ); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (portal_context, prop_id, pspec); } } static void ibus_portal_context_get_property (IBusPortalContext *portal_context, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_CONTENT_TYPE: case PROP_CLIENT_COMMIT_PREEDIT: g_warning ("No support for setting content type"); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (portal_context, prop_id, pspec); } } static gboolean ibus_portal_context_g_authorize_method (GDBusInterfaceSkeleton *interface, GDBusMethodInvocation *invocation) { IBusPortalContext *portal_context = (IBusPortalContext *)interface; if (g_strcmp0 (g_dbus_method_invocation_get_sender (invocation), portal_context->owner) == 0) { return TRUE; } g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Access denied"); return FALSE; } static void ibus_portal_context_class_init (IBusPortalContextClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = ibus_portal_context_finalize; gobject_class->set_property = (GObjectSetPropertyFunc) ibus_portal_context_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_portal_context_get_property; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS(klass); skeleton_class->g_authorize_method = ibus_portal_context_g_authorize_method; ibus_dbus_input_context_override_properties (gobject_class, PROP_CONTENT_TYPE); } static void portal_context_g_signal (GDBusProxy *proxy, const gchar *sender_name, const gchar *signal_name, GVariant *parameters, IBusPortalContext *portal_context) { GError *error = NULL; GDBusConnection *connection; if (g_strcmp0 (sender_name, IBUS_SERVICE_IBUS) != 0) return; connection = g_dbus_interface_skeleton_get_connection ( G_DBUS_INTERFACE_SKELETON (portal_context)); if (!g_dbus_connection_emit_signal (connection, portal_context->owner, portal_context->object_path, IBUS_INTERFACE_INPUT_CONTEXT, signal_name, parameters, &error)) { g_warning ("Unable to emit signal %s: %s", signal_name, error->message); g_error_free (error); } g_signal_stop_emission_by_name (proxy, "g-signal"); } static gboolean ibus_portal_context_handle_destroy (IBusDbusService *object, GDBusMethodInvocation *invocation, IBusPortalContext *portal_context) { g_object_unref (portal_context); return FALSE; } static IBusPortalContext * ibus_portal_context_new (IBusInputContext *context, GDBusConnection *connection, const char *owner, GError **error) { IBusPortalContext *portal_context = g_object_new (ibus_portal_context_get_type (), NULL); g_signal_connect (context, "g-signal", G_CALLBACK(portal_context_g_signal), portal_context); portal_context->id = ++next_context_id; portal_context->context = g_object_ref (context); portal_context->owner = g_strdup (owner); portal_context->object_path = g_strdup_printf (IBUS_PATH_INPUT_CONTEXT, portal_context->id); portal_context->service = ibus_dbus_service_skeleton_new (); g_signal_connect (portal_context->service, "handle-destroy", G_CALLBACK (ibus_portal_context_handle_destroy), portal_context); if (!g_dbus_interface_skeleton_export ( G_DBUS_INTERFACE_SKELETON (portal_context->service), connection, portal_context->object_path, error) || !g_dbus_interface_skeleton_export ( G_DBUS_INTERFACE_SKELETON (portal_context), connection, portal_context->object_path, error)) { g_object_unref (portal_context); return NULL; } all_contexts = g_list_prepend (all_contexts, portal_context); return portal_context; } GType ibus_portal_get_type (void) G_GNUC_CONST; static void ibus_portal_iface_init (IBusDbusPortalIface *iface); G_DEFINE_TYPE_WITH_CODE (IBusPortal, ibus_portal, IBUS_DBUS_TYPE_PORTAL_SKELETON, G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_PORTAL, ibus_portal_iface_init)); static void create_input_context_done (IBusBus *bus, GAsyncResult *res, GDBusMethodInvocation *invocation) { GError *error = NULL; IBusInputContext *context; IBusPortalContext *portal_context; context = ibus_bus_create_input_context_async_finish (ibus_bus, res, &error); if (context == NULL) { g_dbus_method_invocation_return_gerror (invocation, error); g_error_free (error); return; } portal_context = ibus_portal_context_new ( context, g_dbus_method_invocation_get_connection (invocation), g_dbus_method_invocation_get_sender (invocation), &error); g_object_unref (context); if (portal_context == NULL) { g_dbus_method_invocation_return_gerror (invocation, error); g_error_free (error); g_object_unref (portal_context); return; } ibus_dbus_portal_complete_create_input_context ( IBUS_DBUS_PORTAL(ibus_portal), invocation, portal_context->object_path); } static gboolean ibus_portal_handle_create_input_context (IBusDbusPortal *object, GDBusMethodInvocation *invocation, const gchar *arg_client_name) { ibus_bus_create_input_context_async ( ibus_bus, arg_client_name, -1, NULL, (GAsyncReadyCallback)create_input_context_done, invocation); return TRUE; } static void ibus_portal_iface_init (IBusDbusPortalIface *iface) { iface->handle_create_input_context = ibus_portal_handle_create_input_context; } static void ibus_portal_init (IBusPortal *portal) { } static void ibus_portal_class_init (IBusPortalClass *klass) { } 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 }, { "verbose", 'v', 0, G_OPTION_ARG_NONE, &opt_verbose, "verbose.", NULL }, { "replace", 'r', 0, G_OPTION_ARG_NONE, &opt_replace, "Replace.", NULL }, { NULL }, }; static void on_bus_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { GError *error = NULL; ibus_portal = g_object_new (ibus_portal_get_type (), NULL); if (!g_dbus_interface_skeleton_export ( G_DBUS_INTERFACE_SKELETON (ibus_portal), connection, IBUS_PATH_IBUS, &error)) { g_warning ("Error exporting portal: %s", error->message); g_error_free (error); return; } } static void on_name_acquired (GDBusConnection *connection, const gchar *name, gpointer user_data) { } static void on_name_lost (GDBusConnection *connection, const gchar *name, gpointer user_data) { g_main_loop_quit (loop); } static void name_owner_changed (GDBusConnection *connection, const gchar *sender_name, const gchar *object_path, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, gpointer user_data) { const char *name, *from, *to; g_variant_get (parameters, "(sss)", &name, &from, &to); if (name[0] == ':' && g_strcmp0 (name, from) == 0 && g_strcmp0 (to, "") == 0) { GList *l, *next; /* Client disconnected, free any input contexts it may have */ for (l = all_contexts; l != NULL; l = next) { IBusPortalContext *portal_context = l->data; next = l->next; if (g_strcmp0 (portal_context->owner, name) == 0) { g_object_unref (portal_context); } } } } static void _bus_disconnected_cb (IBusBus *ibusbus) { g_main_loop_quit (loop); } gint main (gint argc, gchar **argv) { GDBusConnection *session_bus = NULL; guint owner_id; setlocale (LC_ALL, ""); GOptionContext *context = g_option_context_new ("- ibus daemon"); g_option_context_add_main_entries (context, entries, "ibus-daemon"); 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); } /* Avoid even loading gvfs to avoid accidental confusion */ g_setenv ("GIO_USE_VFS", "local", TRUE); ibus_init (); ibus_set_log_handler (opt_verbose); ibus_bus = ibus_bus_new (); if (!ibus_bus_is_connected (ibus_bus)) { g_printerr ("Not connected to the ibus bus\n"); exit (1); } g_signal_connect (ibus_bus, "disconnected", G_CALLBACK (_bus_disconnected_cb), NULL); loop = g_main_loop_new (NULL, FALSE); session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); if (session_bus == NULL) { g_printerr ("No session bus: %s", error->message); exit (-1); } g_dbus_connection_signal_subscribe (session_bus, "org.freedesktop.DBus", "org.freedesktop.DBus", "NameOwnerChanged", "/org/freedesktop/DBus", NULL, G_DBUS_SIGNAL_FLAGS_NONE, name_owner_changed, NULL, NULL); owner_id = g_bus_own_name (G_BUS_TYPE_SESSION, IBUS_SERVICE_PORTAL, G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT | (opt_replace ? G_BUS_NAME_OWNER_FLAGS_REPLACE : 0), on_bus_acquired, on_name_acquired, on_name_lost, NULL, NULL); g_main_loop_run (loop); g_bus_unown_name (owner_id); g_main_loop_unref (loop); return 0; } ibus-1.5.22/portal/org.freedesktop.portal.IBus.service.in0000644000000000000000000000011713623750431020167 00000000000000[D-BUS Service] Name=org.freedesktop.portal.IBus Exec=@libexecdir@/ibus-portal ibus-1.5.22/portal/ibus-portal-dbus.c0000644000000000000000000074655313623751575014335 00000000000000/* * This file is generated by gdbus-codegen, do not modify it. * * The license of this code is the same as for the D-Bus interface description * it was derived from. Note that it links to GLib, so must comply with the * LGPL linking clauses. */ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include "./ibus-portal-dbus.h" #include #ifdef G_OS_UNIX # include #endif typedef struct { GDBusArgInfo parent_struct; gboolean use_gvariant; } _ExtendedGDBusArgInfo; typedef struct { GDBusMethodInfo parent_struct; const gchar *signal_name; gboolean pass_fdlist; } _ExtendedGDBusMethodInfo; typedef struct { GDBusSignalInfo parent_struct; const gchar *signal_name; } _ExtendedGDBusSignalInfo; typedef struct { GDBusPropertyInfo parent_struct; const gchar *hyphen_name; guint use_gvariant : 1; guint emits_changed_signal : 1; } _ExtendedGDBusPropertyInfo; typedef struct { GDBusInterfaceInfo parent_struct; const gchar *hyphen_name; } _ExtendedGDBusInterfaceInfo; typedef struct { const _ExtendedGDBusPropertyInfo *info; guint prop_id; GValue orig_value; /* the value before the change */ } ChangedProperty; static void _changed_property_free (ChangedProperty *data) { g_value_unset (&data->orig_value); g_free (data); } static gboolean _g_strv_equal0 (gchar **a, gchar **b) { gboolean ret = FALSE; guint n; if (a == NULL && b == NULL) { ret = TRUE; goto out; } if (a == NULL || b == NULL) goto out; if (g_strv_length (a) != g_strv_length (b)) goto out; for (n = 0; a[n] != NULL; n++) if (g_strcmp0 (a[n], b[n]) != 0) goto out; ret = TRUE; out: return ret; } static gboolean _g_variant_equal0 (GVariant *a, GVariant *b) { gboolean ret = FALSE; if (a == NULL && b == NULL) { ret = TRUE; goto out; } if (a == NULL || b == NULL) goto out; ret = g_variant_equal (a, b); out: return ret; } G_GNUC_UNUSED static gboolean _g_value_equal (const GValue *a, const GValue *b) { gboolean ret = FALSE; g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b)); switch (G_VALUE_TYPE (a)) { case G_TYPE_BOOLEAN: ret = (g_value_get_boolean (a) == g_value_get_boolean (b)); break; case G_TYPE_UCHAR: ret = (g_value_get_uchar (a) == g_value_get_uchar (b)); break; case G_TYPE_INT: ret = (g_value_get_int (a) == g_value_get_int (b)); break; case G_TYPE_UINT: ret = (g_value_get_uint (a) == g_value_get_uint (b)); break; case G_TYPE_INT64: ret = (g_value_get_int64 (a) == g_value_get_int64 (b)); break; case G_TYPE_UINT64: ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b)); break; case G_TYPE_DOUBLE: { /* Avoid -Wfloat-equal warnings by doing a direct bit compare */ gdouble da = g_value_get_double (a); gdouble db = g_value_get_double (b); ret = memcmp (&da, &db, sizeof (gdouble)) == 0; } break; case G_TYPE_STRING: ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0); break; case G_TYPE_VARIANT: ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b)); break; default: if (G_VALUE_TYPE (a) == G_TYPE_STRV) ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b)); else g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a))); break; } return ret; } /* ------------------------------------------------------------------------ * Code for interface org.freedesktop.IBus.Portal * ------------------------------------------------------------------------ */ /** * SECTION:IBusDbusPortal * @title: IBusDbusPortal * @short_description: Generated C code for the org.freedesktop.IBus.Portal D-Bus interface * * This section contains code for working with the org.freedesktop.IBus.Portal D-Bus interface in C. */ /* ---- Introspection data for org.freedesktop.IBus.Portal ---- */ static const _ExtendedGDBusArgInfo _ibus_dbus_portal_method_info_create_input_context_IN_ARG_client_name = { { -1, (gchar *) "client_name", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_portal_method_info_create_input_context_IN_ARG_pointers[] = { &_ibus_dbus_portal_method_info_create_input_context_IN_ARG_client_name.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _ibus_dbus_portal_method_info_create_input_context_OUT_ARG_object_path = { { -1, (gchar *) "object_path", (gchar *) "o", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_portal_method_info_create_input_context_OUT_ARG_pointers[] = { &_ibus_dbus_portal_method_info_create_input_context_OUT_ARG_object_path.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _ibus_dbus_portal_method_info_create_input_context = { { -1, (gchar *) "CreateInputContext", (GDBusArgInfo **) &_ibus_dbus_portal_method_info_create_input_context_IN_ARG_pointers, (GDBusArgInfo **) &_ibus_dbus_portal_method_info_create_input_context_OUT_ARG_pointers, NULL }, "handle-create-input-context", FALSE }; static const GDBusMethodInfo * const _ibus_dbus_portal_method_info_pointers[] = { &_ibus_dbus_portal_method_info_create_input_context.parent_struct, NULL }; static const _ExtendedGDBusInterfaceInfo _ibus_dbus_portal_interface_info = { { -1, (gchar *) "org.freedesktop.IBus.Portal", (GDBusMethodInfo **) &_ibus_dbus_portal_method_info_pointers, NULL, NULL, NULL }, "portal", }; /** * ibus_dbus_portal_interface_info: * * Gets a machine-readable description of the org.freedesktop.IBus.Portal D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * ibus_dbus_portal_interface_info (void) { return (GDBusInterfaceInfo *) &_ibus_dbus_portal_interface_info.parent_struct; } /** * ibus_dbus_portal_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #IBusDbusPortal interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint ibus_dbus_portal_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * IBusDbusPortal: * * Abstract interface type for the D-Bus interface org.freedesktop.IBus.Portal. */ /** * IBusDbusPortalIface: * @parent_iface: The parent interface. * @handle_create_input_context: Handler for the #IBusDbusPortal::handle-create-input-context signal. * * Virtual table for the D-Bus interface org.freedesktop.IBus.Portal. */ typedef IBusDbusPortalIface IBusDbusPortalInterface; G_DEFINE_INTERFACE (IBusDbusPortal, ibus_dbus_portal, G_TYPE_OBJECT) static void ibus_dbus_portal_default_init (IBusDbusPortalIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** * IBusDbusPortal::handle-create-input-context: * @object: A #IBusDbusPortal. * @invocation: A #GDBusMethodInvocation. * @arg_client_name: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the CreateInputContext() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_portal_complete_create_input_context() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-create-input-context", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusPortalIface, handle_create_input_context), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); } /** * ibus_dbus_portal_call_create_input_context: * @proxy: A #IBusDbusPortalProxy. * @arg_client_name: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the CreateInputContext() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_portal_call_create_input_context_finish() to get the result of the operation. * * See ibus_dbus_portal_call_create_input_context_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_portal_call_create_input_context ( IBusDbusPortal *proxy, const gchar *arg_client_name, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "CreateInputContext", g_variant_new ("(s)", arg_client_name), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_portal_call_create_input_context_finish: * @proxy: A #IBusDbusPortalProxy. * @out_object_path: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_portal_call_create_input_context(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_portal_call_create_input_context(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_portal_call_create_input_context_finish ( IBusDbusPortal *proxy, gchar **out_object_path, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(o)", out_object_path); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_portal_call_create_input_context_sync: * @proxy: A #IBusDbusPortalProxy. * @arg_client_name: Argument to pass with the method invocation. * @out_object_path: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the CreateInputContext() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_portal_call_create_input_context() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_portal_call_create_input_context_sync ( IBusDbusPortal *proxy, const gchar *arg_client_name, gchar **out_object_path, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "CreateInputContext", g_variant_new ("(s)", arg_client_name), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(o)", out_object_path); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_portal_complete_create_input_context: * @object: A #IBusDbusPortal. * @invocation: (transfer full): A #GDBusMethodInvocation. * @object_path: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the CreateInputContext() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_portal_complete_create_input_context ( IBusDbusPortal *object, GDBusMethodInvocation *invocation, const gchar *object_path) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(o)", object_path)); } /* ------------------------------------------------------------------------ */ /** * IBusDbusPortalProxy: * * The #IBusDbusPortalProxy structure contains only private data and should only be accessed using the provided API. */ /** * IBusDbusPortalProxyClass: * @parent_class: The parent class. * * Class structure for #IBusDbusPortalProxy. */ struct _IBusDbusPortalProxyPrivate { GData *qdata; }; static void ibus_dbus_portal_proxy_iface_init (IBusDbusPortalIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (IBusDbusPortalProxy, ibus_dbus_portal_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (IBusDbusPortalProxy) G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_PORTAL, ibus_dbus_portal_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (IBusDbusPortalProxy, ibus_dbus_portal_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_PORTAL, ibus_dbus_portal_proxy_iface_init)) #endif static void ibus_dbus_portal_proxy_finalize (GObject *object) { IBusDbusPortalProxy *proxy = IBUS_DBUS_PORTAL_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (ibus_dbus_portal_proxy_parent_class)->finalize (object); } static void ibus_dbus_portal_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void ibus_dbus_portal_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void ibus_dbus_portal_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ibus_dbus_portal_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], IBUS_DBUS_TYPE_PORTAL); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, IBUS_DBUS_TYPE_PORTAL); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void ibus_dbus_portal_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { IBusDbusPortalProxy *proxy = IBUS_DBUS_PORTAL_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_portal_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_portal_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void ibus_dbus_portal_proxy_init (IBusDbusPortalProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = ibus_dbus_portal_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, IBUS_DBUS_TYPE_PORTAL_PROXY, IBusDbusPortalProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ibus_dbus_portal_interface_info ()); } static void ibus_dbus_portal_proxy_class_init (IBusDbusPortalProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = ibus_dbus_portal_proxy_finalize; gobject_class->get_property = ibus_dbus_portal_proxy_get_property; gobject_class->set_property = ibus_dbus_portal_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = ibus_dbus_portal_proxy_g_signal; proxy_class->g_properties_changed = ibus_dbus_portal_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (IBusDbusPortalProxyPrivate)); #endif } static void ibus_dbus_portal_proxy_iface_init (IBusDbusPortalIface *iface) { } /** * ibus_dbus_portal_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.freedesktop.IBus.Portal. See g_dbus_proxy_new() for more details. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_portal_proxy_new_finish() to get the result of the operation. * * See ibus_dbus_portal_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void ibus_dbus_portal_proxy_new ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (IBUS_DBUS_TYPE_PORTAL_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.Portal", NULL); } /** * ibus_dbus_portal_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_portal_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with ibus_dbus_portal_proxy_new(). * * Returns: (transfer full) (type IBusDbusPortalProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusPortal * ibus_dbus_portal_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return IBUS_DBUS_PORTAL (ret); else return NULL; } /** * ibus_dbus_portal_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.freedesktop.IBus.Portal. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See ibus_dbus_portal_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type IBusDbusPortalProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusPortal * ibus_dbus_portal_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (IBUS_DBUS_TYPE_PORTAL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.Portal", NULL); if (ret != NULL) return IBUS_DBUS_PORTAL (ret); else return NULL; } /** * ibus_dbus_portal_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like ibus_dbus_portal_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_portal_proxy_new_for_bus_finish() to get the result of the operation. * * See ibus_dbus_portal_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void ibus_dbus_portal_proxy_new_for_bus ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (IBUS_DBUS_TYPE_PORTAL_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.Portal", NULL); } /** * ibus_dbus_portal_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_portal_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with ibus_dbus_portal_proxy_new_for_bus(). * * Returns: (transfer full) (type IBusDbusPortalProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusPortal * ibus_dbus_portal_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return IBUS_DBUS_PORTAL (ret); else return NULL; } /** * ibus_dbus_portal_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like ibus_dbus_portal_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See ibus_dbus_portal_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type IBusDbusPortalProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusPortal * ibus_dbus_portal_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (IBUS_DBUS_TYPE_PORTAL_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.Portal", NULL); if (ret != NULL) return IBUS_DBUS_PORTAL (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * IBusDbusPortalSkeleton: * * The #IBusDbusPortalSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * IBusDbusPortalSkeletonClass: * @parent_class: The parent class. * * Class structure for #IBusDbusPortalSkeleton. */ struct _IBusDbusPortalSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _ibus_dbus_portal_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { IBusDbusPortalSkeleton *skeleton = IBUS_DBUS_PORTAL_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], IBUS_DBUS_TYPE_PORTAL); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, IBUS_DBUS_TYPE_PORTAL); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _ibus_dbus_portal_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { IBusDbusPortalSkeleton *skeleton = IBUS_DBUS_PORTAL_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_portal_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _ibus_dbus_portal_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { IBusDbusPortalSkeleton *skeleton = IBUS_DBUS_PORTAL_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_portal_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _ibus_dbus_portal_skeleton_vtable = { _ibus_dbus_portal_skeleton_handle_method_call, _ibus_dbus_portal_skeleton_handle_get_property, _ibus_dbus_portal_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * ibus_dbus_portal_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return ibus_dbus_portal_interface_info (); } static GDBusInterfaceVTable * ibus_dbus_portal_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_ibus_dbus_portal_skeleton_vtable; } static GVariant * ibus_dbus_portal_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { IBusDbusPortalSkeleton *skeleton = IBUS_DBUS_PORTAL_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_ibus_dbus_portal_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _ibus_dbus_portal_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _ibus_dbus_portal_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _ibus_dbus_portal_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.Portal", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void ibus_dbus_portal_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void ibus_dbus_portal_skeleton_iface_init (IBusDbusPortalIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (IBusDbusPortalSkeleton, ibus_dbus_portal_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (IBusDbusPortalSkeleton) G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_PORTAL, ibus_dbus_portal_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (IBusDbusPortalSkeleton, ibus_dbus_portal_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_PORTAL, ibus_dbus_portal_skeleton_iface_init)) #endif static void ibus_dbus_portal_skeleton_finalize (GObject *object) { IBusDbusPortalSkeleton *skeleton = IBUS_DBUS_PORTAL_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (ibus_dbus_portal_skeleton_parent_class)->finalize (object); } static void ibus_dbus_portal_skeleton_init (IBusDbusPortalSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = ibus_dbus_portal_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, IBUS_DBUS_TYPE_PORTAL_SKELETON, IBusDbusPortalSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void ibus_dbus_portal_skeleton_class_init (IBusDbusPortalSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = ibus_dbus_portal_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = ibus_dbus_portal_skeleton_dbus_interface_get_info; skeleton_class->get_properties = ibus_dbus_portal_skeleton_dbus_interface_get_properties; skeleton_class->flush = ibus_dbus_portal_skeleton_dbus_interface_flush; skeleton_class->get_vtable = ibus_dbus_portal_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (IBusDbusPortalSkeletonPrivate)); #endif } static void ibus_dbus_portal_skeleton_iface_init (IBusDbusPortalIface *iface) { } /** * ibus_dbus_portal_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.freedesktop.IBus.Portal. * * Returns: (transfer full) (type IBusDbusPortalSkeleton): The skeleton object. */ IBusDbusPortal * ibus_dbus_portal_skeleton_new (void) { return IBUS_DBUS_PORTAL (g_object_new (IBUS_DBUS_TYPE_PORTAL_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.freedesktop.IBus.InputContext * ------------------------------------------------------------------------ */ /** * SECTION:IBusDbusInputContext * @title: IBusDbusInputContext * @short_description: Generated C code for the org.freedesktop.IBus.InputContext D-Bus interface * * This section contains code for working with the org.freedesktop.IBus.InputContext D-Bus interface in C. */ /* ---- Introspection data for org.freedesktop.IBus.InputContext ---- */ static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_process_key_event_IN_ARG_keyval = { { -1, (gchar *) "keyval", (gchar *) "u", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_process_key_event_IN_ARG_keycode = { { -1, (gchar *) "keycode", (gchar *) "u", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_process_key_event_IN_ARG_state = { { -1, (gchar *) "state", (gchar *) "u", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_method_info_process_key_event_IN_ARG_pointers[] = { &_ibus_dbus_input_context_method_info_process_key_event_IN_ARG_keyval.parent_struct, &_ibus_dbus_input_context_method_info_process_key_event_IN_ARG_keycode.parent_struct, &_ibus_dbus_input_context_method_info_process_key_event_IN_ARG_state.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_process_key_event_OUT_ARG_handled = { { -1, (gchar *) "handled", (gchar *) "b", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_method_info_process_key_event_OUT_ARG_pointers[] = { &_ibus_dbus_input_context_method_info_process_key_event_OUT_ARG_handled.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_process_key_event = { { -1, (gchar *) "ProcessKeyEvent", (GDBusArgInfo **) &_ibus_dbus_input_context_method_info_process_key_event_IN_ARG_pointers, (GDBusArgInfo **) &_ibus_dbus_input_context_method_info_process_key_event_OUT_ARG_pointers, NULL }, "handle-process-key-event", FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_cursor_location_IN_ARG_x = { { -1, (gchar *) "x", (gchar *) "i", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_cursor_location_IN_ARG_y = { { -1, (gchar *) "y", (gchar *) "i", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_cursor_location_IN_ARG_w = { { -1, (gchar *) "w", (gchar *) "i", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_cursor_location_IN_ARG_h = { { -1, (gchar *) "h", (gchar *) "i", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_method_info_set_cursor_location_IN_ARG_pointers[] = { &_ibus_dbus_input_context_method_info_set_cursor_location_IN_ARG_x.parent_struct, &_ibus_dbus_input_context_method_info_set_cursor_location_IN_ARG_y.parent_struct, &_ibus_dbus_input_context_method_info_set_cursor_location_IN_ARG_w.parent_struct, &_ibus_dbus_input_context_method_info_set_cursor_location_IN_ARG_h.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_set_cursor_location = { { -1, (gchar *) "SetCursorLocation", (GDBusArgInfo **) &_ibus_dbus_input_context_method_info_set_cursor_location_IN_ARG_pointers, NULL, NULL }, "handle-set-cursor-location", FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_cursor_location_relative_IN_ARG_x = { { -1, (gchar *) "x", (gchar *) "i", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_cursor_location_relative_IN_ARG_y = { { -1, (gchar *) "y", (gchar *) "i", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_cursor_location_relative_IN_ARG_w = { { -1, (gchar *) "w", (gchar *) "i", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_cursor_location_relative_IN_ARG_h = { { -1, (gchar *) "h", (gchar *) "i", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_method_info_set_cursor_location_relative_IN_ARG_pointers[] = { &_ibus_dbus_input_context_method_info_set_cursor_location_relative_IN_ARG_x.parent_struct, &_ibus_dbus_input_context_method_info_set_cursor_location_relative_IN_ARG_y.parent_struct, &_ibus_dbus_input_context_method_info_set_cursor_location_relative_IN_ARG_w.parent_struct, &_ibus_dbus_input_context_method_info_set_cursor_location_relative_IN_ARG_h.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_set_cursor_location_relative = { { -1, (gchar *) "SetCursorLocationRelative", (GDBusArgInfo **) &_ibus_dbus_input_context_method_info_set_cursor_location_relative_IN_ARG_pointers, NULL, NULL }, "handle-set-cursor-location-relative", FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_process_hand_writing_event_IN_ARG_coordinates = { { -1, (gchar *) "coordinates", (gchar *) "ad", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_method_info_process_hand_writing_event_IN_ARG_pointers[] = { &_ibus_dbus_input_context_method_info_process_hand_writing_event_IN_ARG_coordinates.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_process_hand_writing_event = { { -1, (gchar *) "ProcessHandWritingEvent", (GDBusArgInfo **) &_ibus_dbus_input_context_method_info_process_hand_writing_event_IN_ARG_pointers, NULL, NULL }, "handle-process-hand-writing-event", FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_cancel_hand_writing_IN_ARG_n_strokes = { { -1, (gchar *) "n_strokes", (gchar *) "u", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_method_info_cancel_hand_writing_IN_ARG_pointers[] = { &_ibus_dbus_input_context_method_info_cancel_hand_writing_IN_ARG_n_strokes.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_cancel_hand_writing = { { -1, (gchar *) "CancelHandWriting", (GDBusArgInfo **) &_ibus_dbus_input_context_method_info_cancel_hand_writing_IN_ARG_pointers, NULL, NULL }, "handle-cancel-hand-writing", FALSE }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_focus_in = { { -1, (gchar *) "FocusIn", NULL, NULL, NULL }, "handle-focus-in", FALSE }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_focus_out = { { -1, (gchar *) "FocusOut", NULL, NULL, NULL }, "handle-focus-out", FALSE }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_reset = { { -1, (gchar *) "Reset", NULL, NULL, NULL }, "handle-reset", FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_capabilities_IN_ARG_caps = { { -1, (gchar *) "caps", (gchar *) "u", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_method_info_set_capabilities_IN_ARG_pointers[] = { &_ibus_dbus_input_context_method_info_set_capabilities_IN_ARG_caps.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_set_capabilities = { { -1, (gchar *) "SetCapabilities", (GDBusArgInfo **) &_ibus_dbus_input_context_method_info_set_capabilities_IN_ARG_pointers, NULL, NULL }, "handle-set-capabilities", FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_property_activate_IN_ARG_name = { { -1, (gchar *) "name", (gchar *) "s", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_property_activate_IN_ARG_state = { { -1, (gchar *) "state", (gchar *) "u", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_method_info_property_activate_IN_ARG_pointers[] = { &_ibus_dbus_input_context_method_info_property_activate_IN_ARG_name.parent_struct, &_ibus_dbus_input_context_method_info_property_activate_IN_ARG_state.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_property_activate = { { -1, (gchar *) "PropertyActivate", (GDBusArgInfo **) &_ibus_dbus_input_context_method_info_property_activate_IN_ARG_pointers, NULL, NULL }, "handle-property-activate", FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_engine_IN_ARG_name = { { -1, (gchar *) "name", (gchar *) "s", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_method_info_set_engine_IN_ARG_pointers[] = { &_ibus_dbus_input_context_method_info_set_engine_IN_ARG_name.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_set_engine = { { -1, (gchar *) "SetEngine", (GDBusArgInfo **) &_ibus_dbus_input_context_method_info_set_engine_IN_ARG_pointers, NULL, NULL }, "handle-set-engine", FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_get_engine_OUT_ARG_desc = { { -1, (gchar *) "desc", (gchar *) "v", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_method_info_get_engine_OUT_ARG_pointers[] = { &_ibus_dbus_input_context_method_info_get_engine_OUT_ARG_desc.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_get_engine = { { -1, (gchar *) "GetEngine", NULL, (GDBusArgInfo **) &_ibus_dbus_input_context_method_info_get_engine_OUT_ARG_pointers, NULL }, "handle-get-engine", FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_surrounding_text_IN_ARG_text = { { -1, (gchar *) "text", (gchar *) "v", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_surrounding_text_IN_ARG_cursor_pos = { { -1, (gchar *) "cursor_pos", (gchar *) "u", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_method_info_set_surrounding_text_IN_ARG_anchor_pos = { { -1, (gchar *) "anchor_pos", (gchar *) "u", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_method_info_set_surrounding_text_IN_ARG_pointers[] = { &_ibus_dbus_input_context_method_info_set_surrounding_text_IN_ARG_text.parent_struct, &_ibus_dbus_input_context_method_info_set_surrounding_text_IN_ARG_cursor_pos.parent_struct, &_ibus_dbus_input_context_method_info_set_surrounding_text_IN_ARG_anchor_pos.parent_struct, NULL }; static const _ExtendedGDBusMethodInfo _ibus_dbus_input_context_method_info_set_surrounding_text = { { -1, (gchar *) "SetSurroundingText", (GDBusArgInfo **) &_ibus_dbus_input_context_method_info_set_surrounding_text_IN_ARG_pointers, NULL, NULL }, "handle-set-surrounding-text", FALSE }; static const GDBusMethodInfo * const _ibus_dbus_input_context_method_info_pointers[] = { &_ibus_dbus_input_context_method_info_process_key_event.parent_struct, &_ibus_dbus_input_context_method_info_set_cursor_location.parent_struct, &_ibus_dbus_input_context_method_info_set_cursor_location_relative.parent_struct, &_ibus_dbus_input_context_method_info_process_hand_writing_event.parent_struct, &_ibus_dbus_input_context_method_info_cancel_hand_writing.parent_struct, &_ibus_dbus_input_context_method_info_focus_in.parent_struct, &_ibus_dbus_input_context_method_info_focus_out.parent_struct, &_ibus_dbus_input_context_method_info_reset.parent_struct, &_ibus_dbus_input_context_method_info_set_capabilities.parent_struct, &_ibus_dbus_input_context_method_info_property_activate.parent_struct, &_ibus_dbus_input_context_method_info_set_engine.parent_struct, &_ibus_dbus_input_context_method_info_get_engine.parent_struct, &_ibus_dbus_input_context_method_info_set_surrounding_text.parent_struct, NULL }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_commit_text_ARG_text = { { -1, (gchar *) "text", (gchar *) "v", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_signal_info_commit_text_ARG_pointers[] = { &_ibus_dbus_input_context_signal_info_commit_text_ARG_text.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_commit_text = { { -1, (gchar *) "CommitText", (GDBusArgInfo **) &_ibus_dbus_input_context_signal_info_commit_text_ARG_pointers, NULL }, "commit-text" }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_forward_key_event_ARG_keyval = { { -1, (gchar *) "keyval", (gchar *) "u", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_forward_key_event_ARG_keycode = { { -1, (gchar *) "keycode", (gchar *) "u", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_forward_key_event_ARG_state = { { -1, (gchar *) "state", (gchar *) "u", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_signal_info_forward_key_event_ARG_pointers[] = { &_ibus_dbus_input_context_signal_info_forward_key_event_ARG_keyval.parent_struct, &_ibus_dbus_input_context_signal_info_forward_key_event_ARG_keycode.parent_struct, &_ibus_dbus_input_context_signal_info_forward_key_event_ARG_state.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_forward_key_event = { { -1, (gchar *) "ForwardKeyEvent", (GDBusArgInfo **) &_ibus_dbus_input_context_signal_info_forward_key_event_ARG_pointers, NULL }, "forward-key-event" }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_preedit_text_ARG_text = { { -1, (gchar *) "text", (gchar *) "v", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_preedit_text_ARG_cursor_pos = { { -1, (gchar *) "cursor_pos", (gchar *) "u", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_preedit_text_ARG_visible = { { -1, (gchar *) "visible", (gchar *) "b", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_signal_info_update_preedit_text_ARG_pointers[] = { &_ibus_dbus_input_context_signal_info_update_preedit_text_ARG_text.parent_struct, &_ibus_dbus_input_context_signal_info_update_preedit_text_ARG_cursor_pos.parent_struct, &_ibus_dbus_input_context_signal_info_update_preedit_text_ARG_visible.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_update_preedit_text = { { -1, (gchar *) "UpdatePreeditText", (GDBusArgInfo **) &_ibus_dbus_input_context_signal_info_update_preedit_text_ARG_pointers, NULL }, "update-preedit-text" }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_preedit_text_with_mode_ARG_text = { { -1, (gchar *) "text", (gchar *) "v", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_preedit_text_with_mode_ARG_cursor_pos = { { -1, (gchar *) "cursor_pos", (gchar *) "u", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_preedit_text_with_mode_ARG_visible = { { -1, (gchar *) "visible", (gchar *) "b", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_preedit_text_with_mode_ARG_mode = { { -1, (gchar *) "mode", (gchar *) "u", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_signal_info_update_preedit_text_with_mode_ARG_pointers[] = { &_ibus_dbus_input_context_signal_info_update_preedit_text_with_mode_ARG_text.parent_struct, &_ibus_dbus_input_context_signal_info_update_preedit_text_with_mode_ARG_cursor_pos.parent_struct, &_ibus_dbus_input_context_signal_info_update_preedit_text_with_mode_ARG_visible.parent_struct, &_ibus_dbus_input_context_signal_info_update_preedit_text_with_mode_ARG_mode.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_update_preedit_text_with_mode = { { -1, (gchar *) "UpdatePreeditTextWithMode", (GDBusArgInfo **) &_ibus_dbus_input_context_signal_info_update_preedit_text_with_mode_ARG_pointers, NULL }, "update-preedit-text-with-mode" }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_show_preedit_text = { { -1, (gchar *) "ShowPreeditText", NULL, NULL }, "show-preedit-text" }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_hide_preedit_text = { { -1, (gchar *) "HidePreeditText", NULL, NULL }, "hide-preedit-text" }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_auxiliary_text_ARG_text = { { -1, (gchar *) "text", (gchar *) "v", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_auxiliary_text_ARG_visible = { { -1, (gchar *) "visible", (gchar *) "b", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_signal_info_update_auxiliary_text_ARG_pointers[] = { &_ibus_dbus_input_context_signal_info_update_auxiliary_text_ARG_text.parent_struct, &_ibus_dbus_input_context_signal_info_update_auxiliary_text_ARG_visible.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_update_auxiliary_text = { { -1, (gchar *) "UpdateAuxiliaryText", (GDBusArgInfo **) &_ibus_dbus_input_context_signal_info_update_auxiliary_text_ARG_pointers, NULL }, "update-auxiliary-text" }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_show_auxiliary_text = { { -1, (gchar *) "ShowAuxiliaryText", NULL, NULL }, "show-auxiliary-text" }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_hide_auxiliary_text = { { -1, (gchar *) "HideAuxiliaryText", NULL, NULL }, "hide-auxiliary-text" }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_lookup_table_ARG_table = { { -1, (gchar *) "table", (gchar *) "v", NULL }, FALSE }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_lookup_table_ARG_visible = { { -1, (gchar *) "visible", (gchar *) "b", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_signal_info_update_lookup_table_ARG_pointers[] = { &_ibus_dbus_input_context_signal_info_update_lookup_table_ARG_table.parent_struct, &_ibus_dbus_input_context_signal_info_update_lookup_table_ARG_visible.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_update_lookup_table = { { -1, (gchar *) "UpdateLookupTable", (GDBusArgInfo **) &_ibus_dbus_input_context_signal_info_update_lookup_table_ARG_pointers, NULL }, "update-lookup-table" }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_show_lookup_table = { { -1, (gchar *) "ShowLookupTable", NULL, NULL }, "show-lookup-table" }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_hide_lookup_table = { { -1, (gchar *) "HideLookupTable", NULL, NULL }, "hide-lookup-table" }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_page_up_lookup_table = { { -1, (gchar *) "PageUpLookupTable", NULL, NULL }, "page-up-lookup-table" }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_page_down_lookup_table = { { -1, (gchar *) "PageDownLookupTable", NULL, NULL }, "page-down-lookup-table" }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_cursor_up_lookup_table = { { -1, (gchar *) "CursorUpLookupTable", NULL, NULL }, "cursor-up-lookup-table" }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_cursor_down_lookup_table = { { -1, (gchar *) "CursorDownLookupTable", NULL, NULL }, "cursor-down-lookup-table" }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_register_properties_ARG_props = { { -1, (gchar *) "props", (gchar *) "v", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_signal_info_register_properties_ARG_pointers[] = { &_ibus_dbus_input_context_signal_info_register_properties_ARG_props.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_register_properties = { { -1, (gchar *) "RegisterProperties", (GDBusArgInfo **) &_ibus_dbus_input_context_signal_info_register_properties_ARG_pointers, NULL }, "register-properties" }; static const _ExtendedGDBusArgInfo _ibus_dbus_input_context_signal_info_update_property_ARG_prop = { { -1, (gchar *) "prop", (gchar *) "v", NULL }, FALSE }; static const GDBusArgInfo * const _ibus_dbus_input_context_signal_info_update_property_ARG_pointers[] = { &_ibus_dbus_input_context_signal_info_update_property_ARG_prop.parent_struct, NULL }; static const _ExtendedGDBusSignalInfo _ibus_dbus_input_context_signal_info_update_property = { { -1, (gchar *) "UpdateProperty", (GDBusArgInfo **) &_ibus_dbus_input_context_signal_info_update_property_ARG_pointers, NULL }, "update-property" }; static const GDBusSignalInfo * const _ibus_dbus_input_context_signal_info_pointers[] = { &_ibus_dbus_input_context_signal_info_commit_text.parent_struct, &_ibus_dbus_input_context_signal_info_forward_key_event.parent_struct, &_ibus_dbus_input_context_signal_info_update_preedit_text.parent_struct, &_ibus_dbus_input_context_signal_info_update_preedit_text_with_mode.parent_struct, &_ibus_dbus_input_context_signal_info_show_preedit_text.parent_struct, &_ibus_dbus_input_context_signal_info_hide_preedit_text.parent_struct, &_ibus_dbus_input_context_signal_info_update_auxiliary_text.parent_struct, &_ibus_dbus_input_context_signal_info_show_auxiliary_text.parent_struct, &_ibus_dbus_input_context_signal_info_hide_auxiliary_text.parent_struct, &_ibus_dbus_input_context_signal_info_update_lookup_table.parent_struct, &_ibus_dbus_input_context_signal_info_show_lookup_table.parent_struct, &_ibus_dbus_input_context_signal_info_hide_lookup_table.parent_struct, &_ibus_dbus_input_context_signal_info_page_up_lookup_table.parent_struct, &_ibus_dbus_input_context_signal_info_page_down_lookup_table.parent_struct, &_ibus_dbus_input_context_signal_info_cursor_up_lookup_table.parent_struct, &_ibus_dbus_input_context_signal_info_cursor_down_lookup_table.parent_struct, &_ibus_dbus_input_context_signal_info_register_properties.parent_struct, &_ibus_dbus_input_context_signal_info_update_property.parent_struct, NULL }; static const _ExtendedGDBusPropertyInfo _ibus_dbus_input_context_property_info_content_type = { { -1, (gchar *) "ContentType", (gchar *) "(uu)", G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "content-type", FALSE, TRUE }; static const _ExtendedGDBusPropertyInfo _ibus_dbus_input_context_property_info_client_commit_preedit = { { -1, (gchar *) "ClientCommitPreedit", (gchar *) "(b)", G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, NULL }, "client-commit-preedit", FALSE, TRUE }; static const GDBusPropertyInfo * const _ibus_dbus_input_context_property_info_pointers[] = { &_ibus_dbus_input_context_property_info_content_type.parent_struct, &_ibus_dbus_input_context_property_info_client_commit_preedit.parent_struct, NULL }; static const _ExtendedGDBusInterfaceInfo _ibus_dbus_input_context_interface_info = { { -1, (gchar *) "org.freedesktop.IBus.InputContext", (GDBusMethodInfo **) &_ibus_dbus_input_context_method_info_pointers, (GDBusSignalInfo **) &_ibus_dbus_input_context_signal_info_pointers, (GDBusPropertyInfo **) &_ibus_dbus_input_context_property_info_pointers, NULL }, "input-context", }; /** * ibus_dbus_input_context_interface_info: * * Gets a machine-readable description of the org.freedesktop.IBus.InputContext D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * ibus_dbus_input_context_interface_info (void) { return (GDBusInterfaceInfo *) &_ibus_dbus_input_context_interface_info.parent_struct; } /** * ibus_dbus_input_context_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #IBusDbusInputContext interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint ibus_dbus_input_context_override_properties (GObjectClass *klass, guint property_id_begin) { g_object_class_override_property (klass, property_id_begin++, "content-type"); g_object_class_override_property (klass, property_id_begin++, "client-commit-preedit"); return property_id_begin - 1; } /** * IBusDbusInputContext: * * Abstract interface type for the D-Bus interface org.freedesktop.IBus.InputContext. */ /** * IBusDbusInputContextIface: * @parent_iface: The parent interface. * @handle_cancel_hand_writing: Handler for the #IBusDbusInputContext::handle-cancel-hand-writing signal. * @handle_focus_in: Handler for the #IBusDbusInputContext::handle-focus-in signal. * @handle_focus_out: Handler for the #IBusDbusInputContext::handle-focus-out signal. * @handle_get_engine: Handler for the #IBusDbusInputContext::handle-get-engine signal. * @handle_process_hand_writing_event: Handler for the #IBusDbusInputContext::handle-process-hand-writing-event signal. * @handle_process_key_event: Handler for the #IBusDbusInputContext::handle-process-key-event signal. * @handle_property_activate: Handler for the #IBusDbusInputContext::handle-property-activate signal. * @handle_reset: Handler for the #IBusDbusInputContext::handle-reset signal. * @handle_set_capabilities: Handler for the #IBusDbusInputContext::handle-set-capabilities signal. * @handle_set_cursor_location: Handler for the #IBusDbusInputContext::handle-set-cursor-location signal. * @handle_set_cursor_location_relative: Handler for the #IBusDbusInputContext::handle-set-cursor-location-relative signal. * @handle_set_engine: Handler for the #IBusDbusInputContext::handle-set-engine signal. * @handle_set_surrounding_text: Handler for the #IBusDbusInputContext::handle-set-surrounding-text signal. * @get_client_commit_preedit: Getter for the #IBusDbusInputContext:client-commit-preedit property. * @get_content_type: Getter for the #IBusDbusInputContext:content-type property. * @commit_text: Handler for the #IBusDbusInputContext::commit-text signal. * @cursor_down_lookup_table: Handler for the #IBusDbusInputContext::cursor-down-lookup-table signal. * @cursor_up_lookup_table: Handler for the #IBusDbusInputContext::cursor-up-lookup-table signal. * @forward_key_event: Handler for the #IBusDbusInputContext::forward-key-event signal. * @hide_auxiliary_text: Handler for the #IBusDbusInputContext::hide-auxiliary-text signal. * @hide_lookup_table: Handler for the #IBusDbusInputContext::hide-lookup-table signal. * @hide_preedit_text: Handler for the #IBusDbusInputContext::hide-preedit-text signal. * @page_down_lookup_table: Handler for the #IBusDbusInputContext::page-down-lookup-table signal. * @page_up_lookup_table: Handler for the #IBusDbusInputContext::page-up-lookup-table signal. * @register_properties: Handler for the #IBusDbusInputContext::register-properties signal. * @show_auxiliary_text: Handler for the #IBusDbusInputContext::show-auxiliary-text signal. * @show_lookup_table: Handler for the #IBusDbusInputContext::show-lookup-table signal. * @show_preedit_text: Handler for the #IBusDbusInputContext::show-preedit-text signal. * @update_auxiliary_text: Handler for the #IBusDbusInputContext::update-auxiliary-text signal. * @update_lookup_table: Handler for the #IBusDbusInputContext::update-lookup-table signal. * @update_preedit_text: Handler for the #IBusDbusInputContext::update-preedit-text signal. * @update_preedit_text_with_mode: Handler for the #IBusDbusInputContext::update-preedit-text-with-mode signal. * @update_property: Handler for the #IBusDbusInputContext::update-property signal. * * Virtual table for the D-Bus interface org.freedesktop.IBus.InputContext. */ typedef IBusDbusInputContextIface IBusDbusInputContextInterface; G_DEFINE_INTERFACE (IBusDbusInputContext, ibus_dbus_input_context, G_TYPE_OBJECT) static void ibus_dbus_input_context_default_init (IBusDbusInputContextIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** * IBusDbusInputContext::handle-process-key-event: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * @arg_keyval: Argument passed by remote caller. * @arg_keycode: Argument passed by remote caller. * @arg_state: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the ProcessKeyEvent() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_process_key_event() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-process-key-event", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_process_key_event), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 4, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); /** * IBusDbusInputContext::handle-set-cursor-location: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * @arg_x: Argument passed by remote caller. * @arg_y: Argument passed by remote caller. * @arg_w: Argument passed by remote caller. * @arg_h: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the SetCursorLocation() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_set_cursor_location() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-set-cursor-location", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_set_cursor_location), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 5, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); /** * IBusDbusInputContext::handle-set-cursor-location-relative: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * @arg_x: Argument passed by remote caller. * @arg_y: Argument passed by remote caller. * @arg_w: Argument passed by remote caller. * @arg_h: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the SetCursorLocationRelative() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_set_cursor_location_relative() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-set-cursor-location-relative", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_set_cursor_location_relative), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 5, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); /** * IBusDbusInputContext::handle-process-hand-writing-event: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * @arg_coordinates: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the ProcessHandWritingEvent() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_process_hand_writing_event() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-process-hand-writing-event", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_process_hand_writing_event), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT); /** * IBusDbusInputContext::handle-cancel-hand-writing: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * @arg_n_strokes: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the CancelHandWriting() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_cancel_hand_writing() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-cancel-hand-writing", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_cancel_hand_writing), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_UINT); /** * IBusDbusInputContext::handle-focus-in: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the FocusIn() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_focus_in() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-focus-in", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_focus_in), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /** * IBusDbusInputContext::handle-focus-out: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the FocusOut() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_focus_out() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-focus-out", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_focus_out), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /** * IBusDbusInputContext::handle-reset: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the Reset() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_reset() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-reset", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_reset), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /** * IBusDbusInputContext::handle-set-capabilities: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * @arg_caps: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the SetCapabilities() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_set_capabilities() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-set-capabilities", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_set_capabilities), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_UINT); /** * IBusDbusInputContext::handle-property-activate: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * @arg_name: Argument passed by remote caller. * @arg_state: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the PropertyActivate() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_property_activate() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-property-activate", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_property_activate), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 3, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_UINT); /** * IBusDbusInputContext::handle-set-engine: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * @arg_name: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the SetEngine() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_set_engine() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-set-engine", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_set_engine), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 2, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); /** * IBusDbusInputContext::handle-get-engine: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the GetEngine() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_get_engine() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-get-engine", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_get_engine), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); /** * IBusDbusInputContext::handle-set-surrounding-text: * @object: A #IBusDbusInputContext. * @invocation: A #GDBusMethodInvocation. * @arg_text: Argument passed by remote caller. * @arg_cursor_pos: Argument passed by remote caller. * @arg_anchor_pos: Argument passed by remote caller. * * Signal emitted when a remote caller is invoking the SetSurroundingText() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_input_context_complete_set_surrounding_text() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-set-surrounding-text", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, handle_set_surrounding_text), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 4, G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT, G_TYPE_UINT, G_TYPE_UINT); /* GObject signals for received D-Bus signals: */ /** * IBusDbusInputContext::commit-text: * @object: A #IBusDbusInputContext. * @arg_text: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "CommitText" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("commit-text", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, commit_text), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, G_TYPE_VARIANT); /** * IBusDbusInputContext::forward-key-event: * @object: A #IBusDbusInputContext. * @arg_keyval: Argument. * @arg_keycode: Argument. * @arg_state: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "ForwardKeyEvent" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("forward-key-event", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, forward_key_event), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); /** * IBusDbusInputContext::update-preedit-text: * @object: A #IBusDbusInputContext. * @arg_text: Argument. * @arg_cursor_pos: Argument. * @arg_visible: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "UpdatePreeditText" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("update-preedit-text", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, update_preedit_text), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 3, G_TYPE_VARIANT, G_TYPE_UINT, G_TYPE_BOOLEAN); /** * IBusDbusInputContext::update-preedit-text-with-mode: * @object: A #IBusDbusInputContext. * @arg_text: Argument. * @arg_cursor_pos: Argument. * @arg_visible: Argument. * @arg_mode: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "UpdatePreeditTextWithMode" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("update-preedit-text-with-mode", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, update_preedit_text_with_mode), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 4, G_TYPE_VARIANT, G_TYPE_UINT, G_TYPE_BOOLEAN, G_TYPE_UINT); /** * IBusDbusInputContext::show-preedit-text: * @object: A #IBusDbusInputContext. * * On the client-side, this signal is emitted whenever the D-Bus signal "ShowPreeditText" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("show-preedit-text", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, show_preedit_text), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 0); /** * IBusDbusInputContext::hide-preedit-text: * @object: A #IBusDbusInputContext. * * On the client-side, this signal is emitted whenever the D-Bus signal "HidePreeditText" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("hide-preedit-text", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, hide_preedit_text), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 0); /** * IBusDbusInputContext::update-auxiliary-text: * @object: A #IBusDbusInputContext. * @arg_text: Argument. * @arg_visible: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "UpdateAuxiliaryText" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("update-auxiliary-text", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, update_auxiliary_text), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_VARIANT, G_TYPE_BOOLEAN); /** * IBusDbusInputContext::show-auxiliary-text: * @object: A #IBusDbusInputContext. * * On the client-side, this signal is emitted whenever the D-Bus signal "ShowAuxiliaryText" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("show-auxiliary-text", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, show_auxiliary_text), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 0); /** * IBusDbusInputContext::hide-auxiliary-text: * @object: A #IBusDbusInputContext. * * On the client-side, this signal is emitted whenever the D-Bus signal "HideAuxiliaryText" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("hide-auxiliary-text", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, hide_auxiliary_text), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 0); /** * IBusDbusInputContext::update-lookup-table: * @object: A #IBusDbusInputContext. * @arg_table: Argument. * @arg_visible: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "UpdateLookupTable" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("update-lookup-table", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, update_lookup_table), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 2, G_TYPE_VARIANT, G_TYPE_BOOLEAN); /** * IBusDbusInputContext::show-lookup-table: * @object: A #IBusDbusInputContext. * * On the client-side, this signal is emitted whenever the D-Bus signal "ShowLookupTable" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("show-lookup-table", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, show_lookup_table), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 0); /** * IBusDbusInputContext::hide-lookup-table: * @object: A #IBusDbusInputContext. * * On the client-side, this signal is emitted whenever the D-Bus signal "HideLookupTable" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("hide-lookup-table", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, hide_lookup_table), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 0); /** * IBusDbusInputContext::page-up-lookup-table: * @object: A #IBusDbusInputContext. * * On the client-side, this signal is emitted whenever the D-Bus signal "PageUpLookupTable" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("page-up-lookup-table", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, page_up_lookup_table), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 0); /** * IBusDbusInputContext::page-down-lookup-table: * @object: A #IBusDbusInputContext. * * On the client-side, this signal is emitted whenever the D-Bus signal "PageDownLookupTable" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("page-down-lookup-table", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, page_down_lookup_table), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 0); /** * IBusDbusInputContext::cursor-up-lookup-table: * @object: A #IBusDbusInputContext. * * On the client-side, this signal is emitted whenever the D-Bus signal "CursorUpLookupTable" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("cursor-up-lookup-table", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, cursor_up_lookup_table), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 0); /** * IBusDbusInputContext::cursor-down-lookup-table: * @object: A #IBusDbusInputContext. * * On the client-side, this signal is emitted whenever the D-Bus signal "CursorDownLookupTable" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("cursor-down-lookup-table", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, cursor_down_lookup_table), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 0); /** * IBusDbusInputContext::register-properties: * @object: A #IBusDbusInputContext. * @arg_props: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "RegisterProperties" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("register-properties", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, register_properties), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, G_TYPE_VARIANT); /** * IBusDbusInputContext::update-property: * @object: A #IBusDbusInputContext. * @arg_prop: Argument. * * On the client-side, this signal is emitted whenever the D-Bus signal "UpdateProperty" is received. * * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal. */ g_signal_new ("update-property", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusInputContextIface, update_property), NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 1, G_TYPE_VARIANT); /* GObject properties for D-Bus properties: */ /** * IBusDbusInputContext:content-type: * * Represents the D-Bus property "ContentType". * * Since the D-Bus property for this #GObject property is writable but not readable, it is meaningful to write to it on both the client- and service-side. It is only meaningful, however, to read from it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_variant ("content-type", "ContentType", "ContentType", G_VARIANT_TYPE ("(uu)"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); /** * IBusDbusInputContext:client-commit-preedit: * * Represents the D-Bus property "ClientCommitPreedit". * * Since the D-Bus property for this #GObject property is writable but not readable, it is meaningful to write to it on both the client- and service-side. It is only meaningful, however, to read from it on the service-side. */ g_object_interface_install_property (iface, g_param_spec_variant ("client-commit-preedit", "ClientCommitPreedit", "ClientCommitPreedit", G_VARIANT_TYPE ("(b)"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } /** * ibus_dbus_input_context_get_content_type: (skip) * @object: A #IBusDbusInputContext. * * Gets the value of the "ContentType" D-Bus property. * * Since this D-Bus property is not readable, it is only meaningful to use this function on the service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use ibus_dbus_input_context_dup_content_type() if on another thread. * * Returns: (transfer none) (nullable): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ GVariant * ibus_dbus_input_context_get_content_type (IBusDbusInputContext *object) { return IBUS_DBUS_INPUT_CONTEXT_GET_IFACE (object)->get_content_type (object); } /** * ibus_dbus_input_context_dup_content_type: (skip) * @object: A #IBusDbusInputContext. * * Gets a copy of the "ContentType" D-Bus property. * * Since this D-Bus property is not readable, it is only meaningful to use this function on the service-side. * * Returns: (transfer full) (nullable): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref(). */ GVariant * ibus_dbus_input_context_dup_content_type (IBusDbusInputContext *object) { GVariant *value; g_object_get (G_OBJECT (object), "content-type", &value, NULL); return value; } /** * ibus_dbus_input_context_set_content_type: (skip) * @object: A #IBusDbusInputContext. * @value: The value to set. * * Sets the "ContentType" D-Bus property to @value. * * Since this D-Bus property is writable, it is meaningful to use this function on both the client- and service-side. */ void ibus_dbus_input_context_set_content_type (IBusDbusInputContext *object, GVariant *value) { g_object_set (G_OBJECT (object), "content-type", value, NULL); } /** * ibus_dbus_input_context_get_client_commit_preedit: (skip) * @object: A #IBusDbusInputContext. * * Gets the value of the "ClientCommitPreedit" D-Bus property. * * Since this D-Bus property is not readable, it is only meaningful to use this function on the service-side. * * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use ibus_dbus_input_context_dup_client_commit_preedit() if on another thread. * * Returns: (transfer none) (nullable): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object. */ GVariant * ibus_dbus_input_context_get_client_commit_preedit (IBusDbusInputContext *object) { return IBUS_DBUS_INPUT_CONTEXT_GET_IFACE (object)->get_client_commit_preedit (object); } /** * ibus_dbus_input_context_dup_client_commit_preedit: (skip) * @object: A #IBusDbusInputContext. * * Gets a copy of the "ClientCommitPreedit" D-Bus property. * * Since this D-Bus property is not readable, it is only meaningful to use this function on the service-side. * * Returns: (transfer full) (nullable): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref(). */ GVariant * ibus_dbus_input_context_dup_client_commit_preedit (IBusDbusInputContext *object) { GVariant *value; g_object_get (G_OBJECT (object), "client-commit-preedit", &value, NULL); return value; } /** * ibus_dbus_input_context_set_client_commit_preedit: (skip) * @object: A #IBusDbusInputContext. * @value: The value to set. * * Sets the "ClientCommitPreedit" D-Bus property to @value. * * Since this D-Bus property is writable, it is meaningful to use this function on both the client- and service-side. */ void ibus_dbus_input_context_set_client_commit_preedit (IBusDbusInputContext *object, GVariant *value) { g_object_set (G_OBJECT (object), "client-commit-preedit", value, NULL); } /** * ibus_dbus_input_context_emit_commit_text: * @object: A #IBusDbusInputContext. * @arg_text: Argument to pass with the signal. * * Emits the "CommitText" D-Bus signal. */ void ibus_dbus_input_context_emit_commit_text ( IBusDbusInputContext *object, GVariant *arg_text) { g_signal_emit_by_name (object, "commit-text", arg_text); } /** * ibus_dbus_input_context_emit_forward_key_event: * @object: A #IBusDbusInputContext. * @arg_keyval: Argument to pass with the signal. * @arg_keycode: Argument to pass with the signal. * @arg_state: Argument to pass with the signal. * * Emits the "ForwardKeyEvent" D-Bus signal. */ void ibus_dbus_input_context_emit_forward_key_event ( IBusDbusInputContext *object, guint arg_keyval, guint arg_keycode, guint arg_state) { g_signal_emit_by_name (object, "forward-key-event", arg_keyval, arg_keycode, arg_state); } /** * ibus_dbus_input_context_emit_update_preedit_text: * @object: A #IBusDbusInputContext. * @arg_text: Argument to pass with the signal. * @arg_cursor_pos: Argument to pass with the signal. * @arg_visible: Argument to pass with the signal. * * Emits the "UpdatePreeditText" D-Bus signal. */ void ibus_dbus_input_context_emit_update_preedit_text ( IBusDbusInputContext *object, GVariant *arg_text, guint arg_cursor_pos, gboolean arg_visible) { g_signal_emit_by_name (object, "update-preedit-text", arg_text, arg_cursor_pos, arg_visible); } /** * ibus_dbus_input_context_emit_update_preedit_text_with_mode: * @object: A #IBusDbusInputContext. * @arg_text: Argument to pass with the signal. * @arg_cursor_pos: Argument to pass with the signal. * @arg_visible: Argument to pass with the signal. * @arg_mode: Argument to pass with the signal. * * Emits the "UpdatePreeditTextWithMode" D-Bus signal. */ void ibus_dbus_input_context_emit_update_preedit_text_with_mode ( IBusDbusInputContext *object, GVariant *arg_text, guint arg_cursor_pos, gboolean arg_visible, guint arg_mode) { g_signal_emit_by_name (object, "update-preedit-text-with-mode", arg_text, arg_cursor_pos, arg_visible, arg_mode); } /** * ibus_dbus_input_context_emit_show_preedit_text: * @object: A #IBusDbusInputContext. * * Emits the "ShowPreeditText" D-Bus signal. */ void ibus_dbus_input_context_emit_show_preedit_text ( IBusDbusInputContext *object) { g_signal_emit_by_name (object, "show-preedit-text"); } /** * ibus_dbus_input_context_emit_hide_preedit_text: * @object: A #IBusDbusInputContext. * * Emits the "HidePreeditText" D-Bus signal. */ void ibus_dbus_input_context_emit_hide_preedit_text ( IBusDbusInputContext *object) { g_signal_emit_by_name (object, "hide-preedit-text"); } /** * ibus_dbus_input_context_emit_update_auxiliary_text: * @object: A #IBusDbusInputContext. * @arg_text: Argument to pass with the signal. * @arg_visible: Argument to pass with the signal. * * Emits the "UpdateAuxiliaryText" D-Bus signal. */ void ibus_dbus_input_context_emit_update_auxiliary_text ( IBusDbusInputContext *object, GVariant *arg_text, gboolean arg_visible) { g_signal_emit_by_name (object, "update-auxiliary-text", arg_text, arg_visible); } /** * ibus_dbus_input_context_emit_show_auxiliary_text: * @object: A #IBusDbusInputContext. * * Emits the "ShowAuxiliaryText" D-Bus signal. */ void ibus_dbus_input_context_emit_show_auxiliary_text ( IBusDbusInputContext *object) { g_signal_emit_by_name (object, "show-auxiliary-text"); } /** * ibus_dbus_input_context_emit_hide_auxiliary_text: * @object: A #IBusDbusInputContext. * * Emits the "HideAuxiliaryText" D-Bus signal. */ void ibus_dbus_input_context_emit_hide_auxiliary_text ( IBusDbusInputContext *object) { g_signal_emit_by_name (object, "hide-auxiliary-text"); } /** * ibus_dbus_input_context_emit_update_lookup_table: * @object: A #IBusDbusInputContext. * @arg_table: Argument to pass with the signal. * @arg_visible: Argument to pass with the signal. * * Emits the "UpdateLookupTable" D-Bus signal. */ void ibus_dbus_input_context_emit_update_lookup_table ( IBusDbusInputContext *object, GVariant *arg_table, gboolean arg_visible) { g_signal_emit_by_name (object, "update-lookup-table", arg_table, arg_visible); } /** * ibus_dbus_input_context_emit_show_lookup_table: * @object: A #IBusDbusInputContext. * * Emits the "ShowLookupTable" D-Bus signal. */ void ibus_dbus_input_context_emit_show_lookup_table ( IBusDbusInputContext *object) { g_signal_emit_by_name (object, "show-lookup-table"); } /** * ibus_dbus_input_context_emit_hide_lookup_table: * @object: A #IBusDbusInputContext. * * Emits the "HideLookupTable" D-Bus signal. */ void ibus_dbus_input_context_emit_hide_lookup_table ( IBusDbusInputContext *object) { g_signal_emit_by_name (object, "hide-lookup-table"); } /** * ibus_dbus_input_context_emit_page_up_lookup_table: * @object: A #IBusDbusInputContext. * * Emits the "PageUpLookupTable" D-Bus signal. */ void ibus_dbus_input_context_emit_page_up_lookup_table ( IBusDbusInputContext *object) { g_signal_emit_by_name (object, "page-up-lookup-table"); } /** * ibus_dbus_input_context_emit_page_down_lookup_table: * @object: A #IBusDbusInputContext. * * Emits the "PageDownLookupTable" D-Bus signal. */ void ibus_dbus_input_context_emit_page_down_lookup_table ( IBusDbusInputContext *object) { g_signal_emit_by_name (object, "page-down-lookup-table"); } /** * ibus_dbus_input_context_emit_cursor_up_lookup_table: * @object: A #IBusDbusInputContext. * * Emits the "CursorUpLookupTable" D-Bus signal. */ void ibus_dbus_input_context_emit_cursor_up_lookup_table ( IBusDbusInputContext *object) { g_signal_emit_by_name (object, "cursor-up-lookup-table"); } /** * ibus_dbus_input_context_emit_cursor_down_lookup_table: * @object: A #IBusDbusInputContext. * * Emits the "CursorDownLookupTable" D-Bus signal. */ void ibus_dbus_input_context_emit_cursor_down_lookup_table ( IBusDbusInputContext *object) { g_signal_emit_by_name (object, "cursor-down-lookup-table"); } /** * ibus_dbus_input_context_emit_register_properties: * @object: A #IBusDbusInputContext. * @arg_props: Argument to pass with the signal. * * Emits the "RegisterProperties" D-Bus signal. */ void ibus_dbus_input_context_emit_register_properties ( IBusDbusInputContext *object, GVariant *arg_props) { g_signal_emit_by_name (object, "register-properties", arg_props); } /** * ibus_dbus_input_context_emit_update_property: * @object: A #IBusDbusInputContext. * @arg_prop: Argument to pass with the signal. * * Emits the "UpdateProperty" D-Bus signal. */ void ibus_dbus_input_context_emit_update_property ( IBusDbusInputContext *object, GVariant *arg_prop) { g_signal_emit_by_name (object, "update-property", arg_prop); } /** * ibus_dbus_input_context_call_process_key_event: * @proxy: A #IBusDbusInputContextProxy. * @arg_keyval: Argument to pass with the method invocation. * @arg_keycode: Argument to pass with the method invocation. * @arg_state: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the ProcessKeyEvent() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_process_key_event_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_process_key_event_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_process_key_event ( IBusDbusInputContext *proxy, guint arg_keyval, guint arg_keycode, guint arg_state, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "ProcessKeyEvent", g_variant_new ("(uuu)", arg_keyval, arg_keycode, arg_state), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_process_key_event_finish: * @proxy: A #IBusDbusInputContextProxy. * @out_handled: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_process_key_event(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_process_key_event(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_process_key_event_finish ( IBusDbusInputContext *proxy, gboolean *out_handled, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_handled); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_process_key_event_sync: * @proxy: A #IBusDbusInputContextProxy. * @arg_keyval: Argument to pass with the method invocation. * @arg_keycode: Argument to pass with the method invocation. * @arg_state: Argument to pass with the method invocation. * @out_handled: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the ProcessKeyEvent() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_process_key_event() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_process_key_event_sync ( IBusDbusInputContext *proxy, guint arg_keyval, guint arg_keycode, guint arg_state, gboolean *out_handled, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "ProcessKeyEvent", g_variant_new ("(uuu)", arg_keyval, arg_keycode, arg_state), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(b)", out_handled); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_set_cursor_location: * @proxy: A #IBusDbusInputContextProxy. * @arg_x: Argument to pass with the method invocation. * @arg_y: Argument to pass with the method invocation. * @arg_w: Argument to pass with the method invocation. * @arg_h: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the SetCursorLocation() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_set_cursor_location_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_set_cursor_location_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_set_cursor_location ( IBusDbusInputContext *proxy, gint arg_x, gint arg_y, gint arg_w, gint arg_h, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "SetCursorLocation", g_variant_new ("(iiii)", arg_x, arg_y, arg_w, arg_h), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_set_cursor_location_finish: * @proxy: A #IBusDbusInputContextProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_set_cursor_location(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_set_cursor_location(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_set_cursor_location_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_set_cursor_location_sync: * @proxy: A #IBusDbusInputContextProxy. * @arg_x: Argument to pass with the method invocation. * @arg_y: Argument to pass with the method invocation. * @arg_w: Argument to pass with the method invocation. * @arg_h: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the SetCursorLocation() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_set_cursor_location() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_set_cursor_location_sync ( IBusDbusInputContext *proxy, gint arg_x, gint arg_y, gint arg_w, gint arg_h, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "SetCursorLocation", g_variant_new ("(iiii)", arg_x, arg_y, arg_w, arg_h), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_set_cursor_location_relative: * @proxy: A #IBusDbusInputContextProxy. * @arg_x: Argument to pass with the method invocation. * @arg_y: Argument to pass with the method invocation. * @arg_w: Argument to pass with the method invocation. * @arg_h: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the SetCursorLocationRelative() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_set_cursor_location_relative_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_set_cursor_location_relative_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_set_cursor_location_relative ( IBusDbusInputContext *proxy, gint arg_x, gint arg_y, gint arg_w, gint arg_h, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "SetCursorLocationRelative", g_variant_new ("(iiii)", arg_x, arg_y, arg_w, arg_h), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_set_cursor_location_relative_finish: * @proxy: A #IBusDbusInputContextProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_set_cursor_location_relative(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_set_cursor_location_relative(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_set_cursor_location_relative_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_set_cursor_location_relative_sync: * @proxy: A #IBusDbusInputContextProxy. * @arg_x: Argument to pass with the method invocation. * @arg_y: Argument to pass with the method invocation. * @arg_w: Argument to pass with the method invocation. * @arg_h: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the SetCursorLocationRelative() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_set_cursor_location_relative() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_set_cursor_location_relative_sync ( IBusDbusInputContext *proxy, gint arg_x, gint arg_y, gint arg_w, gint arg_h, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "SetCursorLocationRelative", g_variant_new ("(iiii)", arg_x, arg_y, arg_w, arg_h), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_process_hand_writing_event: * @proxy: A #IBusDbusInputContextProxy. * @arg_coordinates: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the ProcessHandWritingEvent() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_process_hand_writing_event_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_process_hand_writing_event_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_process_hand_writing_event ( IBusDbusInputContext *proxy, GVariant *arg_coordinates, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "ProcessHandWritingEvent", g_variant_new ("(@ad)", arg_coordinates), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_process_hand_writing_event_finish: * @proxy: A #IBusDbusInputContextProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_process_hand_writing_event(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_process_hand_writing_event(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_process_hand_writing_event_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_process_hand_writing_event_sync: * @proxy: A #IBusDbusInputContextProxy. * @arg_coordinates: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the ProcessHandWritingEvent() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_process_hand_writing_event() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_process_hand_writing_event_sync ( IBusDbusInputContext *proxy, GVariant *arg_coordinates, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "ProcessHandWritingEvent", g_variant_new ("(@ad)", arg_coordinates), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_cancel_hand_writing: * @proxy: A #IBusDbusInputContextProxy. * @arg_n_strokes: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the CancelHandWriting() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_cancel_hand_writing_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_cancel_hand_writing_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_cancel_hand_writing ( IBusDbusInputContext *proxy, guint arg_n_strokes, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "CancelHandWriting", g_variant_new ("(u)", arg_n_strokes), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_cancel_hand_writing_finish: * @proxy: A #IBusDbusInputContextProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_cancel_hand_writing(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_cancel_hand_writing(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_cancel_hand_writing_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_cancel_hand_writing_sync: * @proxy: A #IBusDbusInputContextProxy. * @arg_n_strokes: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the CancelHandWriting() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_cancel_hand_writing() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_cancel_hand_writing_sync ( IBusDbusInputContext *proxy, guint arg_n_strokes, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "CancelHandWriting", g_variant_new ("(u)", arg_n_strokes), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_focus_in: * @proxy: A #IBusDbusInputContextProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the FocusIn() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_focus_in_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_focus_in_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_focus_in ( IBusDbusInputContext *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "FocusIn", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_focus_in_finish: * @proxy: A #IBusDbusInputContextProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_focus_in(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_focus_in(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_focus_in_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_focus_in_sync: * @proxy: A #IBusDbusInputContextProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the FocusIn() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_focus_in() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_focus_in_sync ( IBusDbusInputContext *proxy, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "FocusIn", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_focus_out: * @proxy: A #IBusDbusInputContextProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the FocusOut() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_focus_out_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_focus_out_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_focus_out ( IBusDbusInputContext *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "FocusOut", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_focus_out_finish: * @proxy: A #IBusDbusInputContextProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_focus_out(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_focus_out(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_focus_out_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_focus_out_sync: * @proxy: A #IBusDbusInputContextProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the FocusOut() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_focus_out() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_focus_out_sync ( IBusDbusInputContext *proxy, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "FocusOut", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_reset: * @proxy: A #IBusDbusInputContextProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the Reset() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_reset_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_reset_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_reset ( IBusDbusInputContext *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "Reset", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_reset_finish: * @proxy: A #IBusDbusInputContextProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_reset(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_reset(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_reset_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_reset_sync: * @proxy: A #IBusDbusInputContextProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the Reset() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_reset() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_reset_sync ( IBusDbusInputContext *proxy, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "Reset", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_set_capabilities: * @proxy: A #IBusDbusInputContextProxy. * @arg_caps: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the SetCapabilities() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_set_capabilities_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_set_capabilities_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_set_capabilities ( IBusDbusInputContext *proxy, guint arg_caps, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "SetCapabilities", g_variant_new ("(u)", arg_caps), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_set_capabilities_finish: * @proxy: A #IBusDbusInputContextProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_set_capabilities(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_set_capabilities(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_set_capabilities_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_set_capabilities_sync: * @proxy: A #IBusDbusInputContextProxy. * @arg_caps: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the SetCapabilities() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_set_capabilities() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_set_capabilities_sync ( IBusDbusInputContext *proxy, guint arg_caps, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "SetCapabilities", g_variant_new ("(u)", arg_caps), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_property_activate: * @proxy: A #IBusDbusInputContextProxy. * @arg_name: Argument to pass with the method invocation. * @arg_state: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the PropertyActivate() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_property_activate_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_property_activate_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_property_activate ( IBusDbusInputContext *proxy, const gchar *arg_name, guint arg_state, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "PropertyActivate", g_variant_new ("(su)", arg_name, arg_state), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_property_activate_finish: * @proxy: A #IBusDbusInputContextProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_property_activate(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_property_activate(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_property_activate_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_property_activate_sync: * @proxy: A #IBusDbusInputContextProxy. * @arg_name: Argument to pass with the method invocation. * @arg_state: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the PropertyActivate() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_property_activate() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_property_activate_sync ( IBusDbusInputContext *proxy, const gchar *arg_name, guint arg_state, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "PropertyActivate", g_variant_new ("(su)", arg_name, arg_state), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_set_engine: * @proxy: A #IBusDbusInputContextProxy. * @arg_name: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the SetEngine() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_set_engine_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_set_engine_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_set_engine ( IBusDbusInputContext *proxy, const gchar *arg_name, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "SetEngine", g_variant_new ("(s)", arg_name), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_set_engine_finish: * @proxy: A #IBusDbusInputContextProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_set_engine(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_set_engine(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_set_engine_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_set_engine_sync: * @proxy: A #IBusDbusInputContextProxy. * @arg_name: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the SetEngine() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_set_engine() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_set_engine_sync ( IBusDbusInputContext *proxy, const gchar *arg_name, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "SetEngine", g_variant_new ("(s)", arg_name), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_get_engine: * @proxy: A #IBusDbusInputContextProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the GetEngine() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_get_engine_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_get_engine_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_get_engine ( IBusDbusInputContext *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "GetEngine", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_get_engine_finish: * @proxy: A #IBusDbusInputContextProxy. * @out_desc: (out) (optional): Return location for return parameter or %NULL to ignore. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_get_engine(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_get_engine(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_get_engine_finish ( IBusDbusInputContext *proxy, GVariant **out_desc, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(@v)", out_desc); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_get_engine_sync: * @proxy: A #IBusDbusInputContextProxy. * @out_desc: (out) (optional): Return location for return parameter or %NULL to ignore. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the GetEngine() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_get_engine() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_get_engine_sync ( IBusDbusInputContext *proxy, GVariant **out_desc, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "GetEngine", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "(@v)", out_desc); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_set_surrounding_text: * @proxy: A #IBusDbusInputContextProxy. * @arg_text: Argument to pass with the method invocation. * @arg_cursor_pos: Argument to pass with the method invocation. * @arg_anchor_pos: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the SetSurroundingText() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_call_set_surrounding_text_finish() to get the result of the operation. * * See ibus_dbus_input_context_call_set_surrounding_text_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_input_context_call_set_surrounding_text ( IBusDbusInputContext *proxy, GVariant *arg_text, guint arg_cursor_pos, guint arg_anchor_pos, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "SetSurroundingText", g_variant_new ("(@vuu)", arg_text, arg_cursor_pos, arg_anchor_pos), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_input_context_call_set_surrounding_text_finish: * @proxy: A #IBusDbusInputContextProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_call_set_surrounding_text(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_input_context_call_set_surrounding_text(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_set_surrounding_text_finish ( IBusDbusInputContext *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_call_set_surrounding_text_sync: * @proxy: A #IBusDbusInputContextProxy. * @arg_text: Argument to pass with the method invocation. * @arg_cursor_pos: Argument to pass with the method invocation. * @arg_anchor_pos: Argument to pass with the method invocation. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the SetSurroundingText() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_call_set_surrounding_text() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_input_context_call_set_surrounding_text_sync ( IBusDbusInputContext *proxy, GVariant *arg_text, guint arg_cursor_pos, guint arg_anchor_pos, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "SetSurroundingText", g_variant_new ("(@vuu)", arg_text, arg_cursor_pos, arg_anchor_pos), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_input_context_complete_process_key_event: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * @handled: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the ProcessKeyEvent() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_process_key_event ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, gboolean handled) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", handled)); } /** * ibus_dbus_input_context_complete_set_cursor_location: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the SetCursorLocation() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_set_cursor_location ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * ibus_dbus_input_context_complete_set_cursor_location_relative: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the SetCursorLocationRelative() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_set_cursor_location_relative ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * ibus_dbus_input_context_complete_process_hand_writing_event: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the ProcessHandWritingEvent() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_process_hand_writing_event ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * ibus_dbus_input_context_complete_cancel_hand_writing: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the CancelHandWriting() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_cancel_hand_writing ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * ibus_dbus_input_context_complete_focus_in: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the FocusIn() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_focus_in ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * ibus_dbus_input_context_complete_focus_out: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the FocusOut() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_focus_out ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * ibus_dbus_input_context_complete_reset: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the Reset() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_reset ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * ibus_dbus_input_context_complete_set_capabilities: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the SetCapabilities() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_set_capabilities ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * ibus_dbus_input_context_complete_property_activate: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the PropertyActivate() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_property_activate ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * ibus_dbus_input_context_complete_set_engine: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the SetEngine() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_set_engine ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /** * ibus_dbus_input_context_complete_get_engine: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * @desc: Parameter to return. * * Helper function used in service implementations to finish handling invocations of the GetEngine() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_get_engine ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation, GVariant *desc) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("(@v)", desc)); } /** * ibus_dbus_input_context_complete_set_surrounding_text: * @object: A #IBusDbusInputContext. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the SetSurroundingText() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_input_context_complete_set_surrounding_text ( IBusDbusInputContext *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /* ------------------------------------------------------------------------ */ /** * IBusDbusInputContextProxy: * * The #IBusDbusInputContextProxy structure contains only private data and should only be accessed using the provided API. */ /** * IBusDbusInputContextProxyClass: * @parent_class: The parent class. * * Class structure for #IBusDbusInputContextProxy. */ struct _IBusDbusInputContextProxyPrivate { GData *qdata; }; static void ibus_dbus_input_context_proxy_iface_init (IBusDbusInputContextIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (IBusDbusInputContextProxy, ibus_dbus_input_context_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (IBusDbusInputContextProxy) G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_INPUT_CONTEXT, ibus_dbus_input_context_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (IBusDbusInputContextProxy, ibus_dbus_input_context_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_INPUT_CONTEXT, ibus_dbus_input_context_proxy_iface_init)) #endif static void ibus_dbus_input_context_proxy_finalize (GObject *object) { IBusDbusInputContextProxy *proxy = IBUS_DBUS_INPUT_CONTEXT_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (ibus_dbus_input_context_proxy_parent_class)->finalize (object); } static void ibus_dbus_input_context_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = (const _ExtendedGDBusPropertyInfo *) _ibus_dbus_input_context_property_info_pointers[prop_id - 1]; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name); if (info->use_gvariant) { g_value_set_variant (value, variant); } else { if (variant != NULL) g_dbus_gvariant_to_gvalue (variant, value); } if (variant != NULL) g_variant_unref (variant); } static void ibus_dbus_input_context_proxy_set_property_cb (GDBusProxy *proxy, GAsyncResult *res, gpointer user_data) { const _ExtendedGDBusPropertyInfo *info = user_data; GError *error; GVariant *_ret; error = NULL; _ret = g_dbus_proxy_call_finish (proxy, res, &error); if (!_ret) { g_warning ("Error setting property '%s' on interface org.freedesktop.IBus.InputContext: %s (%s, %d)", info->parent_struct.name, error->message, g_quark_to_string (error->domain), error->code); g_error_free (error); } else { g_variant_unref (_ret); } } static void ibus_dbus_input_context_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { const _ExtendedGDBusPropertyInfo *info; GVariant *variant; g_assert (prop_id != 0 && prop_id - 1 < 2); info = (const _ExtendedGDBusPropertyInfo *) _ibus_dbus_input_context_property_info_pointers[prop_id - 1]; variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature)); g_dbus_proxy_call (G_DBUS_PROXY (object), "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", "org.freedesktop.IBus.InputContext", info->parent_struct.name, variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) ibus_dbus_input_context_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct); g_variant_unref (variant); } static void ibus_dbus_input_context_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ibus_dbus_input_context_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], IBUS_DBUS_TYPE_INPUT_CONTEXT); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, IBUS_DBUS_TYPE_INPUT_CONTEXT); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void ibus_dbus_input_context_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { IBusDbusInputContextProxy *proxy = IBUS_DBUS_INPUT_CONTEXT_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_input_context_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_input_context_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static GVariant * ibus_dbus_input_context_proxy_get_content_type (IBusDbusInputContext *object) { IBusDbusInputContextProxy *proxy = IBUS_DBUS_INPUT_CONTEXT_PROXY (object); GVariant *variant; GVariant *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ContentType"); value = variant; if (variant != NULL) g_variant_unref (variant); return value; } static GVariant * ibus_dbus_input_context_proxy_get_client_commit_preedit (IBusDbusInputContext *object) { IBusDbusInputContextProxy *proxy = IBUS_DBUS_INPUT_CONTEXT_PROXY (object); GVariant *variant; GVariant *value = NULL; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "ClientCommitPreedit"); value = variant; if (variant != NULL) g_variant_unref (variant); return value; } static void ibus_dbus_input_context_proxy_init (IBusDbusInputContextProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = ibus_dbus_input_context_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, IBUS_DBUS_TYPE_INPUT_CONTEXT_PROXY, IBusDbusInputContextProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ibus_dbus_input_context_interface_info ()); } static void ibus_dbus_input_context_proxy_class_init (IBusDbusInputContextProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = ibus_dbus_input_context_proxy_finalize; gobject_class->get_property = ibus_dbus_input_context_proxy_get_property; gobject_class->set_property = ibus_dbus_input_context_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = ibus_dbus_input_context_proxy_g_signal; proxy_class->g_properties_changed = ibus_dbus_input_context_proxy_g_properties_changed; ibus_dbus_input_context_override_properties (gobject_class, 1); #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (IBusDbusInputContextProxyPrivate)); #endif } static void ibus_dbus_input_context_proxy_iface_init (IBusDbusInputContextIface *iface) { iface->get_content_type = ibus_dbus_input_context_proxy_get_content_type; iface->get_client_commit_preedit = ibus_dbus_input_context_proxy_get_client_commit_preedit; } /** * ibus_dbus_input_context_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.freedesktop.IBus.InputContext. See g_dbus_proxy_new() for more details. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_proxy_new_finish() to get the result of the operation. * * See ibus_dbus_input_context_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void ibus_dbus_input_context_proxy_new ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (IBUS_DBUS_TYPE_INPUT_CONTEXT_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.InputContext", NULL); } /** * ibus_dbus_input_context_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with ibus_dbus_input_context_proxy_new(). * * Returns: (transfer full) (type IBusDbusInputContextProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusInputContext * ibus_dbus_input_context_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return IBUS_DBUS_INPUT_CONTEXT (ret); else return NULL; } /** * ibus_dbus_input_context_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.freedesktop.IBus.InputContext. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type IBusDbusInputContextProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusInputContext * ibus_dbus_input_context_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (IBUS_DBUS_TYPE_INPUT_CONTEXT_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.InputContext", NULL); if (ret != NULL) return IBUS_DBUS_INPUT_CONTEXT (ret); else return NULL; } /** * ibus_dbus_input_context_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like ibus_dbus_input_context_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_input_context_proxy_new_for_bus_finish() to get the result of the operation. * * See ibus_dbus_input_context_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void ibus_dbus_input_context_proxy_new_for_bus ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (IBUS_DBUS_TYPE_INPUT_CONTEXT_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.InputContext", NULL); } /** * ibus_dbus_input_context_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_input_context_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with ibus_dbus_input_context_proxy_new_for_bus(). * * Returns: (transfer full) (type IBusDbusInputContextProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusInputContext * ibus_dbus_input_context_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return IBUS_DBUS_INPUT_CONTEXT (ret); else return NULL; } /** * ibus_dbus_input_context_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like ibus_dbus_input_context_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See ibus_dbus_input_context_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type IBusDbusInputContextProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusInputContext * ibus_dbus_input_context_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (IBUS_DBUS_TYPE_INPUT_CONTEXT_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.InputContext", NULL); if (ret != NULL) return IBUS_DBUS_INPUT_CONTEXT (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * IBusDbusInputContextSkeleton: * * The #IBusDbusInputContextSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * IBusDbusInputContextSkeletonClass: * @parent_class: The parent class. * * Class structure for #IBusDbusInputContextSkeleton. */ struct _IBusDbusInputContextSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _ibus_dbus_input_context_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], IBUS_DBUS_TYPE_INPUT_CONTEXT); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, IBUS_DBUS_TYPE_INPUT_CONTEXT); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _ibus_dbus_input_context_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_input_context_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _ibus_dbus_input_context_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_input_context_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _ibus_dbus_input_context_skeleton_vtable = { _ibus_dbus_input_context_skeleton_handle_method_call, _ibus_dbus_input_context_skeleton_handle_get_property, _ibus_dbus_input_context_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * ibus_dbus_input_context_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return ibus_dbus_input_context_interface_info (); } static GDBusInterfaceVTable * ibus_dbus_input_context_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_ibus_dbus_input_context_skeleton_vtable; } static GVariant * ibus_dbus_input_context_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_ibus_dbus_input_context_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _ibus_dbus_input_context_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _ibus_dbus_input_context_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _ibus_dbus_input_context_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static gboolean _ibus_dbus_input_context_emit_changed (gpointer user_data); static void ibus_dbus_input_context_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (_skeleton); gboolean emit_changed = FALSE; g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties_idle_source != NULL) { g_source_destroy (skeleton->priv->changed_properties_idle_source); skeleton->priv->changed_properties_idle_source = NULL; emit_changed = TRUE; } g_mutex_unlock (&skeleton->priv->lock); if (emit_changed) _ibus_dbus_input_context_emit_changed (skeleton); } static void _ibus_dbus_input_context_on_signal_commit_text ( IBusDbusInputContext *object, GVariant *arg_text) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(@v)", arg_text)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "CommitText", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_forward_key_event ( IBusDbusInputContext *object, guint arg_keyval, guint arg_keycode, guint arg_state) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(uuu)", arg_keyval, arg_keycode, arg_state)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "ForwardKeyEvent", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_update_preedit_text ( IBusDbusInputContext *object, GVariant *arg_text, guint arg_cursor_pos, gboolean arg_visible) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(@vub)", arg_text, arg_cursor_pos, arg_visible)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "UpdatePreeditText", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_update_preedit_text_with_mode ( IBusDbusInputContext *object, GVariant *arg_text, guint arg_cursor_pos, gboolean arg_visible, guint arg_mode) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(@vubu)", arg_text, arg_cursor_pos, arg_visible, arg_mode)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "UpdatePreeditTextWithMode", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_show_preedit_text ( IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("()")); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "ShowPreeditText", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_hide_preedit_text ( IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("()")); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "HidePreeditText", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_update_auxiliary_text ( IBusDbusInputContext *object, GVariant *arg_text, gboolean arg_visible) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(@vb)", arg_text, arg_visible)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "UpdateAuxiliaryText", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_show_auxiliary_text ( IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("()")); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "ShowAuxiliaryText", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_hide_auxiliary_text ( IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("()")); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "HideAuxiliaryText", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_update_lookup_table ( IBusDbusInputContext *object, GVariant *arg_table, gboolean arg_visible) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(@vb)", arg_table, arg_visible)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "UpdateLookupTable", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_show_lookup_table ( IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("()")); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "ShowLookupTable", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_hide_lookup_table ( IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("()")); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "HideLookupTable", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_page_up_lookup_table ( IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("()")); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "PageUpLookupTable", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_page_down_lookup_table ( IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("()")); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "PageDownLookupTable", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_cursor_up_lookup_table ( IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("()")); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "CursorUpLookupTable", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_cursor_down_lookup_table ( IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("()")); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "CursorDownLookupTable", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_register_properties ( IBusDbusInputContext *object, GVariant *arg_props) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(@v)", arg_props)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "RegisterProperties", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void _ibus_dbus_input_context_on_signal_update_property ( IBusDbusInputContext *object, GVariant *arg_prop) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GList *connections, *l; GVariant *signal_variant; connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); signal_variant = g_variant_ref_sink (g_variant_new ("(@v)", arg_prop)); for (l = connections; l != NULL; l = l->next) { GDBusConnection *connection = l->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.InputContext", "UpdateProperty", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } static void ibus_dbus_input_context_skeleton_iface_init (IBusDbusInputContextIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (IBusDbusInputContextSkeleton, ibus_dbus_input_context_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (IBusDbusInputContextSkeleton) G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_INPUT_CONTEXT, ibus_dbus_input_context_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (IBusDbusInputContextSkeleton, ibus_dbus_input_context_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_INPUT_CONTEXT, ibus_dbus_input_context_skeleton_iface_init)) #endif static void ibus_dbus_input_context_skeleton_finalize (GObject *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); guint n; for (n = 0; n < 2; n++) g_value_unset (&skeleton->priv->properties[n]); g_free (skeleton->priv->properties); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (ibus_dbus_input_context_skeleton_parent_class)->finalize (object); } static void ibus_dbus_input_context_skeleton_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); g_mutex_lock (&skeleton->priv->lock); g_value_copy (&skeleton->priv->properties[prop_id - 1], value); g_mutex_unlock (&skeleton->priv->lock); } static gboolean _ibus_dbus_input_context_emit_changed (gpointer user_data) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (user_data); GList *l; GVariantBuilder builder; GVariantBuilder invalidated_builder; guint num_changes; g_mutex_lock (&skeleton->priv->lock); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as")); for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next) { ChangedProperty *cp = l->data; GVariant *variant; const GValue *cur_value; cur_value = &skeleton->priv->properties[cp->prop_id - 1]; if (!_g_value_equal (cur_value, &cp->orig_value)) { variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature)); g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant); g_variant_unref (variant); num_changes++; } } if (num_changes > 0) { GList *connections, *ll; GVariant *signal_variant; signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "org.freedesktop.IBus.InputContext", &builder, &invalidated_builder)); connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); for (ll = connections; ll != NULL; ll = ll->next) { GDBusConnection *connection = ll->data; g_dbus_connection_emit_signal (connection, NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus.Properties", "PropertiesChanged", signal_variant, NULL); } g_variant_unref (signal_variant); g_list_free_full (connections, g_object_unref); } else { g_variant_builder_clear (&builder); g_variant_builder_clear (&invalidated_builder); } g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); skeleton->priv->changed_properties = NULL; skeleton->priv->changed_properties_idle_source = NULL; g_mutex_unlock (&skeleton->priv->lock); return FALSE; } static void _ibus_dbus_input_context_schedule_emit_changed (IBusDbusInputContextSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value) { ChangedProperty *cp; GList *l; cp = NULL; for (l = skeleton->priv->changed_properties; l != NULL; l = l->next) { ChangedProperty *i_cp = l->data; if (i_cp->info == info) { cp = i_cp; break; } } if (cp == NULL) { cp = g_new0 (ChangedProperty, 1); cp->prop_id = prop_id; cp->info = info; skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp); g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value)); g_value_copy (orig_value, &cp->orig_value); } } static void ibus_dbus_input_context_skeleton_notify (GObject *object, GParamSpec *pspec G_GNUC_UNUSED) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); g_mutex_lock (&skeleton->priv->lock); if (skeleton->priv->changed_properties != NULL && skeleton->priv->changed_properties_idle_source == NULL) { skeleton->priv->changed_properties_idle_source = g_idle_source_new (); g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT); g_source_set_callback (skeleton->priv->changed_properties_idle_source, _ibus_dbus_input_context_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref); g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _ibus_dbus_input_context_emit_changed"); g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context); g_source_unref (skeleton->priv->changed_properties_idle_source); } g_mutex_unlock (&skeleton->priv->lock); } static void ibus_dbus_input_context_skeleton_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { const _ExtendedGDBusPropertyInfo *info; IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); g_assert (prop_id != 0 && prop_id - 1 < 2); info = (const _ExtendedGDBusPropertyInfo *) _ibus_dbus_input_context_property_info_pointers[prop_id - 1]; g_mutex_lock (&skeleton->priv->lock); g_object_freeze_notify (object); if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1])) { if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL && info->emits_changed_signal) _ibus_dbus_input_context_schedule_emit_changed (skeleton, info, prop_id, &skeleton->priv->properties[prop_id - 1]); g_value_copy (value, &skeleton->priv->properties[prop_id - 1]); g_object_notify_by_pspec (object, pspec); } g_mutex_unlock (&skeleton->priv->lock); g_object_thaw_notify (object); } static void ibus_dbus_input_context_skeleton_init (IBusDbusInputContextSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = ibus_dbus_input_context_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, IBUS_DBUS_TYPE_INPUT_CONTEXT_SKELETON, IBusDbusInputContextSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); skeleton->priv->properties = g_new0 (GValue, 2); g_value_init (&skeleton->priv->properties[0], G_TYPE_VARIANT); g_value_init (&skeleton->priv->properties[1], G_TYPE_VARIANT); } static GVariant * ibus_dbus_input_context_skeleton_get_content_type (IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GVariant *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_variant (&(skeleton->priv->properties[0])); g_mutex_unlock (&skeleton->priv->lock); return value; } static GVariant * ibus_dbus_input_context_skeleton_get_client_commit_preedit (IBusDbusInputContext *object) { IBusDbusInputContextSkeleton *skeleton = IBUS_DBUS_INPUT_CONTEXT_SKELETON (object); GVariant *value; g_mutex_lock (&skeleton->priv->lock); value = g_value_get_variant (&(skeleton->priv->properties[1])); g_mutex_unlock (&skeleton->priv->lock); return value; } static void ibus_dbus_input_context_skeleton_class_init (IBusDbusInputContextSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = ibus_dbus_input_context_skeleton_finalize; gobject_class->get_property = ibus_dbus_input_context_skeleton_get_property; gobject_class->set_property = ibus_dbus_input_context_skeleton_set_property; gobject_class->notify = ibus_dbus_input_context_skeleton_notify; ibus_dbus_input_context_override_properties (gobject_class, 1); skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = ibus_dbus_input_context_skeleton_dbus_interface_get_info; skeleton_class->get_properties = ibus_dbus_input_context_skeleton_dbus_interface_get_properties; skeleton_class->flush = ibus_dbus_input_context_skeleton_dbus_interface_flush; skeleton_class->get_vtable = ibus_dbus_input_context_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (IBusDbusInputContextSkeletonPrivate)); #endif } static void ibus_dbus_input_context_skeleton_iface_init (IBusDbusInputContextIface *iface) { iface->commit_text = _ibus_dbus_input_context_on_signal_commit_text; iface->forward_key_event = _ibus_dbus_input_context_on_signal_forward_key_event; iface->update_preedit_text = _ibus_dbus_input_context_on_signal_update_preedit_text; iface->update_preedit_text_with_mode = _ibus_dbus_input_context_on_signal_update_preedit_text_with_mode; iface->show_preedit_text = _ibus_dbus_input_context_on_signal_show_preedit_text; iface->hide_preedit_text = _ibus_dbus_input_context_on_signal_hide_preedit_text; iface->update_auxiliary_text = _ibus_dbus_input_context_on_signal_update_auxiliary_text; iface->show_auxiliary_text = _ibus_dbus_input_context_on_signal_show_auxiliary_text; iface->hide_auxiliary_text = _ibus_dbus_input_context_on_signal_hide_auxiliary_text; iface->update_lookup_table = _ibus_dbus_input_context_on_signal_update_lookup_table; iface->show_lookup_table = _ibus_dbus_input_context_on_signal_show_lookup_table; iface->hide_lookup_table = _ibus_dbus_input_context_on_signal_hide_lookup_table; iface->page_up_lookup_table = _ibus_dbus_input_context_on_signal_page_up_lookup_table; iface->page_down_lookup_table = _ibus_dbus_input_context_on_signal_page_down_lookup_table; iface->cursor_up_lookup_table = _ibus_dbus_input_context_on_signal_cursor_up_lookup_table; iface->cursor_down_lookup_table = _ibus_dbus_input_context_on_signal_cursor_down_lookup_table; iface->register_properties = _ibus_dbus_input_context_on_signal_register_properties; iface->update_property = _ibus_dbus_input_context_on_signal_update_property; iface->get_content_type = ibus_dbus_input_context_skeleton_get_content_type; iface->get_client_commit_preedit = ibus_dbus_input_context_skeleton_get_client_commit_preedit; } /** * ibus_dbus_input_context_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.freedesktop.IBus.InputContext. * * Returns: (transfer full) (type IBusDbusInputContextSkeleton): The skeleton object. */ IBusDbusInputContext * ibus_dbus_input_context_skeleton_new (void) { return IBUS_DBUS_INPUT_CONTEXT (g_object_new (IBUS_DBUS_TYPE_INPUT_CONTEXT_SKELETON, NULL)); } /* ------------------------------------------------------------------------ * Code for interface org.freedesktop.IBus.Service * ------------------------------------------------------------------------ */ /** * SECTION:IBusDbusService * @title: IBusDbusService * @short_description: Generated C code for the org.freedesktop.IBus.Service D-Bus interface * * This section contains code for working with the org.freedesktop.IBus.Service D-Bus interface in C. */ /* ---- Introspection data for org.freedesktop.IBus.Service ---- */ static const _ExtendedGDBusMethodInfo _ibus_dbus_service_method_info_destroy = { { -1, (gchar *) "Destroy", NULL, NULL, NULL }, "handle-destroy", FALSE }; static const GDBusMethodInfo * const _ibus_dbus_service_method_info_pointers[] = { &_ibus_dbus_service_method_info_destroy.parent_struct, NULL }; static const _ExtendedGDBusInterfaceInfo _ibus_dbus_service_interface_info = { { -1, (gchar *) "org.freedesktop.IBus.Service", (GDBusMethodInfo **) &_ibus_dbus_service_method_info_pointers, NULL, NULL, NULL }, "service", }; /** * ibus_dbus_service_interface_info: * * Gets a machine-readable description of the org.freedesktop.IBus.Service D-Bus interface. * * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. */ GDBusInterfaceInfo * ibus_dbus_service_interface_info (void) { return (GDBusInterfaceInfo *) &_ibus_dbus_service_interface_info.parent_struct; } /** * ibus_dbus_service_override_properties: * @klass: The class structure for a #GObject derived class. * @property_id_begin: The property id to assign to the first overridden property. * * Overrides all #GObject properties in the #IBusDbusService interface for a concrete class. * The properties are overridden in the order they are defined. * * Returns: The last property id. */ guint ibus_dbus_service_override_properties (GObjectClass *klass, guint property_id_begin) { return property_id_begin - 1; } /** * IBusDbusService: * * Abstract interface type for the D-Bus interface org.freedesktop.IBus.Service. */ /** * IBusDbusServiceIface: * @parent_iface: The parent interface. * @handle_destroy: Handler for the #IBusDbusService::handle-destroy signal. * * Virtual table for the D-Bus interface org.freedesktop.IBus.Service. */ typedef IBusDbusServiceIface IBusDbusServiceInterface; G_DEFINE_INTERFACE (IBusDbusService, ibus_dbus_service, G_TYPE_OBJECT) static void ibus_dbus_service_default_init (IBusDbusServiceIface *iface) { /* GObject signals for incoming D-Bus method calls: */ /** * IBusDbusService::handle-destroy: * @object: A #IBusDbusService. * @invocation: A #GDBusMethodInvocation. * * Signal emitted when a remote caller is invoking the Destroy() D-Bus method. * * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call ibus_dbus_service_complete_destroy() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned. * * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. */ g_signal_new ("handle-destroy", G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusDbusServiceIface, handle_destroy), g_signal_accumulator_true_handled, NULL, g_cclosure_marshal_generic, G_TYPE_BOOLEAN, 1, G_TYPE_DBUS_METHOD_INVOCATION); } /** * ibus_dbus_service_call_destroy: * @proxy: A #IBusDbusServiceProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. * @user_data: User data to pass to @callback. * * Asynchronously invokes the Destroy() D-Bus method on @proxy. * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_service_call_destroy_finish() to get the result of the operation. * * See ibus_dbus_service_call_destroy_sync() for the synchronous, blocking version of this method. */ void ibus_dbus_service_call_destroy ( IBusDbusService *proxy, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_dbus_proxy_call (G_DBUS_PROXY (proxy), "Destroy", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, callback, user_data); } /** * ibus_dbus_service_call_destroy_finish: * @proxy: A #IBusDbusServiceProxy. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_service_call_destroy(). * @error: Return location for error or %NULL. * * Finishes an operation started with ibus_dbus_service_call_destroy(). * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_service_call_destroy_finish ( IBusDbusService *proxy, GAsyncResult *res, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_service_call_destroy_sync: * @proxy: A #IBusDbusServiceProxy. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * * Synchronously invokes the Destroy() D-Bus method on @proxy. The calling thread is blocked until a reply is received. * * See ibus_dbus_service_call_destroy() for the asynchronous version of this method. * * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. */ gboolean ibus_dbus_service_call_destroy_sync ( IBusDbusService *proxy, GCancellable *cancellable, GError **error) { GVariant *_ret; _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), "Destroy", g_variant_new ("()"), G_DBUS_CALL_FLAGS_NONE, -1, cancellable, error); if (_ret == NULL) goto _out; g_variant_get (_ret, "()"); g_variant_unref (_ret); _out: return _ret != NULL; } /** * ibus_dbus_service_complete_destroy: * @object: A #IBusDbusService. * @invocation: (transfer full): A #GDBusMethodInvocation. * * Helper function used in service implementations to finish handling invocations of the Destroy() D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar. * * This method will free @invocation, you cannot use it afterwards. */ void ibus_dbus_service_complete_destroy ( IBusDbusService *object, GDBusMethodInvocation *invocation) { g_dbus_method_invocation_return_value (invocation, g_variant_new ("()")); } /* ------------------------------------------------------------------------ */ /** * IBusDbusServiceProxy: * * The #IBusDbusServiceProxy structure contains only private data and should only be accessed using the provided API. */ /** * IBusDbusServiceProxyClass: * @parent_class: The parent class. * * Class structure for #IBusDbusServiceProxy. */ struct _IBusDbusServiceProxyPrivate { GData *qdata; }; static void ibus_dbus_service_proxy_iface_init (IBusDbusServiceIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (IBusDbusServiceProxy, ibus_dbus_service_proxy, G_TYPE_DBUS_PROXY, G_ADD_PRIVATE (IBusDbusServiceProxy) G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_SERVICE, ibus_dbus_service_proxy_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (IBusDbusServiceProxy, ibus_dbus_service_proxy, G_TYPE_DBUS_PROXY, G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_SERVICE, ibus_dbus_service_proxy_iface_init)) #endif static void ibus_dbus_service_proxy_finalize (GObject *object) { IBusDbusServiceProxy *proxy = IBUS_DBUS_SERVICE_PROXY (object); g_datalist_clear (&proxy->priv->qdata); G_OBJECT_CLASS (ibus_dbus_service_proxy_parent_class)->finalize (object); } static void ibus_dbus_service_proxy_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void ibus_dbus_service_proxy_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec G_GNUC_UNUSED) { } static void ibus_dbus_service_proxy_g_signal (GDBusProxy *proxy, const gchar *sender_name G_GNUC_UNUSED, const gchar *signal_name, GVariant *parameters) { _ExtendedGDBusSignalInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; gsize n; guint signal_id; info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_ibus_dbus_service_interface_info.parent_struct, signal_name); if (info == NULL) return; num_params = g_variant_n_children (parameters); paramv = g_new0 (GValue, num_params + 1); g_value_init (¶mv[0], IBUS_DBUS_TYPE_SERVICE); g_value_set_object (¶mv[0], proxy); g_variant_iter_init (&iter, parameters); n = 1; while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, IBUS_DBUS_TYPE_SERVICE); g_signal_emitv (paramv, signal_id, 0, NULL); for (n = 0; n < num_params + 1; n++) g_value_unset (¶mv[n]); g_free (paramv); } static void ibus_dbus_service_proxy_g_properties_changed (GDBusProxy *_proxy, GVariant *changed_properties, const gchar *const *invalidated_properties) { IBusDbusServiceProxy *proxy = IBUS_DBUS_SERVICE_PROXY (_proxy); guint n; const gchar *key; GVariantIter *iter; _ExtendedGDBusPropertyInfo *info; g_variant_get (changed_properties, "a{sv}", &iter); while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_service_interface_info.parent_struct, key); g_datalist_remove_data (&proxy->priv->qdata, key); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } g_variant_iter_free (iter); for (n = 0; invalidated_properties[n] != NULL; n++) { info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_service_interface_info.parent_struct, invalidated_properties[n]); g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); if (info != NULL) g_object_notify (G_OBJECT (proxy), info->hyphen_name); } } static void ibus_dbus_service_proxy_init (IBusDbusServiceProxy *proxy) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 proxy->priv = ibus_dbus_service_proxy_get_instance_private (proxy); #else proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, IBUS_DBUS_TYPE_SERVICE_PROXY, IBusDbusServiceProxyPrivate); #endif g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), ibus_dbus_service_interface_info ()); } static void ibus_dbus_service_proxy_class_init (IBusDbusServiceProxyClass *klass) { GObjectClass *gobject_class; GDBusProxyClass *proxy_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = ibus_dbus_service_proxy_finalize; gobject_class->get_property = ibus_dbus_service_proxy_get_property; gobject_class->set_property = ibus_dbus_service_proxy_set_property; proxy_class = G_DBUS_PROXY_CLASS (klass); proxy_class->g_signal = ibus_dbus_service_proxy_g_signal; proxy_class->g_properties_changed = ibus_dbus_service_proxy_g_properties_changed; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (IBusDbusServiceProxyPrivate)); #endif } static void ibus_dbus_service_proxy_iface_init (IBusDbusServiceIface *iface) { } /** * ibus_dbus_service_proxy_new: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Asynchronously creates a proxy for the D-Bus interface org.freedesktop.IBus.Service. See g_dbus_proxy_new() for more details. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_service_proxy_new_finish() to get the result of the operation. * * See ibus_dbus_service_proxy_new_sync() for the synchronous, blocking version of this constructor. */ void ibus_dbus_service_proxy_new ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (IBUS_DBUS_TYPE_SERVICE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.Service", NULL); } /** * ibus_dbus_service_proxy_new_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_service_proxy_new(). * @error: Return location for error or %NULL * * Finishes an operation started with ibus_dbus_service_proxy_new(). * * Returns: (transfer full) (type IBusDbusServiceProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusService * ibus_dbus_service_proxy_new_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return IBUS_DBUS_SERVICE (ret); else return NULL; } /** * ibus_dbus_service_proxy_new_sync: * @connection: A #GDBusConnection. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Synchronously creates a proxy for the D-Bus interface org.freedesktop.IBus.Service. See g_dbus_proxy_new_sync() for more details. * * The calling thread is blocked until a reply is received. * * See ibus_dbus_service_proxy_new() for the asynchronous version of this constructor. * * Returns: (transfer full) (type IBusDbusServiceProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusService * ibus_dbus_service_proxy_new_sync ( GDBusConnection *connection, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (IBUS_DBUS_TYPE_SERVICE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.Service", NULL); if (ret != NULL) return IBUS_DBUS_SERVICE (ret); else return NULL; } /** * ibus_dbus_service_proxy_new_for_bus: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @callback: A #GAsyncReadyCallback to call when the request is satisfied. * @user_data: User data to pass to @callback. * * Like ibus_dbus_service_proxy_new() but takes a #GBusType instead of a #GDBusConnection. * * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()). * You can then call ibus_dbus_service_proxy_new_for_bus_finish() to get the result of the operation. * * See ibus_dbus_service_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. */ void ibus_dbus_service_proxy_new_for_bus ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_async_initable_new_async (IBUS_DBUS_TYPE_SERVICE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.Service", NULL); } /** * ibus_dbus_service_proxy_new_for_bus_finish: * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to ibus_dbus_service_proxy_new_for_bus(). * @error: Return location for error or %NULL * * Finishes an operation started with ibus_dbus_service_proxy_new_for_bus(). * * Returns: (transfer full) (type IBusDbusServiceProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusService * ibus_dbus_service_proxy_new_for_bus_finish ( GAsyncResult *res, GError **error) { GObject *ret; GObject *source_object; source_object = g_async_result_get_source_object (res); ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); g_object_unref (source_object); if (ret != NULL) return IBUS_DBUS_SERVICE (ret); else return NULL; } /** * ibus_dbus_service_proxy_new_for_bus_sync: * @bus_type: A #GBusType. * @flags: Flags from the #GDBusProxyFlags enumeration. * @name: A bus name (well-known or unique). * @object_path: An object path. * @cancellable: (nullable): A #GCancellable or %NULL. * @error: Return location for error or %NULL * * Like ibus_dbus_service_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. * * The calling thread is blocked until a reply is received. * * See ibus_dbus_service_proxy_new_for_bus() for the asynchronous version of this constructor. * * Returns: (transfer full) (type IBusDbusServiceProxy): The constructed proxy object or %NULL if @error is set. */ IBusDbusService * ibus_dbus_service_proxy_new_for_bus_sync ( GBusType bus_type, GDBusProxyFlags flags, const gchar *name, const gchar *object_path, GCancellable *cancellable, GError **error) { GInitable *ret; ret = g_initable_new (IBUS_DBUS_TYPE_SERVICE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.IBus.Service", NULL); if (ret != NULL) return IBUS_DBUS_SERVICE (ret); else return NULL; } /* ------------------------------------------------------------------------ */ /** * IBusDbusServiceSkeleton: * * The #IBusDbusServiceSkeleton structure contains only private data and should only be accessed using the provided API. */ /** * IBusDbusServiceSkeletonClass: * @parent_class: The parent class. * * Class structure for #IBusDbusServiceSkeleton. */ struct _IBusDbusServiceSkeletonPrivate { GValue *properties; GList *changed_properties; GSource *changed_properties_idle_source; GMainContext *context; GMutex lock; }; static void _ibus_dbus_service_skeleton_handle_method_call ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, const gchar *method_name, GVariant *parameters, GDBusMethodInvocation *invocation, gpointer user_data) { IBusDbusServiceSkeleton *skeleton = IBUS_DBUS_SERVICE_SKELETON (user_data); _ExtendedGDBusMethodInfo *info; GVariantIter iter; GVariant *child; GValue *paramv; gsize num_params; guint num_extra; gsize n; guint signal_id; GValue return_value = G_VALUE_INIT; info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); g_assert (info != NULL); num_params = g_variant_n_children (parameters); num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); n = 0; g_value_init (¶mv[n], IBUS_DBUS_TYPE_SERVICE); g_value_set_object (¶mv[n++], skeleton); g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); g_value_set_object (¶mv[n++], invocation); if (info->pass_fdlist) { #ifdef G_OS_UNIX g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); #else g_assert_not_reached (); #endif } g_variant_iter_init (&iter, parameters); while ((child = g_variant_iter_next_value (&iter)) != NULL) { _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; if (arg_info->use_gvariant) { g_value_init (¶mv[n], G_TYPE_VARIANT); g_value_set_variant (¶mv[n], child); n++; } else g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); g_variant_unref (child); } signal_id = g_signal_lookup (info->signal_name, IBUS_DBUS_TYPE_SERVICE); g_value_init (&return_value, G_TYPE_BOOLEAN); g_signal_emitv (paramv, signal_id, 0, &return_value); if (!g_value_get_boolean (&return_value)) g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name); g_value_unset (&return_value); for (n = 0; n < num_params + num_extra; n++) g_value_unset (¶mv[n]); g_free (paramv); } static GVariant * _ibus_dbus_service_skeleton_handle_get_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GError **error, gpointer user_data) { IBusDbusServiceSkeleton *skeleton = IBUS_DBUS_SERVICE_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; GVariant *ret; ret = NULL; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_service_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { g_value_init (&value, pspec->value_type); g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); g_value_unset (&value); } return ret; } static gboolean _ibus_dbus_service_skeleton_handle_set_property ( GDBusConnection *connection G_GNUC_UNUSED, const gchar *sender G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name G_GNUC_UNUSED, const gchar *property_name, GVariant *variant, GError **error, gpointer user_data) { IBusDbusServiceSkeleton *skeleton = IBUS_DBUS_SERVICE_SKELETON (user_data); GValue value = G_VALUE_INIT; GParamSpec *pspec; _ExtendedGDBusPropertyInfo *info; gboolean ret; ret = FALSE; info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_ibus_dbus_service_interface_info.parent_struct, property_name); g_assert (info != NULL); pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); if (pspec == NULL) { g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); } else { if (info->use_gvariant) g_value_set_variant (&value, variant); else g_dbus_gvariant_to_gvalue (variant, &value); g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); g_value_unset (&value); ret = TRUE; } return ret; } static const GDBusInterfaceVTable _ibus_dbus_service_skeleton_vtable = { _ibus_dbus_service_skeleton_handle_method_call, _ibus_dbus_service_skeleton_handle_get_property, _ibus_dbus_service_skeleton_handle_set_property, {NULL} }; static GDBusInterfaceInfo * ibus_dbus_service_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return ibus_dbus_service_interface_info (); } static GDBusInterfaceVTable * ibus_dbus_service_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) { return (GDBusInterfaceVTable *) &_ibus_dbus_service_skeleton_vtable; } static GVariant * ibus_dbus_service_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) { IBusDbusServiceSkeleton *skeleton = IBUS_DBUS_SERVICE_SKELETON (_skeleton); GVariantBuilder builder; guint n; g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); if (_ibus_dbus_service_interface_info.parent_struct.properties == NULL) goto out; for (n = 0; _ibus_dbus_service_interface_info.parent_struct.properties[n] != NULL; n++) { GDBusPropertyInfo *info = _ibus_dbus_service_interface_info.parent_struct.properties[n]; if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) { GVariant *value; value = _ibus_dbus_service_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.IBus.Service", info->name, NULL, skeleton); if (value != NULL) { g_variant_take_ref (value); g_variant_builder_add (&builder, "{sv}", info->name, value); g_variant_unref (value); } } } out: return g_variant_builder_end (&builder); } static void ibus_dbus_service_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) { } static void ibus_dbus_service_skeleton_iface_init (IBusDbusServiceIface *iface); #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 G_DEFINE_TYPE_WITH_CODE (IBusDbusServiceSkeleton, ibus_dbus_service_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_ADD_PRIVATE (IBusDbusServiceSkeleton) G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_SERVICE, ibus_dbus_service_skeleton_iface_init)) #else G_DEFINE_TYPE_WITH_CODE (IBusDbusServiceSkeleton, ibus_dbus_service_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, G_IMPLEMENT_INTERFACE (IBUS_DBUS_TYPE_SERVICE, ibus_dbus_service_skeleton_iface_init)) #endif static void ibus_dbus_service_skeleton_finalize (GObject *object) { IBusDbusServiceSkeleton *skeleton = IBUS_DBUS_SERVICE_SKELETON (object); g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); if (skeleton->priv->changed_properties_idle_source != NULL) g_source_destroy (skeleton->priv->changed_properties_idle_source); g_main_context_unref (skeleton->priv->context); g_mutex_clear (&skeleton->priv->lock); G_OBJECT_CLASS (ibus_dbus_service_skeleton_parent_class)->finalize (object); } static void ibus_dbus_service_skeleton_init (IBusDbusServiceSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = ibus_dbus_service_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, IBUS_DBUS_TYPE_SERVICE_SKELETON, IBusDbusServiceSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } static void ibus_dbus_service_skeleton_class_init (IBusDbusServiceSkeletonClass *klass) { GObjectClass *gobject_class; GDBusInterfaceSkeletonClass *skeleton_class; gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = ibus_dbus_service_skeleton_finalize; skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); skeleton_class->get_info = ibus_dbus_service_skeleton_dbus_interface_get_info; skeleton_class->get_properties = ibus_dbus_service_skeleton_dbus_interface_get_properties; skeleton_class->flush = ibus_dbus_service_skeleton_dbus_interface_flush; skeleton_class->get_vtable = ibus_dbus_service_skeleton_dbus_interface_get_vtable; #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 g_type_class_add_private (klass, sizeof (IBusDbusServiceSkeletonPrivate)); #endif } static void ibus_dbus_service_skeleton_iface_init (IBusDbusServiceIface *iface) { } /** * ibus_dbus_service_skeleton_new: * * Creates a skeleton object for the D-Bus interface org.freedesktop.IBus.Service. * * Returns: (transfer full) (type IBusDbusServiceSkeleton): The skeleton object. */ IBusDbusService * ibus_dbus_service_skeleton_new (void) { return IBUS_DBUS_SERVICE (g_object_new (IBUS_DBUS_TYPE_SERVICE_SKELETON, NULL)); } ibus-1.5.22/Makefile.in0000644000000000000000000010745713623751263011525 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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-2016 Peng Huang # Copyright (c) 2015-2019 Takao Fujiwara # Copyright (c) 2007-2019 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 distdir-am 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 portal data m4 po docs \ engine ui tools bus ibus setup am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/ibus-1.0.pc.in $(srcdir)/ibus.spec.in ABOUT-NLS \ AUTHORS COPYING ChangeLog INSTALL NEWS README compile \ config.guess config.rpath 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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 \ portal \ data \ m4 \ po \ docs \ $(ENGINE_DIR) \ $(UI_DIR) \ tools \ $(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 = \ COPYING.unicode \ 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 \ --enable-memconf \ $(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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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) | eval GZIP= gzip $(GZIP_ENV) -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) | eval GZIP= gzip $(GZIP_ENV) -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*) \ eval GZIP= gzip $(GZIP_ENV) -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*) \ eval GZIP= gzip $(GZIP_ENV) -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 ; \ IBUS_PREV_MICRO_VERSION=`expr $(IBUS_MICRO_VERSION) - 1`; \ IBUS_PREV_VERSION=\ "$(IBUS_MAJOR_VERSION).$(IBUS_MINOR_VERSION).$$IBUS_PREV_MICRO_VERSION"; \ echo "Changes in IBus $(IBUS_VERSION)" > $(distdir)/NEWS; \ echo "" >> $(distdir)/NEWS; \ git shortlog $$IBUS_PREV_VERSION...$(IBUS_VERSION) \ >> $(distdir)/NEWS; \ echo "" >> $(distdir)/NEWS; \ git log $$IBUS_PREV_VERSION...$(IBUS_VERSION) --reverse \ --pretty=format:'%s (%an) %h' >> $(distdir)/NEWS; \ fi distclean-local: if test "x$(srcdir)" = "x."; then :; else \ rm -f ChangeLog; \ rm -f NEWS; \ 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 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.22/config.sub0000755000000000000000000007530413623751263011436 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2018 Free Software Foundation, Inc. timestamp='2018-08-29' # 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: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # 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 or ALIAS Canonicalize a configuration name. Options: -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-2018 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 # Split fields of configuration type IFS="-" read -r field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 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* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova*) basic_machine=$field1 os=$maybe_os ;; android-linux) basic_machine=$field1-unknown os=linux-android ;; *) basic_machine=$field1-$field2 os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any patern case $field1-$field2 in decstation-3100) basic_machine=mips-dec os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | 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* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 os= ;; *) basic_machine=$field1 os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc os=bsd ;; a29khif) basic_machine=a29k-amd os=udi ;; adobe68k) basic_machine=m68010-adobe os=scout ;; alliant) basic_machine=fx80-alliant os= ;; altos | altos3068) basic_machine=m68k-altos os= ;; am29k) basic_machine=a29k-none os=bsd ;; amdahl) basic_machine=580-amdahl os=sysv ;; amiga) basic_machine=m68k-unknown os= ;; 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 ;; 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) basic_machine=j90-cray os=unicos ;; crds | unos) basic_machine=m68k-crds os= ;; da30) basic_machine=m68k-da30 os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec os= ;; delta88) basic_machine=m88k-motorola os=sysv3 ;; dicos) basic_machine=i686-pc os=dicos ;; djgpp) basic_machine=i586-pc os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=ose ;; gmicro) basic_machine=tron-gmicro os=sysv ;; go32) basic_machine=i386-pc os=go32 ;; 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 ;; hppaosf) basic_machine=hppa1.1-hp os=osf ;; hppro) basic_machine=hppa1.1-hp os=proelf ;; i386mach) basic_machine=i386-mach os=mach ;; vsta) basic_machine=i386-pc os=vsta ;; isi68 | isi) basic_machine=m68k-isi os=sysv ;; m68knommu) basic_machine=m68k-unknown os=linux ;; magnum | m3230) basic_machine=mips-mips os=sysv ;; merlin) basic_machine=ns32k-utek os=sysv ;; mingw64) basic_machine=x86_64-pc os=mingw64 ;; mingw32) basic_machine=i686-pc os=mingw32 ;; mingw32ce) basic_machine=arm-unknown os=mingw32ce ;; 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 ;; 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-pc 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 ;; necv70) basic_machine=v70-nec os=sysv ;; 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 ;; os400) basic_machine=powerpc-ibm os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=ose ;; os68k) basic_machine=m68k-none os=os68k ;; paragon) basic_machine=i860-intel os=osf ;; parisc) basic_machine=hppa-unknown os=linux ;; 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 ;; sa29200) basic_machine=a29k-amd os=udi ;; sei) basic_machine=mips-sei os=seiux ;; sequent) basic_machine=i386-sequent os= ;; sps7) basic_machine=m68k-bull os=sysv2 ;; st2000) basic_machine=m68k-tandem os= ;; stratus) basic_machine=i860-stratus os=sysv4 ;; sun2) basic_machine=m68000-sun os= ;; sun2os3) basic_machine=m68000-sun os=sunos3 ;; sun2os4) basic_machine=m68000-sun os=sunos4 ;; sun3) basic_machine=m68k-sun os= ;; sun3os3) basic_machine=m68k-sun os=sunos3 ;; sun3os4) basic_machine=m68k-sun os=sunos4 ;; sun4) basic_machine=sparc-sun os= ;; sun4os3) basic_machine=sparc-sun os=sunos3 ;; sun4os4) basic_machine=sparc-sun os=sunos4 ;; sun4sol2) basic_machine=sparc-sun os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun os= ;; 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 ;; toad1) basic_machine=pdp10-xkl os=tops20 ;; 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 ;; vxworks960) basic_machine=i960-wrs os=vxworks ;; vxworks68) basic_machine=m68k-wrs os=vxworks ;; vxworks29k) basic_machine=a29k-wrs os=vxworks ;; xbox) basic_machine=i686-pc os=mingw32 ;; ymp) basic_machine=ymp-cray os=unicos ;; *) basic_machine=$1 os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # 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) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi os=${os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray os=${os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $os in irix*) ;; *) os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony os=newsos ;; next | m*-next) cpu=m68k vendor=next case $os in nextstep* ) ;; ns2*) os=nextstep2 ;; *) os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde os=${os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) IFS="-" read -r cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=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 ;; bluegene*) os=cnk ;; solaris1 | solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; solaris) os=solaris2 ;; unixware*) os=sysv4.2uw ;; gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # es1800 is here to avoid being matched by es* (a different OS) es1800*) os=ose ;; # Some version numbers need modification chorusos*) os=chorusos ;; isc) os=isc2.2 ;; sco6) os=sco5v6 ;; sco5) os=sco3.2v5 ;; sco4) os=sco3.2v4 ;; sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` ;; sco3.2v[4-9]* | sco5v6*) # Don't forget version if it is 3.2v4 or newer. ;; scout) # Don't match below ;; sco*) os=sco3.2v2 ;; psos*) os=psos ;; # Now 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* | esix* | aix* | cnk* | sunos | sunos[34]*\ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ | sym* | kopensolaris* | plan9* \ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ | aos* | aros* | cloudabi* | sortix* \ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ | knetbsd* | mirbsd* | netbsd* \ | bitrig* | openbsd* | solidbsd* | libertybsd* \ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ | chorusrdb* | cegcc* | glidix* \ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ | linux-newlib* | linux-musl* | linux-uclibc* \ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ | interix* | uwin* | mks* | rhapsody* | darwin* \ | openstep* | oskit* | conix* | pw32* | nonstopux* \ | storm-chaos* | tops10* | tenex* | tops20* | its* \ | os2* | vos* | palmos* | uclinux* | nucleus* \ | morphos* | superux* | rtmk* | windiss* \ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | midnightbsd*) # Remember, each alternative MUST END IN *, to match a version number. ;; qnx*) case $cpu in x86 | i*86) ;; *) os=nto-$os ;; esac ;; hiux*) os=hiuxwe2 ;; nto-qnx*) ;; nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; sim | xray | os68k* | v88r* \ | windows* | osx | abug | netware* | os9* \ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) ;; linux-dietlibc) os=linux-dietlibc ;; linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; lynx*178) os=lynxos178 ;; lynx*5) os=lynxos5 ;; lynx*) os=lynxos ;; mac*) os=`echo "$os" | sed -e 's|mac|macos|'` ;; opened*) os=openedition ;; os400*) os=os400 ;; sunos5*) os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; sunos6*) os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; wince*) os=wince ;; 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 ;; *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) os=mint ;; zvmoe) os=zvmoe ;; dicos*) os=dicos ;; pikeos*) # Until real need of OS specific support for # particular features comes up, bare metal # configurations are quite functional. case $cpu in arm*) os=eabi ;; *) os=elf ;; esac ;; nacl*) ;; ios) ;; none) ;; *-eabi) ;; *) 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 $cpu-$vendor 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 ;; clipper-intergraph) os=clix ;; 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 ;; pru-*) os=elf ;; *-be) os=beos ;; *-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 ;; *-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 ;; *-wrs) os=vxworks ;; *) 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. case $vendor 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 ;; clix*) vendor=intergraph ;; 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 ;; esac echo "$cpu-$vendor-$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ibus-1.5.22/docs/0000755000000000000000000000000013623751604010451 500000000000000ibus-1.5.22/docs/Makefile.am0000644000000000000000000000166713623750431012434 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.22/docs/Makefile.in0000644000000000000000000005662413623751264012455 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 distdir-am 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/docs/reference/0000755000000000000000000000000013623751605012410 500000000000000ibus-1.5.22/docs/reference/Makefile.am0000644000000000000000000000166113623750431014364 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.22/docs/reference/Makefile.in0000644000000000000000000005665513623751264014417 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 distdir-am 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/docs/reference/ibus/0000755000000000000000000000000013623751706013354 500000000000000ibus-1.5.22/docs/reference/ibus/Makefile.am0000644000000000000000000001164713623750431015333 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.22/docs/reference/ibus/Makefile.in0000644000000000000000000010131413623751264015340 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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 -*- # # gtk-doc.make - make rules for gtk-doc # Copyright (C) 2003 James Henstridge # 2004-2007 Damon Chaplin # 2007-2017 Stefan Sauer # # 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 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 . #################################### # 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ # 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_@AM_V@) GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_@AM_DEFAULT_V@) GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; #### scan #### GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_@AM_V@) GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_@AM_DEFAULT_V@) GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_@AM_V@) GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_@AM_DEFAULT_V@) GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; #### xml #### GTK_DOC_V_XML = $(GTK_DOC_V_XML_@AM_V@) GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_@AM_DEFAULT_V@) GTK_DOC_V_XML_0 = @echo " DOC Building XML"; #### html #### GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_@AM_V@) GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_@AM_DEFAULT_V@) GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_@AM_V@) GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_@AM_DEFAULT_V@) GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; #### pdf #### GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_@AM_V@) GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_@AM_DEFAULT_V@) 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent $(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 $(DOC_MAIN_SGML_FILE): sgml-build.stamp @true xml/gtkdocentities.ent: Makefile $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ ) > $@ 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 \ test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \ test -f $$file && cp $$file $(abs_builddir)/html; \ 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.22/docs/reference/ibus/ibus-docs.sgml.in0000644000000000000000000001231113623750431016445 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.22/docs/reference/ibus/ibus.types0000644000000000000000000000137313623751706015330 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.22/docs/reference/ibus/ibus-overrides.txt0000644000000000000000000000000013623751606016764 00000000000000ibus-1.5.22/docs/reference/ibus/html/0000755000000000000000000000000013623751706014320 500000000000000ibus-1.5.22/docs/reference/ibus/html/IBusEngine.html0000644000000000000000000030771313623751706017131 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 committed 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.

Owner: IBusEngine

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.22/docs/reference/ibus/html/ibus-ibuskeys.html0000644000000000000000000003521513623751706017732 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]
ibus-1.5.22/docs/reference/ibus/html/IBusBus.html0000644000000000000000000067274213623751706016464 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 ()
IBusBus * ibus_bus_new_async_client ()
gboolean ibus_bus_is_connected ()
GDBusConnection * ibus_bus_get_connection ()
const gchar * ibus_bus_get_service_name ()
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 client-only Read / Write / Construct Only
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_new_async_client ()

IBusBus *
ibus_bus_new_async_client (void);

Creates a new IBusBus instance for client use only. It will possibly be limited in what it can do.

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_get_service_name ()

const gchar *
ibus_bus_get_service_name (IBusBus *bus);

Return the main service name to use for calls on the ibus connection.

Parameters

bus

An IBusBus.

 

Returns

at dbus name.


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 successful, 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 successful, 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.

 

Returns

A newly allocated IBusInputContext if the "CreateInputContext" call is succeeded, NULL otherwise.

[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

A newly allocated IBusInputContext if the "CreateInputContext" call is succeeded, 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

Name of the currently focused IBusInputContext if the "CurrentInputContext" call succeeded, 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

Name of the currently focused IBusInputContext if the "CurrentInputContext" call succeeded, 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 component to an IBusBus synchronously.

Parameters

bus

An IBusBus.

 

component

A input engine component.

 

Returns

TRUE if the "RegisterComponent" call is successful, 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 component 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 successful, 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 full][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 full][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 full][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 full][element-type IBusEngineDesc]


ibus_bus_get_engines_by_names ()

IBusEngineDesc **
ibus_bus_get_engines_by_names (IBusBus *bus,
                               const gchar * const *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

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);

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 full]


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 “client-only” property

  “client-only”              gboolean

Whether the IBusBus object is for client use only.

Owner: IBusBus

Flags: Read / Write / Construct Only

Default value: FALSE


The “connect-async” property

  “connect-async”            gboolean

Whether the IBusBus object should connect asynchronously to the bus.

Owner: IBusBus

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.22/docs/reference/ibus/html/up.png0000644000000000000000000000040413623751706015370 00000000000000PNG  IHDRabKGD pHYs B(xtIME IDAT81 @D{xa;$]r =JR1, Sd-}0̟oL:m-QO[ k TzMޠL,:ךu!tK; Pp Ot@l/̵*l}IENDB`ibus-1.5.22/docs/reference/ibus/html/ch02.html0000644000000000000000000000601513623751706015664 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.22/docs/reference/ibus/html/IBusObservedPath.html0000644000000000000000000004246713623751706020314 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.22/docs/reference/ibus/html/ibus.devhelp20000644000000000000000000176425113623751706016655 00000000000000 ibus-1.5.22/docs/reference/ibus/html/IBusLookupTable.html0000644000000000000000000014521113623751706020136 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.22/docs/reference/ibus/html/ibus-ibuskeysyms-compat.html0000644000000000000000000257021713623751706021754 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.22/docs/reference/ibus/html/IBusService.html0000644000000000000000000004453413623751706017323 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.22/docs/reference/ibus/html/IBusFactory.html0000644000000000000000000003444313623751706017330 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.22/docs/reference/ibus/html/IBusSerializable.html0000644000000000000000000011171413623751706020324 00000000000000 IBusSerializable: IBus Reference Manual

IBusSerializable

IBusSerializable — A serializable object.

Stability Level

Stable, unless otherwise indicated

Object Hierarchy

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

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_object ()

GVariant *
ibus_serializable_serialize_object (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_object ()

IBusSerializable *
ibus_serializable_deserialize_object (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_serializable_serialize

#define ibus_serializable_serialize ibus_serializable_serialize_object

ibus_serializable_deserialize

#define ibus_serializable_deserialize ibus_serializable_deserialize_object
ibus-1.5.22/docs/reference/ibus/html/ibus-ibusversion.html0000644000000000000000000001403713623751706020443 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				(22)

IBus micro version.

ibus-1.5.22/docs/reference/ibus/html/ibus-ibusxml.html0000644000000000000000000003347713623751706017567 00000000000000 ibusxml: IBus Reference Manual

ibusxml

ibusxml — XML handling functions for IBus.

Stability Level

Stable, unless otherwise indicated

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.22/docs/reference/ibus/html/IBusProperty.html0000644000000000000000000017211713623751706017546 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 if update succeeded; 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.

Owner: IBusProperty

Flags: Read / Write

Default value: ""


The “key” property

  “key”                      gchar *

The key of property.

Owner: IBusProperty

Flags: Read / Write / Construct Only

Default value: ""


The “label” property

  “label”                    IBusText *

The label of property.

Owner: IBusProperty

Flags: Read / Write / Construct


The “prop-type” property

  “prop-type”                IBusPropType

The type of property.

Owner: IBusProperty

Flags: Read / Write / Construct Only

Default value: PROP_TYPE_NORMAL


The “sensitive” property

  “sensitive”                gboolean

The sensitive of property.

Owner: IBusProperty

Flags: Read / Write

Default value: TRUE


The “state” property

  “state”                    IBusPropState

The state of property.

Owner: IBusProperty

Flags: Read / Write

Default value: PROP_STATE_UNCHECKED


The “sub-props” property

  “sub-props”                IBusPropList *

The sub properties of property.

Owner: IBusProperty

Flags: Read / Write


The “symbol” property

  “symbol”                   IBusText *

The symbol of property.

Owner: IBusProperty

Flags: Read / Write / Construct


The “tooltip” property

  “tooltip”                  IBusText *

The tooltip of property.

Owner: IBusProperty

Flags: Read / Write


The “visible” property

  “visible”                  gboolean

The visible of property.

Owner: IBusProperty

Flags: Read / Write

Default value: TRUE

ibus-1.5.22/docs/reference/ibus/html/IBusConfigService.html0000644000000000000000000003031013623751706020434 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.22/docs/reference/ibus/html/right-insensitive.png0000644000000000000000000000056513623751706020427 00000000000000PNG  IHDRabKGD pHYs B(xtIME ^IDAT8͒J` /S_$AqrW(>m"]\(49.Nd39{eM#MSIιEiHz|3{̲l3,KkV'@EEQlwyiq]Kh4:mĦ,;ts\aR5/7'Wps׭I,K1=0j0Wg> PU𻤝0 ]?qCҫιg~kA_IENDB`ibus-1.5.22/docs/reference/ibus/html/ch01.html0000644000000000000000000000605213623751706015664 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.22/docs/reference/ibus/html/IBusEngineSimple.html0000644000000000000000000003267713623751706020307 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.

 

Returns

TRUE if the file is loaded.

Types and Values

IBUS_MAX_COMPOSE_LEN

#define IBUS_MAX_COMPOSE_LEN 0xFF

struct IBusEngineSimple

struct IBusEngineSimple;

IBusEngineSimple properties.

ibus-1.5.22/docs/reference/ibus/html/IBusPanelService.html0000644000000000000000000033147013623751706020301 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

 

ibus_panel_service_commit_text ()

void
ibus_panel_service_commit_text (IBusPanelService *panel,
                                IBusText *text);

Notify that a text is sent by sending a "CommitText" message to IBus service.

Parameters

panel

An IBusPanelService

 

text

An IBusText

 

ibus_panel_service_panel_extension ()

void
ibus_panel_service_panel_extension (IBusPanelService *panel,
                                    IBusExtensionEvent *event);

Enable or disable a panel extension with IBusExtensionEvent. Notify that a data is sent by sending a "PanelExtension" message to IBus panel extension service.

Parameters

panel

An IBusPanelService

 

event

A PanelExtensionEvent which is sent to a panel extension.

[transfer full]

ibus_panel_service_panel_extension_register_keys ()

void
ibus_panel_service_panel_extension_register_keys
                               (IBusPanelService *panel,
                                const gchar *first_property_name,
                                ...);

Register shortcut keys to enable panel extensions with IBusExtensionEvent. Notify that a data is sent by sending a "PanelExtensionRegisterKeys" message to IBus panel extension service. Seems Vala does not support uint and use IBusProcessKeyEventData[]. E.g. IBusProcessKeyEventData[] keys = {{ IBUS_KEY_e, 0, IBUS_SHIFT_MASK | IBUS_SUPER_MASK }}; ibus_panel_service_panel_extension_register_keys(panel, "emoji", keys, NULL);

Parameters

panel

An IBusPanelService

 

first_property_name

the first name of the shortcut keys. This is NULL " terminated.

 

ibus_panel_service_update_preedit_text_received ()

void
ibus_panel_service_update_preedit_text_received
                               (IBusPanelService *panel,
                                IBusText *text,
                                guint cursor_pos,
                                gboolean visible);

Notify that the preedit is updated by the panel extension

(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

panel

An IBusPanelService

 

text

Update content.

 

cursor_pos

Current position of cursor

 

visible

Whether the pre-edit buffer is visible.

 

ibus_panel_service_show_preedit_text_received ()

void
ibus_panel_service_show_preedit_text_received
                               (IBusPanelService *panel);

Notify that the preedit is shown by the panel extension

Parameters

panel

An IBusPanelService

 

ibus_panel_service_hide_preedit_text_received ()

void
ibus_panel_service_hide_preedit_text_received
                               (IBusPanelService *panel);

Notify that the preedit is hidden by the panel extension

Parameters

panel

An IBusPanelService

 

ibus_panel_service_update_auxiliary_text_received ()

void
ibus_panel_service_update_auxiliary_text_received
                               (IBusPanelService *panel,
                                IBusText *text,
                                gboolean visible);

Notify that the auxilirary is updated by the panel extension.

(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

panel

An IBusPanelService

 

text

An IBusText

 

visible

Whether the auxilirary text is visible.

 

ibus_panel_service_update_lookup_table_received ()

void
ibus_panel_service_update_lookup_table_received
                               (IBusPanelService *panel,
                                IBusLookupTable *table,
                                gboolean visible);

Notify that the lookup table is updated by the panel extension.

(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

panel

An IBusPanelService

 

table

An IBusLookupTable

 

visible

Whether the lookup table is visible.

 

Types and Values

struct IBusPanelService

struct IBusPanelService;

An opaque data type representing an IBusPanelService.

Signal Details

The “candidate-clicked-lookup-table” signal

void
user_function (IBusPanelService *ibuspanelservice,
               guint             arg1,
               guint             arg2,
               guint             arg3,
               gpointer          user_data)

Flags: Run Last


The “commit-text-received” signal

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

Emitted when the client application get the ::commit-text-received. Implement the member function IBusPanelServiceClass::commit_text_received in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

text

A IBusText

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


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 “panel-extension-received” signal

void
user_function (IBusPanelService   *panel,
               IBusExtensionEvent *data,
               gpointer            user_data)

Emitted when the client application get the ::panel-extension-received. Implement the member function IBusPanelServiceClass::panel_extension_received in extended class to receive this signal.

Argument user_data is ignored in this function.

Parameters

panel

An IBusPanelService

 

data

A GVariant

 

user_data

user data set when the signal handler was connected.

 

Flags: Run Last


The “process-key-event” signal

gboolean
user_function (IBusPanelService *panel,
               guint             keyval,
               guint             keycode,
               guint             state,
               gpointer          user_data)

Emitted when a key event is received. Implement the member function IBusPanelServiceClass::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

panel

An IBusPanelService

 

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 “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 “set-cursor-location-relative” 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-relative. Implement the member function set_cursor_location_relative() 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.22/docs/reference/ibus/html/IBusInputContext.html0000644000000000000000000036631113623751706020367 00000000000000 IBusInputContext: IBus Reference Manual

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_cursor_location_relative ()

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

Set the relative cursor location of IBus input context asynchronously.

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.

 

ibus_input_context_set_client_commit_preedit ()

void
ibus_input_context_set_client_commit_preedit
                               (IBusInputContext *context,
                                gboolean client_commit);

Set whether IBusInputContext commits pre-edit texts or not. If TRUE, 'update-preedit-text-with-mode' signal is emitted instead of 'update-preedit-text' signal. If your client receives the 'update-preedit-text-with-mode' signal, the client needs to implement commit_text() of pre-edit text when GtkIMContextClass.focus_out() is called in case an IME desires that behavior but it depends on each IME.

See also ibus_engine_update_preedit_text_with_mode().

Parameters

context

An IBusInputContext.

 

client_commit

TRUE if your input context commits pre-edit texts with Space or Enter key events or mouse click events. FALSE if ibus-daemon commits pre-edit texts with those events. The default is FALSE. The behavior is decided with ibus_engine_update_preedit_text_with_mode() to commit, clear or keep the pre-edit text and this API is important in ibus-hangul.

 

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-preedit-text-with-mode” signal

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

Emitted to update preedit text with the mode.

(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.

 

mode

Preedit mode.

 

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

ibus-1.5.22/docs/reference/ibus/html/IBusObject.html0000644000000000000000000003430713623751706017126 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 "destroy" 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.22/docs/reference/ibus/html/left-insensitive.png0000644000000000000000000000061313623751706020236 00000000000000PNG  IHDRabKGD pHYs B(xtIMEƫqIDAT8͒NQ@pds`*4@W@ A!Ԇ@6^ 5hxIH R`sQp̙339B|sKEQTK@۝΁i^~Wʆ`0TJ6TcYn6A ƀ~߱>}ǭs; lYkwr 5U= /" "uU=ɲlArDzp5I4^E+P3Ɯq_p ̥iUYp=#IENDB`ibus-1.5.22/docs/reference/ibus/html/ibus-IBusKeysyms.html0000644000000000000000000300440413623751706020322 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.22/docs/reference/ibus/html/ibus-ibuserror.html0000644000000000000000000001072213623751706020104 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.22/docs/reference/ibus/html/ch06.html0000644000000000000000000000457413623751706015700 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.22/docs/reference/ibus/html/left.png0000644000000000000000000000040613623751706015700 00000000000000PNG  IHDRabKGD pHYs B(xtIME,`m;IDAT8үa?DAPY\$[p+IIMlf('}Mpy{_ޥ}^q xZ <=Yj) <04\~+Pl#",Qϑp Iǐlsw>[/]_i03IENDB`ibus-1.5.22/docs/reference/ibus/html/IBusConfig.html0000644000000000000000000015551013623751706017125 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.22/docs/reference/ibus/html/IBusEngineDesc.html0000644000000000000000000016226313623751706017727 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. If layout is "default", the engine inherits the current layout and does not change the layout. The layouts "default" and "" are same. E.g. If you switch JP XKB engine and an input method engine (IME), the IME inherits the JP layout.

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) If layout is "default", the engine inherits the current layout and does not change the layout. The layouts "default" and "" are same. E.g. If you switch JP XKB engine and an input method engine (IME), the IME inherits the JP layout.

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

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “description” property

  “description”              gchar *

The description of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “hotkeys” property

  “hotkeys”                  gchar *

The hotkeys of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “icon” property

  “icon”                     gchar *

The icon of engine description

Owner: IBusEngineDesc

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.

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “language” property

  “language”                 gchar *

The language of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “layout” property

  “layout”                   gchar *

The layout of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: "us"


The “layout-option” property

  “layout-option”            gchar *

The keyboard option of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “layout-variant” property

  “layout-variant”           gchar *

The keyboard variant of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “license” property

  “license”                  gchar *

The license of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “longname” property

  “longname”                 gchar *

The longname of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “name” property

  “name”                     gchar *

The name of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: NULL


The “rank” property

  “rank”                     guint

The rank of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: 0


The “setup” property

  “setup”                    gchar *

The exec lists of the engine setup command

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “symbol” property

  “symbol”                   gchar *

The symbol chars of engine description instead of icon image

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “textdomain” property

  “textdomain”               gchar *

The textdomain of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""


The “version” property

  “version”                  gchar *

The version number of engine description

Owner: IBusEngineDesc

Flags: Read / Write / Construct Only

Default value: ""

ibus-1.5.22/docs/reference/ibus/html/IBusPropList.html0000644000000000000000000003062513623751706017473 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.


IBusPropListClass

typedef struct {
    IBusSerializableClass parent;
} IBusPropListClass;

Class structure for IBusPropList.

ibus-1.5.22/docs/reference/ibus/html/ibus-ibusutil.html0000644000000000000000000001464113623751706017734 00000000000000 ibusutil: IBus Reference Manual

ibusutil

ibusutil — Utilities with C-Language.

Stability Level

Unstable, unless otherwise indicated

Description

Utilized functions are available for miscellaneous purposes.

Functions

ibus_get_untranslated_language_name ()

gchar *
ibus_get_untranslated_language_name (const gchar *_locale);

Parameters

_locale

A const locale name.

 

Returns

untranslated language name


ibus_get_language_name ()

gchar *
ibus_get_language_name (const gchar *_locale);

Parameters

_locale

A const locale name.

 

Returns

translated language name

ibus-1.5.22/docs/reference/ibus/html/ch05.html0000644000000000000000000000430113623751706015663 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.22/docs/reference/ibus/html/right.png0000644000000000000000000000040513623751706016062 00000000000000PNG  IHDRabKGD pHYs B(xtIME!GIDAT8үa?MIdEr,-hAIl ry}sX6 !9#D r$-Br$G"$;WZ&!cq \`軀O=QoufIENDB`ibus-1.5.22/docs/reference/ibus/html/style.css0000644000000000000000000002652613623751706016125 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; } span.nowrap { white-space: nowrap; } 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; } .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; } } .hll { background-color: #ffffcc } .c { color: #408080; font-style: italic } /* Comment */ .err { border: 1px solid #FF0000 } /* Error */ .k { color: #008000; font-weight: bold } /* Keyword */ .o { color: #666666 } /* Operator */ .ch { color: #408080; font-style: italic } /* Comment.Hashbang */ .cm { color: #408080; font-style: italic } /* Comment.Multiline */ .cp { color: #BC7A00 } /* Comment.Preproc */ .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */ .c1 { color: #408080; font-style: italic } /* Comment.Single */ .cs { color: #408080; font-style: italic } /* Comment.Special */ .gd { color: #A00000 } /* Generic.Deleted */ .ge { font-style: italic } /* Generic.Emph */ .gr { color: #FF0000 } /* Generic.Error */ .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .gi { color: #00A000 } /* Generic.Inserted */ .go { color: #888888 } /* Generic.Output */ .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ .gs { font-weight: bold } /* Generic.Strong */ .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .gt { color: #0044DD } /* Generic.Traceback */ .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ .kp { color: #008000 } /* Keyword.Pseudo */ .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ .kt { color: #B00040 } /* Keyword.Type */ .m { color: #666666 } /* Literal.Number */ .s { color: #BA2121 } /* Literal.String */ .na { color: #7D9029 } /* Name.Attribute */ .nb { color: #008000 } /* Name.Builtin */ .nc { color: #0000FF; font-weight: bold } /* Name.Class */ .no { color: #880000 } /* Name.Constant */ .nd { color: #AA22FF } /* Name.Decorator */ .ni { color: #999999; font-weight: bold } /* Name.Entity */ .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ .nf { color: #0000FF } /* Name.Function */ .nl { color: #A0A000 } /* Name.Label */ .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ .nt { color: #008000; font-weight: bold } /* Name.Tag */ .nv { color: #19177C } /* Name.Variable */ .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ .w { color: #bbbbbb } /* Text.Whitespace */ .mb { color: #666666 } /* Literal.Number.Bin */ .mf { color: #666666 } /* Literal.Number.Float */ .mh { color: #666666 } /* Literal.Number.Hex */ .mi { color: #666666 } /* Literal.Number.Integer */ .mo { color: #666666 } /* Literal.Number.Oct */ .sa { color: #BA2121 } /* Literal.String.Affix */ .sb { color: #BA2121 } /* Literal.String.Backtick */ .sc { color: #BA2121 } /* Literal.String.Char */ .dl { color: #BA2121 } /* Literal.String.Delimiter */ .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ .s2 { color: #BA2121 } /* Literal.String.Double */ .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ .sh { color: #BA2121 } /* Literal.String.Heredoc */ .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ .sx { color: #008000 } /* Literal.String.Other */ .sr { color: #BB6688 } /* Literal.String.Regex */ .s1 { color: #BA2121 } /* Literal.String.Single */ .ss { color: #19177C } /* Literal.String.Symbol */ .bp { color: #008000 } /* Name.Builtin.Pseudo */ .fm { color: #0000FF } /* Name.Function.Magic */ .vc { color: #19177C } /* Name.Variable.Class */ .vg { color: #19177C } /* Name.Variable.Global */ .vi { color: #19177C } /* Name.Variable.Instance */ .vm { color: #19177C } /* Name.Variable.Magic */ .il { color: #666666 } /* Literal.Number.Integer.Long */ibus-1.5.22/docs/reference/ibus/html/home.png0000644000000000000000000000040013623751706015670 00000000000000PNG  IHDRabKGD pHYs B(xtIME &IDAT8ҽ Aߞf`n v`6`/`Yܡ`f&k$,} 0b+ԸaQW~b O e{y N[L}.piBzmm o.I]7^[;%:VIENDB`ibus-1.5.22/docs/reference/ibus/html/ch04.html0000644000000000000000000000524113623751706015666 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.22/docs/reference/ibus/html/IBusAttribute.html0000644000000000000000000006744413623751706017673 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.22/docs/reference/ibus/html/index.html0000644000000000000000000001624113623751706016241 00000000000000 IBus Reference Manual: IBus Reference Manual

Intelligent Input Bus (IBus) 1.5.22 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
Annotation Glossary
ibus-1.5.22/docs/reference/ibus/html/IBusText.html0000644000000000000000000006520513623751706016645 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.22/docs/reference/ibus/html/ibus-ibusshare.html0000644000000000000000000010244313623751706020057 00000000000000 ibusshare: IBus Reference Manual

ibusshare

ibusshare — Shared utility functions and definition.

Stability Level

Stable, unless otherwise indicated

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 ()

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_PORTAL

#define IBUS_SERVICE_PORTAL     "org.freedesktop.portal.IBus"

Address of IBus portalservice.


IBUS_SERVICE_PANEL

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

Address of IBus panel service.


IBUS_SERVICE_PANEL_EXTENSION

#define IBUS_SERVICE_PANEL_EXTENSION "org.freedesktop.IBus.Panel.Extension"

Address of IBus panel extension service.


IBUS_SERVICE_PANEL_EXTENSION_EMOJI

#define             IBUS_SERVICE_PANEL_EXTENSION_EMOJI

Address of IBus panel extension service for emoji. This service provides emoji, Unicode code point, Unicode name features.


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_PANEL_EXTENSION_EMOJI

#define             IBUS_PATH_PANEL_EXTENSION_EMOJI

D-Bus path for IBus extension panel for emoji. This service provides emoji, Unicode code point, Unicode name features.


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_PORTAL

#define IBUS_INTERFACE_PORTAL   "org.freedesktop.IBus.Portal"

D-Bus interface for IBus portal.


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.22/docs/reference/ibus/html/up-insensitive.png0000644000000000000000000000056613623751706017737 00000000000000PNG  IHDRabKGD pHYs B(xtIMEwIIDAT8?/Qϙ?[u$VHTDۈBM+! 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.22/docs/reference/ibus/html/ibus-ibusdebug.html0000644000000000000000000001052513623751706020042 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 .

 
ibus-1.5.22/docs/reference/ibus/html/annotation-glossary.html0000644000000000000000000001341513623751706021145 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

scope notified

The callback is valid until the GDestroyNotify argument is called.

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.22/docs/reference/ibus/html/IBusRegistry.html0000644000000000000000000007574113623751706017537 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.22/docs/reference/ibus/html/IBusKeymap.html0000644000000000000000000003157013623751706017145 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.22/docs/reference/ibus/html/api-index-full.html0000644000000000000000000425151613623751706017762 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_accelerator_name, function in Accelerator Groups
ibus_accelerator_parse, function in Accelerator Groups
ibus_accelerator_valid, function in Accelerator Groups
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:client-only, object property 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_service_name, 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_new_async_client, 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_algorithmically, function in ibusenginesimpleprivate
ibus_check_compact_table, function in ibusenginesimpleprivate
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
IBusComposeTablePrivate, struct in ibusenginesimpleprivate
ibus_compose_table_compact, variable in ibusenginesimpleprivate
ibus_compose_table_compact_32bit, variable in ibusenginesimpleprivate
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
IBusEmojiData, struct in IBusEmojiData
ibus_emoji_data_get_annotations, function in IBusEmojiData
ibus_emoji_data_get_category, function in IBusEmojiData
ibus_emoji_data_get_description, function in IBusEmojiData
ibus_emoji_data_get_emoji, function in IBusEmojiData
ibus_emoji_data_load, function in IBusEmojiData
ibus_emoji_data_new, function in IBusEmojiData
ibus_emoji_data_save, function in IBusEmojiData
ibus_emoji_data_set_annotations, function in IBusEmojiData
ibus_emoji_data_set_description, function in IBusEmojiData
ibus_emoji_dict_load, function in IBusEmojiData
ibus_emoji_dict_lookup, function in IBusEmojiData
ibus_emoji_dict_save, function in IBusEmojiData
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
IBusExtensionEvent, struct in IBusXEvent
ibus_extension_event_get_name, function in IBusXEvent
ibus_extension_event_get_params, function in IBusXEvent
ibus_extension_event_get_version, function in IBusXEvent
ibus_extension_event_is_enabled, function in IBusXEvent
ibus_extension_event_is_extension, function in IBusXEvent
ibus_extension_event_new, function in IBusXEvent

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-preedit-text-with-mode, 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_client_commit_preedit, 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_cursor_location_relative, 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_INTERFACE_PORTAL, 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::candidate-clicked-lookup-table, object signal in IBusPanelService
IBusPanelService::commit-text-received, object signal 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::panel-extension-received, object signal in IBusPanelService
IBusPanelService::process-key-event, 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::set-cursor-location-relative, 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_commit_text, function in IBusPanelService
ibus_panel_service_cursor_down, function in IBusPanelService
ibus_panel_service_cursor_up, function in IBusPanelService
ibus_panel_service_hide_preedit_text_received, 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_panel_extension, function in IBusPanelService
ibus_panel_service_panel_extension_register_keys, 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_panel_service_show_preedit_text_received, function in IBusPanelService
ibus_panel_service_update_auxiliary_text_received, function in IBusPanelService
ibus_panel_service_update_lookup_table_received, function in IBusPanelService
ibus_panel_service_update_preedit_text_received, 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_PATH_PANEL_EXTENSION_EMOJI, 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
IBusProcessKeyEventData, struct in IBusXEvent
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, macro in IBusSerializable
ibus_serializable_deserialize_object, 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, macro in IBusSerializable
ibus_serializable_serialize_object, 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_PANEL_EXTENSION, macro in ibusshare
IBUS_SERVICE_PANEL_EXTENSION_EMOJI, macro in ibusshare
IBUS_SERVICE_PORTAL, 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
IBusUnicodeData, struct in IBusUnicodeBlock
IBusUnicodeDataLoadAsyncFinish, user_function in IBusUnicodeBlock
ibus_unicode_block_get_end, function in IBusUnicodeBlock
ibus_unicode_block_get_name, function in IBusUnicodeBlock
ibus_unicode_block_get_start, function in IBusUnicodeBlock
ibus_unicode_block_load, function in IBusUnicodeBlock
ibus_unicode_block_new, function in IBusUnicodeBlock
ibus_unicode_block_save, function in IBusUnicodeBlock
ibus_unicode_data_get_alias, function in IBusUnicodeBlock
ibus_unicode_data_get_block_name, function in IBusUnicodeBlock
ibus_unicode_data_get_code, function in IBusUnicodeBlock
ibus_unicode_data_get_name, function in IBusUnicodeBlock
ibus_unicode_data_load, function in IBusUnicodeBlock
ibus_unicode_data_load_async, function in IBusUnicodeBlock
ibus_unicode_data_new, function in IBusUnicodeBlock
ibus_unicode_data_save, function in IBusUnicodeBlock
ibus_unicode_data_set_block_name, function in IBusUnicodeBlock
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
IBusXEvent, struct in IBusXEvent
IBusXEventType, enum in IBusXEvent
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
ibus_x_event_get_event_type, function in IBusXEvent
ibus_x_event_get_group, function in IBusXEvent
ibus_x_event_get_hardware_keycode, function in IBusXEvent
ibus_x_event_get_is_modifier, function in IBusXEvent
ibus_x_event_get_keyval, function in IBusXEvent
ibus_x_event_get_length, function in IBusXEvent
ibus_x_event_get_purpose, function in IBusXEvent
ibus_x_event_get_root, function in IBusXEvent
ibus_x_event_get_same_screen, function in IBusXEvent
ibus_x_event_get_send_event, function in IBusXEvent
ibus_x_event_get_serial, function in IBusXEvent
ibus_x_event_get_state, function in IBusXEvent
ibus_x_event_get_string, function in IBusXEvent
ibus_x_event_get_subwindow, function in IBusXEvent
ibus_x_event_get_time, function in IBusXEvent
ibus_x_event_get_version, function in IBusXEvent
ibus_x_event_get_window, function in IBusXEvent
ibus_x_event_get_x, function in IBusXEvent
ibus_x_event_get_x_root, function in IBusXEvent
ibus_x_event_get_y, function in IBusXEvent
ibus_x_event_get_y_root, function in IBusXEvent
ibus_x_event_new, function in IBusXEvent

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.22/docs/reference/ibus/html/ch03.html0000644000000000000000000000674413623751706015676 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.22/docs/reference/ibus/html/IBusComponent.html0000644000000000000000000014654013623751706017665 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

Owner: IBusComponent

Flags: Read / Write / Construct Only

Default value: NULL


The “command-line” property

  “command-line”             gchar *

The exec path of component

Owner: IBusComponent

Flags: Read / Write / Construct Only

Default value: NULL


The “description” property

  “description”              gchar *

The description of component

Owner: IBusComponent

Flags: Read / Write / Construct Only

Default value: NULL


The “homepage” property

  “homepage”                 gchar *

The homepage of component

Owner: IBusComponent

Flags: Read / Write / Construct Only

Default value: NULL


The “license” property

  “license”                  gchar *

The license of component

Owner: IBusComponent

Flags: Read / Write / Construct Only

Default value: NULL


The “name” property

  “name”                     gchar *

The name of component

Owner: IBusComponent

Flags: Read / Write / Construct Only

Default value: NULL


The “textdomain” property

  “textdomain”               gchar *

The textdomain of component

Owner: IBusComponent

Flags: Read / Write / Construct Only

Default value: NULL


The “version” property

  “version”                  gchar *

The version of component

Owner: IBusComponent

Flags: Read / Write / Construct Only

Default value: NULL

ibus-1.5.22/docs/reference/ibus/html/ibus-ibustypes.html0000644000000000000000000007522113623751706020124 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.22/docs/reference/ibus/html/IBusHotkeyProfile.html0000644000000000000000000006051513623751706020504 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.22/docs/reference/ibus/html/IBusAttrList.html0000644000000000000000000002533713623751706017471 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.22/docs/reference/ibus/trim.sed0000755000000000000000000000020213623750431014733 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.22/docs/reference/ibus/ibus-docs.sgml0000644000000000000000000001230613623751273016051 00000000000000 IBus Reference Manual Intelligent Input Bus (IBus) 1.5.22 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.22/tools/0000755000000000000000000000000013623751711010660 500000000000000ibus-1.5.22/tools/Makefile.am0000644000000000000000000000503513623750431012635 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2013 Peng Huang # Copyright (c) 2015-2017 Takao Fujiwara # Copyright (c) 2007-2017 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 libibus_emoji_dialog = \ $(top_builddir)/ui/gtk3/libibus-emoji-dialog-@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\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -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) if ENABLE_EMOJI_DICT if ENABLE_UI AM_VALAFLAGS += \ --define=EMOJI_DICT \ $(NULL) endif endif -include $(top_srcdir)/git.mk ibus-1.5.22/tools/Makefile.in0000644000000000000000000007441213623751264012660 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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) 2015-2017 Takao Fujiwara # Copyright (c) 2007-2017 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) @ENABLE_EMOJI_DICT_TRUE@@ENABLE_UI_TRUE@am__append_1 = \ @ENABLE_EMOJI_DICT_TRUE@@ENABLE_UI_TRUE@ --define=EMOJI_DICT \ @ENABLE_EMOJI_DICT_TRUE@@ENABLE_UI_TRUE@ $(NULL) subdir = tools ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/main.Po 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ NULL = libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la libibus_emoji_dialog = \ $(top_builddir)/ui/gtk3/libibus-emoji-dialog-@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\" \ -DLIBEXECDIR=\"$(libexecdir)\" \ -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) \ $(am__append_1) 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 -f ./$(DEPDIR)/main.Po -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 -f ./$(DEPDIR)/main.Po -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 am--depfiles 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.22/tools/ibus.1.in0000644000000000000000000000541213623750431012231 00000000000000.\" This file is distributed under the same license as the ibus .\" package. .\" Copyright (C) Takao Fujiwara , 2013-2017. .\" Copyright (c) Peng Huang , 2013. .\" .TH "IBUS" 1 "May 2017" "@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 \fBemoji\fR [\fB\-\-font=FONT|\-\-lang=LANG|\-\-help|\-\-partial\-match\fR] Launch IBus Emojier ( .B ibus\-emoji (1) ) and save the selected emoji to your clipboard. Can choose an emoji font with .B \-\-font option. Can choose a language of emoji annotations with .B \-\-lang option. If LANG="en", IBus Emojier loads /usr/share/ibus/dicts/emoji-en.dict . .B \-\-partial\-match option enables to match annotations with a partial string. These settings are available with .B ibus\-setup (1) utility. .SH BUGS If you find a bug, please report it at https://github.com/ibus/ibus/issues .SH "SEE ALSO" .BR ibus-emoji (7) ibus-1.5.22/tools/main.vala0000644000000000000000000003524413623750431012377 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2013 Peng Huang * Copyright(c) 2015-2018 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 */ private const string IBUS_SCHEMAS_GENERAL = "org.freedesktop.ibus.general"; private const string IBUS_SCHEMAS_GENERAL_HOTKEY = "org.freedesktop.ibus.general.hotkey"; private const string IBUS_SCHEMAS_PANEL = "org.freedesktop.ibus.panel"; private const string IBUS_SCHEMAS_PANEL_EMOJI = "org.freedesktop.ibus.panel.emoji"; bool name_only = false; /* system() exists as a public API. */ bool is_system = false; string cache_file = null; string engine_id = 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; } var settings = new GLib.Settings(IBUS_SCHEMAS_GENERAL); if (!settings.get_boolean("use-system-keyboard-layout")) return exec_setxkbmap(desc); return Posix.EXIT_SUCCESS; } 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; } private int read_config_options(string[] argv) { const OptionEntry[] options = { { "engine-id", 0, 0, OptionArg.STRING, out engine_id, N_("Use engine schema paths instead of ibus core, " + "which can be comma-separated values."), "ENGINE_ID" }, { 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; } return Posix.EXIT_SUCCESS; } private GLib.SList get_ibus_schemas() { string[] ids = {}; if (engine_id != null) { ids = engine_id.split(","); } GLib.SList ibus_schemas = new GLib.SList(); GLib.SettingsSchemaSource schema_source = GLib.SettingsSchemaSource.get_default(); string[] list_schemas = {}; schema_source.list_schemas(true, out list_schemas, null); foreach (string schema in list_schemas) { if (ids.length != 0) { foreach (unowned string id in ids) { if (id == schema || schema.has_prefix("org.freedesktop.ibus.engine." + id)) { ibus_schemas.prepend(schema); break; } } } else if (schema.has_prefix("org.freedesktop.ibus") && !schema.has_prefix("org.freedesktop.ibus.engine")) { ibus_schemas.prepend(schema); } } if (ibus_schemas.length() == 0) { printerr("Not found schemas of \"org.freedesktop.ibus\"\n"); return ibus_schemas; } ibus_schemas.sort(GLib.strcmp); return ibus_schemas; } int read_config(string[] argv) { if (read_config_options(argv) == Posix.EXIT_FAILURE) return Posix.EXIT_FAILURE; GLib.SList ibus_schemas = get_ibus_schemas(); if (ibus_schemas.length() == 0) return Posix.EXIT_FAILURE; GLib.SettingsSchemaSource schema_source = GLib.SettingsSchemaSource.get_default(); var output = new GLib.StringBuilder(); foreach (string schema in ibus_schemas) { GLib.SettingsSchema settings_schema = schema_source.lookup(schema, false); GLib.Settings settings = new GLib.Settings(schema); output.append_printf("SCHEMA: %s\n", schema); foreach (string key in settings_schema.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) { if (read_config_options(argv) == Posix.EXIT_FAILURE) return Posix.EXIT_FAILURE; GLib.SList ibus_schemas = get_ibus_schemas(); if (ibus_schemas.length() == 0) return Posix.EXIT_FAILURE; print("%s\n", _("Resetting…")); GLib.SettingsSchemaSource schema_source = GLib.SettingsSchemaSource.get_default(); foreach (string schema in ibus_schemas) { GLib.SettingsSchema settings_schema = schema_source.lookup(schema, false); GLib.Settings settings = new GLib.Settings(schema); print("SCHEMA: %s\n", schema); foreach (string key in settings_schema.list_keys()) { print(" %s\n", key); settings.reset(key); } } GLib.Settings.sync(); print("%s\n", _("Done")); return Posix.EXIT_SUCCESS; } #if EMOJI_DICT int emoji_dialog(string[] argv) { string cmd = Config.LIBEXECDIR + "/ibus-ui-emojier"; var file = File.new_for_path(cmd); if (!file.query_exists()) cmd = "../ui/gtk3/ibus-ui-emojier"; argv[0] = cmd; string[] env = Environ.get(); try { // Non-blocking Process.spawn_async(null, argv, env, SpawnFlags.SEARCH_PATH, null, null); } catch (SpawnError e) { stderr.printf("%s\n", e.message); return Posix.EXIT_FAILURE; } return Posix.EXIT_SUCCESS; } #endif 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; } 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 }, #if EMOJI_DICT { "emoji", N_("Save emoji on dialog to clipboard "), emoji_dialog }, #endif { "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.LOCALEDIR); 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.22/tools/ibus.bash0000644000000000000000000000652113623750431012403 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.22/tools/ibus_vala.stamp0000644000000000000000000000000613623751711013607 00000000000000stamp ibus-1.5.22/tools/main.c0000644000000000000000000021356213623751711011701 00000000000000/* main.c generated by valac 0.47.91, 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 * Copyright(c) 2015-2018 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 #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 _engine_list_unref0(var) ((var == NULL) ? NULL : (var = (engine_list_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) #define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL))) #define _g_settings_schema_source_unref0(var) ((var == NULL) ? NULL : (var = (g_settings_schema_source_unref (var), NULL))) #define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) #define _g_settings_schema_unref0(var) ((var == NULL) ? NULL : (var = (g_settings_schema_unref (var), NULL))) typedef gint (*EntryFunc) (gchar** argv, gint argv_length1, gpointer user_data); #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; }; 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; extern gchar* engine_id; gchar* engine_id = NULL; static gpointer engine_list_parent_class = NULL; extern gchar* program_name; gchar* program_name = NULL; #define IBUS_SCHEMAS_GENERAL "org.freedesktop.ibus.general" #define IBUS_SCHEMAS_GENERAL_HOTKEY "org.freedesktop.ibus.general.hotkey" #define IBUS_SCHEMAS_PANEL "org.freedesktop.ibus.panel" #define IBUS_SCHEMAS_PANEL_EMOJI "org.freedesktop.ibus.panel.emoji" 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (EngineList, engine_list_unref) EngineList* engine_list_new (void); EngineList* engine_list_construct (GType object_type); static void engine_list_finalize (EngineList * obj); static GType engine_list_get_type_once (void); IBusBus* get_bus (void); gint list_engine (gchar** argv, gint argv_length1); static void _g_object_unref0_ (gpointer var); static inline void _g_list_free__g_object_unref0_ (GList* self); static void _g_free0_ (gpointer var); static void _engine_list_unref0_ (gpointer var); static void _vala_array_add1 (IBusEngineDesc** * array, gint* length, gint* size, IBusEngineDesc* value); gint exec_setxkbmap (IBusEngineDesc* engine); static void _vala_array_add2 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add3 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add4 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add5 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add6 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add7 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add8 (gchar** * array, gint* length, gint* size, gchar* value); gint get_set_engine (gchar** argv, gint argv_length1); gint message_watch (gchar** argv, gint argv_length1); gint restart_daemon (gchar** argv, gint argv_length1); gint exit_daemon (gchar** argv, gint argv_length1); gint print_version (gchar** argv, gint argv_length1); gint read_cache (gchar** argv, gint argv_length1); gint write_cache (gchar** argv, gint argv_length1); gint print_address (gchar** argv, gint argv_length1); gint read_config_options (gchar** argv, gint argv_length1); GSList* get_ibus_schemas (void); static inline void _g_slist_free__g_free0_ (GSList* self); gint read_config (gchar** argv, gint argv_length1); gint reset_config (gchar** argv, gint argv_length1); gint emoji_dialog (gchar** argv, gint argv_length1); gint print_help (gchar** argv, gint 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, gint argv_length1, gpointer self); static gint _exit_daemon_entry_func (gchar** argv, gint argv_length1, gpointer self); static gint _list_engine_entry_func (gchar** argv, gint argv_length1, gpointer self); static gint _message_watch_entry_func (gchar** argv, gint argv_length1, gpointer self); static gint _restart_daemon_entry_func (gchar** argv, gint argv_length1, gpointer self); static gint _print_version_entry_func (gchar** argv, gint argv_length1, gpointer self); static gint _read_cache_entry_func (gchar** argv, gint argv_length1, gpointer self); static gint _write_cache_entry_func (gchar** argv, gint argv_length1, gpointer self); static gint _print_address_entry_func (gchar** argv, gint argv_length1, gpointer self); static gint _read_config_entry_func (gchar** argv, gint argv_length1, gpointer self); static gint _reset_config_entry_func (gchar** argv, gint argv_length1, gpointer self); static gint _emoji_dialog_entry_func (gchar** argv, gint argv_length1, gpointer self); static gint _print_help_entry_func (gchar** argv, gint argv_length1, gpointer self); gint _vala_main (gchar** argv, gint argv_length1); static gchar** _vala_array_dup1 (gchar** self, gint 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 CommandEntry commands[13] = {{"engine", N_ ("Set or get engine"), _get_set_engine_entry_func}, {"exit", N_ ("Exit ibus-daemon"), _exit_daemon_entry_func}, {"list-engine", N_ ("Show available engines"), _list_engine_entry_func}, {"watch", N_ ("(Not implemented)"), _message_watch_entry_func}, {"restart", N_ ("Restart ibus-daemon"), _restart_daemon_entry_func}, {"version", N_ ("Show version"), _print_version_entry_func}, {"read-cache", N_ ("Show the content of registry cache"), _read_cache_entry_func}, {"write-cache", N_ ("Create registry cache"), _write_cache_entry_func}, {"address", N_ ("Print the D-Bus address of ibus-daemon"), _print_address_entry_func}, {"read-config", N_ ("Show the configuration values"), _read_config_entry_func}, {"reset-config", N_ ("Reset the configuration values"), _reset_config_entry_func}, {"emoji", N_ ("Save emoji on dialog to clipboard "), _emoji_dialog_entry_func}, {"help", N_ ("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, gpointer klass_data) { engine_list_parent_class = g_type_class_peek_parent (klass); ((EngineListClass *) klass)->finalize = engine_list_finalize; } static void engine_list_instance_init (EngineList * self, gpointer klass) { IBusEngineDesc** _tmp0_; _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); } static GType engine_list_get_type_once (void) { 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); return engine_list_type_id; } 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)) { GType engine_list_type_id; engine_list_type_id = engine_list_get_type_once (); 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* bus = NULL; IBusBus* _tmp0_; IBusBus* _tmp1_; IBusBus* result = NULL; _tmp0_ = ibus_bus_new (); g_object_ref_sink (_tmp0_); bus = _tmp0_; _tmp1_ = bus; if (!ibus_bus_is_connected (_tmp1_)) { result = NULL; _g_object_unref0 (bus); return result; } result = bus; return result; } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void _g_object_unref0_ (gpointer var) { (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); } static inline void _g_list_free__g_object_unref0_ (GList* self) { g_list_free_full (self, (GDestroyNotify) _g_object_unref0_); } 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 void _vala_array_add1 (IBusEngineDesc** * array, gint* length, gint* 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, gint argv_length1) { static const GOptionEntry options[2] = {{"name-only", (gchar) 0, 0, G_OPTION_ARG_NONE, &name_only, N_ ("List engine name only"), NULL}, {NULL}}; GOptionContext* option = NULL; GOptionContext* _tmp0_; GOptionContext* _tmp1_; IBusBus* bus = NULL; IBusBus* _tmp8_; IBusBus* _tmp9_; GList* engines = NULL; IBusBus* _tmp11_; GList* _tmp12_; GHashTable* map = NULL; GHashFunc _tmp17_; GEqualFunc _tmp18_; GHashTable* _tmp19_; GList* _tmp20_; GHashTable* _tmp40_; GList* _tmp41_; GError* _inner_error0_ = NULL; gint result = 0; _tmp0_ = g_option_context_new (NULL); option = _tmp0_; _tmp1_ = option; g_option_context_add_main_entries (_tmp1_, options, GETTEXT_PACKAGE); { GOptionContext* _tmp2_; _tmp2_ = option; g_option_context_parse (_tmp2_, (gint*) (&argv_length1), &argv, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp3_ = -1; if (_inner_error0_->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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp3_; } } goto __finally0; __catch0_g_option_error: { GError* e = NULL; FILE* _tmp4_; GError* _tmp5_; const gchar* _tmp6_; e = _inner_error0_; _inner_error0_ = NULL; _tmp4_ = stderr; _tmp5_ = e; _tmp6_ = _tmp5_->message; fprintf (_tmp4_, "%s\n", _tmp6_); result = EXIT_FAILURE; _g_error_free0 (e); _g_option_context_free0 (option); return result; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp7_ = -1; _g_option_context_free0 (option); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp7_; } _tmp8_ = get_bus (); bus = _tmp8_; _tmp9_ = bus; if (_tmp9_ == NULL) { FILE* _tmp10_; _tmp10_ = stderr; fprintf (_tmp10_, "%s", _ ("Can't connect to IBus.\n")); result = EXIT_FAILURE; _g_object_unref0 (bus); _g_option_context_free0 (option); return result; } _tmp11_ = bus; _tmp12_ = ibus_bus_list_engines (_tmp11_); engines = _tmp12_; if (name_only) { GList* _tmp13_; _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* _tmp14_; IBusEngineDesc* engine = NULL; _tmp14_ = _g_object_ref0 ((IBusEngineDesc*) engine_it->data); engine = _tmp14_; { IBusEngineDesc* _tmp15_; const gchar* _tmp16_; _tmp15_ = engine; _tmp16_ = ibus_engine_desc_get_name (_tmp15_); g_print ("%s\n", _tmp16_); _g_object_unref0 (engine); } } } result = EXIT_SUCCESS; (engines == NULL) ? NULL : (engines = (_g_list_free__g_object_unref0_ (engines), NULL)); _g_object_unref0 (bus); _g_option_context_free0 (option); return result; } _tmp17_ = g_str_hash; _tmp18_ = g_str_equal; _tmp19_ = g_hash_table_new_full (_tmp17_, _tmp18_, _g_free0_, _engine_list_unref0_); map = _tmp19_; _tmp20_ = engines; { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = _tmp20_; for (engine_it = engine_collection; engine_it != NULL; engine_it = engine_it->next) { IBusEngineDesc* _tmp21_; IBusEngineDesc* engine = NULL; _tmp21_ = _g_object_ref0 ((IBusEngineDesc*) engine_it->data); engine = _tmp21_; { EngineList* list = NULL; GHashTable* _tmp22_; IBusEngineDesc* _tmp23_; const gchar* _tmp24_; gconstpointer _tmp25_; EngineList* _tmp26_; EngineList* _tmp27_; EngineList* _tmp35_; EngineList* _tmp36_; IBusEngineDesc** _tmp37_; gint _tmp37__length1; IBusEngineDesc* _tmp38_; IBusEngineDesc* _tmp39_; _tmp22_ = map; _tmp23_ = engine; _tmp24_ = ibus_engine_desc_get_language (_tmp23_); _tmp25_ = g_hash_table_lookup (_tmp22_, _tmp24_); _tmp26_ = _engine_list_ref0 ((EngineList*) _tmp25_); list = _tmp26_; _tmp27_ = list; if (_tmp27_ == NULL) { EngineList* _tmp28_; GHashTable* _tmp29_; IBusEngineDesc* _tmp30_; const gchar* _tmp31_; gchar* _tmp32_; EngineList* _tmp33_; EngineList* _tmp34_; _tmp28_ = engine_list_new (); _engine_list_unref0 (list); list = _tmp28_; _tmp29_ = map; _tmp30_ = engine; _tmp31_ = ibus_engine_desc_get_language (_tmp30_); _tmp32_ = g_strdup (_tmp31_); _tmp33_ = list; _tmp34_ = _engine_list_ref0 (_tmp33_); g_hash_table_insert (_tmp29_, _tmp32_, _tmp34_); } _tmp35_ = list; _tmp36_ = list; _tmp37_ = _tmp36_->data; _tmp37__length1 = _tmp36_->data_length1; _tmp38_ = engine; _tmp39_ = _g_object_ref0 (_tmp38_); _vala_array_add1 (&_tmp35_->data, &_tmp35_->data_length1, &_tmp35_->_data_size_, _tmp39_); _engine_list_unref0 (list); _g_object_unref0 (engine); } } } _tmp40_ = map; _tmp41_ = g_hash_table_get_keys (_tmp40_); { GList* language_collection = NULL; GList* language_it = NULL; language_collection = _tmp41_; 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* _tmp42_; const gchar* _tmp43_; gconstpointer _tmp44_; EngineList* _tmp45_; const gchar* _tmp46_; gchar* _tmp47_; gchar* _tmp48_; EngineList* _tmp49_; IBusEngineDesc** _tmp50_; gint _tmp50__length1; _tmp42_ = map; _tmp43_ = language; _tmp44_ = g_hash_table_lookup (_tmp42_, _tmp43_); _tmp45_ = _engine_list_ref0 ((EngineList*) _tmp44_); list = _tmp45_; _tmp46_ = language; _tmp47_ = ibus_get_language_name (_tmp46_); _tmp48_ = _tmp47_; g_print (_ ("language: %s\n"), _tmp48_); _g_free0 (_tmp48_); _tmp49_ = list; _tmp50_ = _tmp49_->data; _tmp50__length1 = _tmp49_->data_length1; { IBusEngineDesc** engine_collection = NULL; gint engine_collection_length1 = 0; gint _engine_collection_size_ = 0; gint engine_it = 0; engine_collection = _tmp50_; engine_collection_length1 = _tmp50__length1; for (engine_it = 0; engine_it < engine_collection_length1; engine_it = engine_it + 1) { IBusEngineDesc* _tmp51_; IBusEngineDesc* engine = NULL; _tmp51_ = _g_object_ref0 (engine_collection[engine_it]); engine = _tmp51_; { IBusEngineDesc* _tmp52_; const gchar* _tmp53_; IBusEngineDesc* _tmp54_; const gchar* _tmp55_; _tmp52_ = engine; _tmp53_ = ibus_engine_desc_get_name (_tmp52_); _tmp54_ = engine; _tmp55_ = ibus_engine_desc_get_longname (_tmp54_); g_print (" %s - %s\n", _tmp53_, _tmp55_); _g_object_unref0 (engine); } } } _engine_list_unref0 (list); } } (language_collection == NULL) ? NULL : (language_collection = (g_list_free (language_collection), NULL)); } result = EXIT_SUCCESS; _g_hash_table_unref0 (map); (engines == NULL) ? NULL : (engines = (_g_list_free__g_object_unref0_ (engines), NULL)); _g_object_unref0 (bus); _g_option_context_free0 (option); return result; } static void _vala_array_add2 (gchar** * array, gint* length, gint* 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, gint* length, gint* 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, gint* length, gint* 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, gint* length, gint* 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, gint* length, gint* 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, gint* length, gint* 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, gint* length, gint* 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) { gchar* layout = NULL; const gchar* _tmp0_; gchar* _tmp1_; gchar* variant = NULL; const gchar* _tmp2_; gchar* _tmp3_; gchar* option = NULL; const gchar* _tmp4_; gchar* _tmp5_; gchar* standard_error = NULL; gint exit_status = 0; gchar** args = NULL; gchar* _tmp6_; gchar** _tmp7_; gint args_length1; gint _args_size_; gboolean _tmp8_ = FALSE; gboolean _tmp9_ = FALSE; const gchar* _tmp10_; gboolean _tmp18_ = FALSE; gboolean _tmp19_ = FALSE; const gchar* _tmp20_; gboolean _tmp28_ = FALSE; gboolean _tmp29_ = FALSE; const gchar* _tmp30_; gchar** _tmp40_; gint _tmp40__length1; GError* _inner_error0_ = NULL; gint result = 0; g_return_val_if_fail (engine != NULL, 0); _tmp0_ = ibus_engine_desc_get_layout (engine); _tmp1_ = g_strdup (_tmp0_); layout = _tmp1_; _tmp2_ = ibus_engine_desc_get_layout_variant (engine); _tmp3_ = g_strdup (_tmp2_); variant = _tmp3_; _tmp4_ = ibus_engine_desc_get_layout_option (engine); _tmp5_ = g_strdup (_tmp4_); option = _tmp5_; standard_error = NULL; exit_status = 0; _tmp6_ = g_strdup ("setxkbmap"); _tmp7_ = g_new0 (gchar*, 1 + 1); _tmp7_[0] = _tmp6_; args = _tmp7_; args_length1 = 1; _args_size_ = args_length1; _tmp10_ = layout; if (_tmp10_ != NULL) { const gchar* _tmp11_; _tmp11_ = layout; _tmp9_ = g_strcmp0 (_tmp11_, "") != 0; } else { _tmp9_ = FALSE; } if (_tmp9_) { const gchar* _tmp12_; _tmp12_ = layout; _tmp8_ = g_strcmp0 (_tmp12_, "default") != 0; } else { _tmp8_ = FALSE; } if (_tmp8_) { gchar** _tmp13_; gint _tmp13__length1; gchar* _tmp14_; gchar** _tmp15_; gint _tmp15__length1; const gchar* _tmp16_; gchar* _tmp17_; _tmp13_ = args; _tmp13__length1 = args_length1; _tmp14_ = g_strdup ("-layout"); _vala_array_add2 (&args, &args_length1, &_args_size_, _tmp14_); _tmp15_ = args; _tmp15__length1 = args_length1; _tmp16_ = layout; _tmp17_ = g_strdup (_tmp16_); _vala_array_add3 (&args, &args_length1, &_args_size_, _tmp17_); } _tmp20_ = variant; if (_tmp20_ != NULL) { const gchar* _tmp21_; _tmp21_ = variant; _tmp19_ = g_strcmp0 (_tmp21_, "") != 0; } else { _tmp19_ = FALSE; } if (_tmp19_) { const gchar* _tmp22_; _tmp22_ = variant; _tmp18_ = g_strcmp0 (_tmp22_, "default") != 0; } else { _tmp18_ = FALSE; } if (_tmp18_) { gchar** _tmp23_; gint _tmp23__length1; gchar* _tmp24_; gchar** _tmp25_; gint _tmp25__length1; const gchar* _tmp26_; gchar* _tmp27_; _tmp23_ = args; _tmp23__length1 = args_length1; _tmp24_ = g_strdup ("-variant"); _vala_array_add4 (&args, &args_length1, &_args_size_, _tmp24_); _tmp25_ = args; _tmp25__length1 = args_length1; _tmp26_ = variant; _tmp27_ = g_strdup (_tmp26_); _vala_array_add5 (&args, &args_length1, &_args_size_, _tmp27_); } _tmp30_ = option; if (_tmp30_ != NULL) { const gchar* _tmp31_; _tmp31_ = option; _tmp29_ = g_strcmp0 (_tmp31_, "") != 0; } else { _tmp29_ = FALSE; } if (_tmp29_) { const gchar* _tmp32_; _tmp32_ = option; _tmp28_ = g_strcmp0 (_tmp32_, "default") != 0; } else { _tmp28_ = FALSE; } if (_tmp28_) { gchar** _tmp33_; gint _tmp33__length1; gchar* _tmp34_; gchar** _tmp35_; gint _tmp35__length1; gchar* _tmp36_; gchar** _tmp37_; gint _tmp37__length1; const gchar* _tmp38_; gchar* _tmp39_; _tmp33_ = args; _tmp33__length1 = args_length1; _tmp34_ = g_strdup ("-option"); _vala_array_add6 (&args, &args_length1, &_args_size_, _tmp34_); _tmp35_ = args; _tmp35__length1 = args_length1; _tmp36_ = g_strdup ("-option"); _vala_array_add7 (&args, &args_length1, &_args_size_, _tmp36_); _tmp37_ = args; _tmp37__length1 = args_length1; _tmp38_ = option; _tmp39_ = g_strdup (_tmp38_); _vala_array_add8 (&args, &args_length1, &_args_size_, _tmp39_); } _tmp40_ = args; _tmp40__length1 = args_length1; if (_tmp40__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 _tmp41_ = FALSE; gchar** _tmp42_; gint _tmp42__length1; gchar* _tmp43_ = NULL; gint _tmp44_ = 0; gboolean _tmp45_; _tmp42_ = args; _tmp42__length1 = args_length1; _tmp45_ = g_spawn_sync (NULL, _tmp42_, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &_tmp43_, &_tmp44_, &_inner_error0_); _g_free0 (standard_error); standard_error = _tmp43_; exit_status = _tmp44_; _tmp41_ = _tmp45_; if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp46_ = -1; if (_inner_error0_->domain == G_SPAWN_ERROR) { goto __catch0_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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp46_; } if (!_tmp41_) { const gchar* _tmp47_; _tmp47_ = ibus_engine_desc_get_layout (engine); g_warning ("main.vala:135: Switch xkb layout to %s failed.", _tmp47_); 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 __finally0; __catch0_g_spawn_error: { GError* e = NULL; GError* _tmp48_; const gchar* _tmp49_; e = _inner_error0_; _inner_error0_ = NULL; _tmp48_ = e; _tmp49_ = _tmp48_->message; g_warning ("main.vala:140: Execute setxkbmap failed: %s", _tmp49_); 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; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp50_ = -1; 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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp50_; } if (exit_status != 0) { const gchar* _tmp51_ = NULL; const gchar* _tmp52_; _tmp52_ = standard_error; _tmp51_ = _tmp52_; if (_tmp51_ == NULL) { _tmp51_ = "(null)"; } g_warning ("main.vala:145: Execute setxkbmap failed: %s", _tmp51_); 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, gint argv_length1) { IBusBus* bus = NULL; IBusBus* _tmp0_; gchar* engine = NULL; const gchar* _tmp3_; IBusBus* _tmp10_; const gchar* _tmp11_; IBusEngineDesc* desc = NULL; IBusBus* _tmp13_; IBusEngineDesc* _tmp14_; IBusEngineDesc* _tmp15_; GSettings* settings = NULL; GSettings* _tmp17_; GSettings* _tmp18_; gint result = 0; _tmp0_ = get_bus (); bus = _tmp0_; engine = NULL; if (argv_length1 > 1) { const gchar* _tmp1_; gchar* _tmp2_; _tmp1_ = argv[1]; _tmp2_ = g_strdup (_tmp1_); _g_free0 (engine); engine = _tmp2_; } _tmp3_ = engine; if (_tmp3_ == NULL) { IBusEngineDesc* desc = NULL; IBusBus* _tmp4_; IBusEngineDesc* _tmp5_; IBusEngineDesc* _tmp6_; IBusEngineDesc* _tmp8_; const gchar* _tmp9_; _tmp4_ = bus; _tmp5_ = ibus_bus_get_global_engine (_tmp4_); desc = _tmp5_; _tmp6_ = desc; if (_tmp6_ == NULL) { FILE* _tmp7_; _tmp7_ = stderr; fprintf (_tmp7_, "%s", _ ("No engine is set.\n")); result = EXIT_FAILURE; _g_object_unref0 (desc); _g_free0 (engine); _g_object_unref0 (bus); return result; } _tmp8_ = desc; _tmp9_ = ibus_engine_desc_get_name (_tmp8_); g_print ("%s\n", _tmp9_); result = EXIT_SUCCESS; _g_object_unref0 (desc); _g_free0 (engine); _g_object_unref0 (bus); return result; } _tmp10_ = bus; _tmp11_ = engine; if (!ibus_bus_set_global_engine (_tmp10_, _tmp11_)) { FILE* _tmp12_; _tmp12_ = stderr; fprintf (_tmp12_, "%s", _ ("Set global engine failed.\n")); result = EXIT_FAILURE; _g_free0 (engine); _g_object_unref0 (bus); return result; } _tmp13_ = bus; _tmp14_ = ibus_bus_get_global_engine (_tmp13_); desc = _tmp14_; _tmp15_ = desc; if (_tmp15_ == NULL) { FILE* _tmp16_; _tmp16_ = stderr; fprintf (_tmp16_, "%s", _ ("Get global engine failed.\n")); result = EXIT_FAILURE; _g_object_unref0 (desc); _g_free0 (engine); _g_object_unref0 (bus); return result; } _tmp17_ = g_settings_new (IBUS_SCHEMAS_GENERAL); settings = _tmp17_; _tmp18_ = settings; if (!g_settings_get_boolean (_tmp18_, "use-system-keyboard-layout")) { IBusEngineDesc* _tmp19_; _tmp19_ = desc; result = exec_setxkbmap (_tmp19_); _g_object_unref0 (settings); _g_object_unref0 (desc); _g_free0 (engine); _g_object_unref0 (bus); return result; } result = EXIT_SUCCESS; _g_object_unref0 (settings); _g_object_unref0 (desc); _g_free0 (engine); _g_object_unref0 (bus); return result; } gint message_watch (gchar** argv, gint argv_length1) { gint result = 0; result = EXIT_SUCCESS; return result; } gint restart_daemon (gchar** argv, gint argv_length1) { IBusBus* bus = NULL; IBusBus* _tmp0_; IBusBus* _tmp1_; IBusBus* _tmp3_; gint result = 0; _tmp0_ = get_bus (); bus = _tmp0_; _tmp1_ = bus; if (_tmp1_ == NULL) { FILE* _tmp2_; _tmp2_ = stderr; fprintf (_tmp2_, "%s", _ ("Can't connect to IBus.\n")); result = EXIT_FAILURE; _g_object_unref0 (bus); return result; } _tmp3_ = bus; ibus_bus_exit (_tmp3_, TRUE); result = EXIT_SUCCESS; _g_object_unref0 (bus); return result; } gint exit_daemon (gchar** argv, gint argv_length1) { IBusBus* bus = NULL; IBusBus* _tmp0_; IBusBus* _tmp1_; IBusBus* _tmp3_; gint result = 0; _tmp0_ = get_bus (); bus = _tmp0_; _tmp1_ = bus; if (_tmp1_ == NULL) { FILE* _tmp2_; _tmp2_ = stderr; fprintf (_tmp2_, "%s", _ ("Can't connect to IBus.\n")); result = EXIT_FAILURE; _g_object_unref0 (bus); return result; } _tmp3_ = bus; ibus_bus_exit (_tmp3_, FALSE); result = EXIT_SUCCESS; _g_object_unref0 (bus); return result; } gint print_version (gchar** argv, gint argv_length1) { gint result = 0; g_print ("IBus %s\n", PACKAGE_VERSION); result = EXIT_SUCCESS; return result; } gint read_cache (gchar** argv, gint argv_length1) { static const GOptionEntry options[3] = {{"system", (gchar) 0, 0, G_OPTION_ARG_NONE, &is_system, N_ ("Read the system registry cache."), NULL}, {"file", (gchar) 0, 0, G_OPTION_ARG_STRING, &cache_file, N_ ("Read the registry cache FILE."), "FILE"}, {NULL}}; GOptionContext* option = NULL; GOptionContext* _tmp0_; GOptionContext* _tmp1_; IBusRegistry* registry = NULL; IBusRegistry* _tmp8_; const gchar* _tmp9_; GString* output = NULL; GString* _tmp15_; IBusRegistry* _tmp16_; GString* _tmp17_; GString* _tmp18_; const gchar* _tmp19_; GError* _inner_error0_ = NULL; gint result = 0; _tmp0_ = g_option_context_new (NULL); option = _tmp0_; _tmp1_ = option; g_option_context_add_main_entries (_tmp1_, options, GETTEXT_PACKAGE); { GOptionContext* _tmp2_; _tmp2_ = option; g_option_context_parse (_tmp2_, (gint*) (&argv_length1), &argv, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp3_ = -1; if (_inner_error0_->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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp3_; } } goto __finally0; __catch0_g_option_error: { GError* e = NULL; FILE* _tmp4_; GError* _tmp5_; const gchar* _tmp6_; e = _inner_error0_; _inner_error0_ = NULL; _tmp4_ = stderr; _tmp5_ = e; _tmp6_ = _tmp5_->message; fprintf (_tmp4_, "%s\n", _tmp6_); result = EXIT_FAILURE; _g_error_free0 (e); _g_option_context_free0 (option); return result; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp7_ = -1; _g_option_context_free0 (option); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp7_; } _tmp8_ = ibus_registry_new (); g_object_ref_sink (_tmp8_); registry = _tmp8_; _tmp9_ = cache_file; if (_tmp9_ != NULL) { IBusRegistry* _tmp10_; const gchar* _tmp11_; _tmp10_ = registry; _tmp11_ = cache_file; if (!ibus_registry_load_cache_file (_tmp10_, _tmp11_)) { FILE* _tmp12_; _tmp12_ = stderr; fprintf (_tmp12_, "%s", _ ("The registry cache is invalid.\n")); result = EXIT_FAILURE; _g_object_unref0 (registry); _g_option_context_free0 (option); return result; } } else { IBusRegistry* _tmp13_; _tmp13_ = registry; if (!ibus_registry_load_cache (_tmp13_, !is_system)) { FILE* _tmp14_; _tmp14_ = stderr; fprintf (_tmp14_, "%s", _ ("The registry cache is invalid.\n")); result = EXIT_FAILURE; _g_object_unref0 (registry); _g_option_context_free0 (option); return result; } } _tmp15_ = g_string_new (""); output = _tmp15_; _tmp16_ = registry; _tmp17_ = output; ibus_registry_output (_tmp16_, _tmp17_, 1); _tmp18_ = output; _tmp19_ = _tmp18_->str; g_print ("%s\n", _tmp19_); result = EXIT_SUCCESS; _g_string_free0 (output); _g_object_unref0 (registry); _g_option_context_free0 (option); return result; } gint write_cache (gchar** argv, gint argv_length1) { static const GOptionEntry options[3] = {{"system", (gchar) 0, 0, G_OPTION_ARG_NONE, &is_system, N_ ("Write the system registry cache."), NULL}, {"file", (gchar) 0, 0, G_OPTION_ARG_STRING, &cache_file, N_ ("Write the registry cache FILE."), "FILE"}, {NULL}}; GOptionContext* option = NULL; GOptionContext* _tmp0_; GOptionContext* _tmp1_; IBusRegistry* registry = NULL; IBusRegistry* _tmp8_; IBusRegistry* _tmp9_; const gchar* _tmp10_; gint _tmp14_ = 0; IBusRegistry* _tmp15_; GError* _inner_error0_ = NULL; gint result = 0; _tmp0_ = g_option_context_new (NULL); option = _tmp0_; _tmp1_ = option; g_option_context_add_main_entries (_tmp1_, options, GETTEXT_PACKAGE); { GOptionContext* _tmp2_; _tmp2_ = option; g_option_context_parse (_tmp2_, (gint*) (&argv_length1), &argv, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp3_ = -1; if (_inner_error0_->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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp3_; } } goto __finally0; __catch0_g_option_error: { GError* e = NULL; FILE* _tmp4_; GError* _tmp5_; const gchar* _tmp6_; e = _inner_error0_; _inner_error0_ = NULL; _tmp4_ = stderr; _tmp5_ = e; _tmp6_ = _tmp5_->message; fprintf (_tmp4_, "%s\n", _tmp6_); result = EXIT_FAILURE; _g_error_free0 (e); _g_option_context_free0 (option); return result; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp7_ = -1; _g_option_context_free0 (option); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp7_; } _tmp8_ = ibus_registry_new (); g_object_ref_sink (_tmp8_); registry = _tmp8_; _tmp9_ = registry; ibus_registry_load (_tmp9_); _tmp10_ = cache_file; if (_tmp10_ != NULL) { gint _tmp11_ = 0; IBusRegistry* _tmp12_; const gchar* _tmp13_; _tmp12_ = registry; _tmp13_ = cache_file; if (ibus_registry_save_cache_file (_tmp12_, _tmp13_)) { _tmp11_ = EXIT_SUCCESS; } else { _tmp11_ = EXIT_FAILURE; } result = _tmp11_; _g_object_unref0 (registry); _g_option_context_free0 (option); return result; } _tmp15_ = registry; if (ibus_registry_save_cache (_tmp15_, !is_system)) { _tmp14_ = EXIT_SUCCESS; } else { _tmp14_ = EXIT_FAILURE; } result = _tmp14_; _g_object_unref0 (registry); _g_option_context_free0 (option); return result; } gint print_address (gchar** argv, gint argv_length1) { gchar* address = NULL; const gchar* _tmp0_; gchar* _tmp1_; const gchar* _tmp2_ = NULL; const gchar* _tmp3_; gint result = 0; _tmp0_ = ibus_get_address (); _tmp1_ = g_strdup (_tmp0_); address = _tmp1_; _tmp3_ = address; if (_tmp3_ != NULL) { const gchar* _tmp4_; _tmp4_ = address; _tmp2_ = _tmp4_; } else { _tmp2_ = "(null)"; } g_print ("%s\n", _tmp2_); result = EXIT_SUCCESS; _g_free0 (address); return result; } gint read_config_options (gchar** argv, gint argv_length1) { static const GOptionEntry options[2] = {{"engine-id", (gchar) 0, 0, G_OPTION_ARG_STRING, &engine_id, N_ ("Use engine schema paths instead of ibus core, " "which can be comma-separated values."), "ENGINE_ID"}, {NULL}}; GOptionContext* option = NULL; GOptionContext* _tmp0_; GOptionContext* _tmp1_; GError* _inner_error0_ = NULL; gint result = 0; _tmp0_ = g_option_context_new (NULL); option = _tmp0_; _tmp1_ = option; g_option_context_add_main_entries (_tmp1_, options, GETTEXT_PACKAGE); { GOptionContext* _tmp2_; _tmp2_ = option; g_option_context_parse (_tmp2_, (gint*) (&argv_length1), &argv, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp3_ = -1; if (_inner_error0_->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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp3_; } } goto __finally0; __catch0_g_option_error: { GError* e = NULL; FILE* _tmp4_; GError* _tmp5_; const gchar* _tmp6_; e = _inner_error0_; _inner_error0_ = NULL; _tmp4_ = stderr; _tmp5_ = e; _tmp6_ = _tmp5_->message; fprintf (_tmp4_, "%s\n", _tmp6_); result = EXIT_FAILURE; _g_error_free0 (e); _g_option_context_free0 (option); return result; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp7_ = -1; _g_option_context_free0 (option); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp7_; } result = EXIT_SUCCESS; _g_option_context_free0 (option); return result; } static gpointer _g_settings_schema_source_ref0 (gpointer self) { return self ? g_settings_schema_source_ref (self) : NULL; } static inline void _g_slist_free__g_free0_ (GSList* self) { g_slist_free_full (self, (GDestroyNotify) _g_free0_); } GSList* get_ibus_schemas (void) { gchar** ids = NULL; gchar** _tmp0_; gint ids_length1; gint _ids_size_; const gchar* _tmp1_; GSList* ibus_schemas = NULL; GSettingsSchemaSource* schema_source = NULL; GSettingsSchemaSource* _tmp5_; GSettingsSchemaSource* _tmp6_; gchar** list_schemas = NULL; gchar** _tmp7_; gint list_schemas_length1; gint _list_schemas_size_; GSettingsSchemaSource* _tmp8_; gchar** _tmp9_ = NULL; gchar** _tmp10_; gint _tmp10__length1; GSList* _tmp28_; GCompareFunc _tmp29_; GSList* result = NULL; _tmp0_ = g_new0 (gchar*, 0 + 1); ids = _tmp0_; ids_length1 = 0; _ids_size_ = ids_length1; _tmp1_ = engine_id; if (_tmp1_ != NULL) { const gchar* _tmp2_; gchar** _tmp3_; gchar** _tmp4_; _tmp2_ = engine_id; _tmp4_ = _tmp3_ = g_strsplit (_tmp2_, ",", 0); ids = (_vala_array_free (ids, ids_length1, (GDestroyNotify) g_free), NULL); ids = _tmp4_; ids_length1 = _vala_array_length (_tmp3_); _ids_size_ = ids_length1; } ibus_schemas = NULL; _tmp5_ = g_settings_schema_source_get_default (); _tmp6_ = _g_settings_schema_source_ref0 (_tmp5_); schema_source = _tmp6_; _tmp7_ = g_new0 (gchar*, 0 + 1); list_schemas = _tmp7_; list_schemas_length1 = 0; _list_schemas_size_ = list_schemas_length1; _tmp8_ = schema_source; g_settings_schema_source_list_schemas (_tmp8_, TRUE, &_tmp9_, NULL); list_schemas = (_vala_array_free (list_schemas, list_schemas_length1, (GDestroyNotify) g_free), NULL); list_schemas = _tmp9_; list_schemas_length1 = -1; _list_schemas_size_ = list_schemas_length1; list_schemas_length1 = _vala_array_length (list_schemas); _tmp10_ = list_schemas; _tmp10__length1 = list_schemas_length1; { gchar** schema_collection = NULL; gint schema_collection_length1 = 0; gint _schema_collection_size_ = 0; gint schema_it = 0; schema_collection = _tmp10_; schema_collection_length1 = _tmp10__length1; for (schema_it = 0; schema_it < schema_collection_length1; schema_it = schema_it + 1) { gchar* _tmp11_; gchar* schema = NULL; _tmp11_ = g_strdup (schema_collection[schema_it]); schema = _tmp11_; { gchar** _tmp12_; gint _tmp12__length1; _tmp12_ = ids; _tmp12__length1 = ids_length1; if (_tmp12__length1 != 0) { gchar** _tmp13_; gint _tmp13__length1; _tmp13_ = ids; _tmp13__length1 = ids_length1; { gchar** id_collection = NULL; gint id_collection_length1 = 0; gint _id_collection_size_ = 0; gint id_it = 0; id_collection = _tmp13_; id_collection_length1 = _tmp13__length1; for (id_it = 0; id_it < id_collection_length1; id_it = id_it + 1) { const gchar* id = NULL; id = id_collection[id_it]; { gboolean _tmp14_ = FALSE; const gchar* _tmp15_; const gchar* _tmp16_; _tmp15_ = id; _tmp16_ = schema; if (g_strcmp0 (_tmp15_, _tmp16_) == 0) { _tmp14_ = TRUE; } else { const gchar* _tmp17_; const gchar* _tmp18_; gchar* _tmp19_; gchar* _tmp20_; _tmp17_ = schema; _tmp18_ = id; _tmp19_ = g_strconcat ("org.freedesktop.ibus.engine.", _tmp18_, NULL); _tmp20_ = _tmp19_; _tmp14_ = g_str_has_prefix (_tmp17_, _tmp20_); _g_free0 (_tmp20_); } if (_tmp14_) { const gchar* _tmp21_; gchar* _tmp22_; _tmp21_ = schema; _tmp22_ = g_strdup (_tmp21_); ibus_schemas = g_slist_prepend (ibus_schemas, _tmp22_); break; } } } } } else { gboolean _tmp23_ = FALSE; const gchar* _tmp24_; _tmp24_ = schema; if (g_str_has_prefix (_tmp24_, "org.freedesktop.ibus")) { const gchar* _tmp25_; _tmp25_ = schema; _tmp23_ = !g_str_has_prefix (_tmp25_, "org.freedesktop.ibus.engine"); } else { _tmp23_ = FALSE; } if (_tmp23_) { const gchar* _tmp26_; gchar* _tmp27_; _tmp26_ = schema; _tmp27_ = g_strdup (_tmp26_); ibus_schemas = g_slist_prepend (ibus_schemas, _tmp27_); } } _g_free0 (schema); } } } _tmp28_ = ibus_schemas; if (g_slist_length (_tmp28_) == ((guint) 0)) { g_printerr ("Not found schemas of \"org.freedesktop.ibus\"\n"); result = ibus_schemas; list_schemas = (_vala_array_free (list_schemas, list_schemas_length1, (GDestroyNotify) g_free), NULL); _g_settings_schema_source_unref0 (schema_source); ids = (_vala_array_free (ids, ids_length1, (GDestroyNotify) g_free), NULL); return result; } _tmp29_ = ((GCompareFunc) g_strcmp0); ibus_schemas = g_slist_sort (ibus_schemas, _tmp29_); result = ibus_schemas; list_schemas = (_vala_array_free (list_schemas, list_schemas_length1, (GDestroyNotify) g_free), NULL); _g_settings_schema_source_unref0 (schema_source); ids = (_vala_array_free (ids, ids_length1, (GDestroyNotify) g_free), NULL); return result; } gint read_config (gchar** argv, gint argv_length1) { GSList* ibus_schemas = NULL; GSList* _tmp0_; GSList* _tmp1_; GSettingsSchemaSource* schema_source = NULL; GSettingsSchemaSource* _tmp2_; GSettingsSchemaSource* _tmp3_; GString* output = NULL; GString* _tmp4_; GSList* _tmp5_; GString* _tmp26_; const gchar* _tmp27_; gint result = 0; if (read_config_options (argv, (gint) argv_length1) == EXIT_FAILURE) { result = EXIT_FAILURE; return result; } _tmp0_ = get_ibus_schemas (); ibus_schemas = _tmp0_; _tmp1_ = ibus_schemas; if (g_slist_length (_tmp1_) == ((guint) 0)) { result = EXIT_FAILURE; (ibus_schemas == NULL) ? NULL : (ibus_schemas = (_g_slist_free__g_free0_ (ibus_schemas), NULL)); return result; } _tmp2_ = g_settings_schema_source_get_default (); _tmp3_ = _g_settings_schema_source_ref0 (_tmp2_); schema_source = _tmp3_; _tmp4_ = g_string_new (""); output = _tmp4_; _tmp5_ = ibus_schemas; { GSList* schema_collection = NULL; GSList* schema_it = NULL; schema_collection = _tmp5_; for (schema_it = schema_collection; schema_it != NULL; schema_it = schema_it->next) { gchar* _tmp6_; gchar* schema = NULL; _tmp6_ = g_strdup ((const gchar*) schema_it->data); schema = _tmp6_; { GSettingsSchema* settings_schema = NULL; GSettingsSchemaSource* _tmp7_; const gchar* _tmp8_; GSettingsSchema* _tmp9_; GSettings* settings = NULL; const gchar* _tmp10_; GSettings* _tmp11_; GString* _tmp12_; const gchar* _tmp13_; GSettingsSchema* _tmp14_; gchar** _tmp15_; gchar** _tmp16_; _tmp7_ = schema_source; _tmp8_ = schema; _tmp9_ = g_settings_schema_source_lookup (_tmp7_, _tmp8_, FALSE); settings_schema = _tmp9_; _tmp10_ = schema; _tmp11_ = g_settings_new (_tmp10_); settings = _tmp11_; _tmp12_ = output; _tmp13_ = schema; g_string_append_printf (_tmp12_, "SCHEMA: %s\n", _tmp13_); _tmp14_ = settings_schema; _tmp16_ = _tmp15_ = g_settings_schema_list_keys (_tmp14_); { gchar** key_collection = NULL; gint key_collection_length1 = 0; gint _key_collection_size_ = 0; gint key_it = 0; key_collection = _tmp16_; key_collection_length1 = _vala_array_length (_tmp15_); for (key_it = 0; key_it < key_collection_length1; key_it = key_it + 1) { gchar* _tmp17_; gchar* key = NULL; _tmp17_ = g_strdup (key_collection[key_it]); key = _tmp17_; { GVariant* variant = NULL; GSettings* _tmp18_; const gchar* _tmp19_; GVariant* _tmp20_; GString* _tmp21_; const gchar* _tmp22_; GVariant* _tmp23_; gchar* _tmp24_; gchar* _tmp25_; _tmp18_ = settings; _tmp19_ = key; _tmp20_ = g_settings_get_value (_tmp18_, _tmp19_); variant = _tmp20_; _tmp21_ = output; _tmp22_ = key; _tmp23_ = variant; _tmp24_ = g_variant_print (_tmp23_, TRUE); _tmp25_ = _tmp24_; g_string_append_printf (_tmp21_, " %s: %s\n", _tmp22_, _tmp25_); _g_free0 (_tmp25_); _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_settings_schema_unref0 (settings_schema); _g_free0 (schema); } } } _tmp26_ = output; _tmp27_ = _tmp26_->str; g_print ("%s", _tmp27_); result = EXIT_SUCCESS; _g_string_free0 (output); _g_settings_schema_source_unref0 (schema_source); (ibus_schemas == NULL) ? NULL : (ibus_schemas = (_g_slist_free__g_free0_ (ibus_schemas), NULL)); return result; } gint reset_config (gchar** argv, gint argv_length1) { GSList* ibus_schemas = NULL; GSList* _tmp0_; GSList* _tmp1_; GSettingsSchemaSource* schema_source = NULL; GSettingsSchemaSource* _tmp2_; GSettingsSchemaSource* _tmp3_; GSList* _tmp4_; gint result = 0; if (read_config_options (argv, (gint) argv_length1) == EXIT_FAILURE) { result = EXIT_FAILURE; return result; } _tmp0_ = get_ibus_schemas (); ibus_schemas = _tmp0_; _tmp1_ = ibus_schemas; if (g_slist_length (_tmp1_) == ((guint) 0)) { result = EXIT_FAILURE; (ibus_schemas == NULL) ? NULL : (ibus_schemas = (_g_slist_free__g_free0_ (ibus_schemas), NULL)); return result; } g_print ("%s\n", _ ("Resetting…")); _tmp2_ = g_settings_schema_source_get_default (); _tmp3_ = _g_settings_schema_source_ref0 (_tmp2_); schema_source = _tmp3_; _tmp4_ = ibus_schemas; { GSList* schema_collection = NULL; GSList* schema_it = NULL; schema_collection = _tmp4_; for (schema_it = schema_collection; schema_it != NULL; schema_it = schema_it->next) { gchar* _tmp5_; gchar* schema = NULL; _tmp5_ = g_strdup ((const gchar*) schema_it->data); schema = _tmp5_; { GSettingsSchema* settings_schema = NULL; GSettingsSchemaSource* _tmp6_; const gchar* _tmp7_; GSettingsSchema* _tmp8_; GSettings* settings = NULL; const gchar* _tmp9_; GSettings* _tmp10_; const gchar* _tmp11_; GSettingsSchema* _tmp12_; gchar** _tmp13_; gchar** _tmp14_; _tmp6_ = schema_source; _tmp7_ = schema; _tmp8_ = g_settings_schema_source_lookup (_tmp6_, _tmp7_, FALSE); settings_schema = _tmp8_; _tmp9_ = schema; _tmp10_ = g_settings_new (_tmp9_); settings = _tmp10_; _tmp11_ = schema; g_print ("SCHEMA: %s\n", _tmp11_); _tmp12_ = settings_schema; _tmp14_ = _tmp13_ = g_settings_schema_list_keys (_tmp12_); { gchar** key_collection = NULL; gint key_collection_length1 = 0; gint _key_collection_size_ = 0; gint key_it = 0; key_collection = _tmp14_; key_collection_length1 = _vala_array_length (_tmp13_); for (key_it = 0; key_it < key_collection_length1; key_it = key_it + 1) { gchar* _tmp15_; gchar* key = NULL; _tmp15_ = g_strdup (key_collection[key_it]); key = _tmp15_; { const gchar* _tmp16_; GSettings* _tmp17_; const gchar* _tmp18_; _tmp16_ = key; g_print (" %s\n", _tmp16_); _tmp17_ = settings; _tmp18_ = key; g_settings_reset (_tmp17_, _tmp18_); _g_free0 (key); } } key_collection = (_vala_array_free (key_collection, key_collection_length1, (GDestroyNotify) g_free), NULL); } _g_object_unref0 (settings); _g_settings_schema_unref0 (settings_schema); _g_free0 (schema); } } } g_settings_sync (); g_print ("%s\n", _ ("Done")); result = EXIT_SUCCESS; _g_settings_schema_source_unref0 (schema_source); (ibus_schemas == NULL) ? NULL : (ibus_schemas = (_g_slist_free__g_free0_ (ibus_schemas), NULL)); return result; } gint emoji_dialog (gchar** argv, gint argv_length1) { gchar* cmd = NULL; gchar* _tmp0_; GFile* file = NULL; const gchar* _tmp1_; GFile* _tmp2_; GFile* _tmp3_; const gchar* _tmp5_; gchar* _tmp6_; gchar** env = NULL; gchar** _tmp7_; gchar** _tmp8_; gint env_length1; gint _env_size_; GError* _inner_error0_ = NULL; gint result = 0; _tmp0_ = g_strdup (LIBEXECDIR "/ibus-ui-emojier"); cmd = _tmp0_; _tmp1_ = cmd; _tmp2_ = g_file_new_for_path (_tmp1_); file = _tmp2_; _tmp3_ = file; if (!g_file_query_exists (_tmp3_, NULL)) { gchar* _tmp4_; _tmp4_ = g_strdup ("../ui/gtk3/ibus-ui-emojier"); _g_free0 (cmd); cmd = _tmp4_; } _tmp5_ = cmd; _tmp6_ = g_strdup (_tmp5_); _g_free0 (argv[0]); argv[0] = _tmp6_; _tmp8_ = _tmp7_ = g_get_environ (); env = _tmp8_; env_length1 = _vala_array_length (_tmp7_); _env_size_ = env_length1; { gchar** _tmp9_; gint _tmp9__length1; _tmp9_ = env; _tmp9__length1 = env_length1; g_spawn_async (NULL, argv, _tmp9_, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp10_ = -1; if (_inner_error0_->domain == G_SPAWN_ERROR) { goto __catch0_g_spawn_error; } env = (_vala_array_free (env, env_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (file); _g_free0 (cmd); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp10_; } } goto __finally0; __catch0_g_spawn_error: { GError* e = NULL; FILE* _tmp11_; GError* _tmp12_; const gchar* _tmp13_; e = _inner_error0_; _inner_error0_ = NULL; _tmp11_ = stderr; _tmp12_ = e; _tmp13_ = _tmp12_->message; fprintf (_tmp11_, "%s\n", _tmp13_); result = EXIT_FAILURE; _g_error_free0 (e); env = (_vala_array_free (env, env_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (file); _g_free0 (cmd); return result; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp14_ = -1; env = (_vala_array_free (env, env_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (file); _g_free0 (cmd); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp14_; } result = EXIT_SUCCESS; env = (_vala_array_free (env, env_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (file); _g_free0 (cmd); return result; } gint print_help (gchar** argv, gint argv_length1) { FILE* _tmp0_; gint result = 0; _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); } static GType command_entry_get_type_once (void) { GType command_entry_type_id; command_entry_type_id = g_boxed_type_register_static ("CommandEntry", (GBoxedCopyFunc) command_entry_dup, (GBoxedFreeFunc) command_entry_free); return command_entry_type_id; } 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 = command_entry_get_type_once (); 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, gint argv_length1, gpointer self) { gint result; result = get_set_engine (argv, argv_length1); return result; } static gint _exit_daemon_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = exit_daemon (argv, argv_length1); return result; } static gint _list_engine_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = list_engine (argv, argv_length1); return result; } static gint _message_watch_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = message_watch (argv, argv_length1); return result; } static gint _restart_daemon_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = restart_daemon (argv, argv_length1); return result; } static gint _print_version_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = print_version (argv, argv_length1); return result; } static gint _read_cache_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = read_cache (argv, argv_length1); return result; } static gint _write_cache_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = write_cache (argv, argv_length1); return result; } static gint _print_address_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = print_address (argv, argv_length1); return result; } static gint _read_config_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = read_config (argv, argv_length1); return result; } static gint _reset_config_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = reset_config (argv, argv_length1); return result; } static gint _emoji_dialog_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = emoji_dialog (argv, argv_length1); return result; } static gint _print_help_entry_func (gchar** argv, gint argv_length1, gpointer self) { gint result; result = print_help (argv, argv_length1); return result; } void print_usage (FILE* stream) { const gchar* _tmp0_; g_return_if_fail (stream != NULL); _tmp0_ = program_name; fprintf (stream, _ ("Usage: %s COMMAND [OPTION...]\n\n"), _tmp0_); fprintf (stream, "%s", _ ("Commands:\n")); { gint i = 0; i = 0; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { CommandEntry _tmp3_; const gchar* _tmp4_; CommandEntry _tmp5_; const gchar* _tmp6_; if (!_tmp1_) { gint _tmp2_; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; if (!(i < G_N_ELEMENTS (commands))) { break; } _tmp3_ = commands[i]; _tmp4_ = _tmp3_.name; _tmp5_ = commands[i]; _tmp6_ = _tmp5_.description; fprintf (stream, " %-12s %s\n", _tmp4_, g_dgettext (NULL, _tmp6_)); } } } } static gchar** _vala_array_dup1 (gchar** self, gint length) { gchar** result; gint i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } gint _vala_main (gchar** argv, gint argv_length1) { const gchar* _tmp0_; gchar* _tmp1_; gchar** new_argv = NULL; gchar** _tmp3_; gint _tmp3__length1; gint new_argv_length1; gint _new_argv_size_; gchar** _tmp4_; gint _tmp4__length1; const gchar* _tmp5_; gchar** _tmp6_; gint _tmp6__length1; const gchar* _tmp7_; gchar* _tmp8_; FILE* _tmp17_; const gchar* _tmp18_; FILE* _tmp19_; gint result = 0; setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); ibus_init (); _tmp0_ = argv[0]; _tmp1_ = g_path_get_basename (_tmp0_); _g_free0 (program_name); program_name = _tmp1_; if (argv_length1 < 2) { FILE* _tmp2_; _tmp2_ = stderr; print_usage (_tmp2_); result = EXIT_FAILURE; return result; } _tmp3_ = ((argv + 1) != NULL) ? _vala_array_dup1 (argv + 1, argv_length1 - 1) : ((gpointer) (argv + 1)); _tmp3__length1 = argv_length1 - 1; new_argv = _tmp3_; new_argv_length1 = _tmp3__length1; _new_argv_size_ = new_argv_length1; _tmp4_ = new_argv; _tmp4__length1 = new_argv_length1; _tmp5_ = program_name; _tmp6_ = new_argv; _tmp6__length1 = new_argv_length1; _tmp7_ = _tmp6_[0]; _tmp8_ = g_strdup_printf ("%s %s", _tmp5_, _tmp7_); _g_free0 (_tmp4_[0]); _tmp4_[0] = _tmp8_; { gint i = 0; i = 0; { gboolean _tmp9_ = FALSE; _tmp9_ = TRUE; while (TRUE) { CommandEntry _tmp11_; const gchar* _tmp12_; const gchar* _tmp13_; if (!_tmp9_) { gint _tmp10_; _tmp10_ = i; i = _tmp10_ + 1; } _tmp9_ = FALSE; if (!(i < G_N_ELEMENTS (commands))) { break; } _tmp11_ = commands[i]; _tmp12_ = _tmp11_.name; _tmp13_ = argv[1]; if (g_strcmp0 (_tmp12_, _tmp13_) == 0) { CommandEntry _tmp14_; EntryFunc _tmp15_; gpointer _tmp15__target; gchar** _tmp16_; gint _tmp16__length1; _tmp14_ = commands[i]; _tmp15_ = _tmp14_.entry; _tmp15__target = _tmp14_.entry_target; _tmp16_ = new_argv; _tmp16__length1 = new_argv_length1; result = _tmp15_ (_tmp16_, (gint) _tmp16__length1, _tmp15__target); new_argv = (_vala_array_free (new_argv, new_argv_length1, (GDestroyNotify) g_free), NULL); return result; } } } } _tmp17_ = stderr; _tmp18_ = argv[1]; fprintf (_tmp17_, _ ("%s is unknown command!\n"), _tmp18_); _tmp19_ = stderr; print_usage (_tmp19_); 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) { return _vala_main (argv, argc); } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { gint 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) { gint length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; } ibus-1.5.22/NEWS0000644000000000000000000001266613623751712010153 00000000000000Changes in IBus 1.5.22 Ahmad Haghighi (1): po: Update translation (Persian) Alex Henrie (1): Handle small final sigma in ibus_keyval_convert_case Antoni Bella Pérez (1): po: Update translation (Catalan) Balázs Meskó (1): Translated using Weblate (Hungarian) Changwoo Ryu (2): Update translations setup: Add NotShowIn and Keywords keys to the desktop entry Frédéric Mangano-Tarumi (1): engine-simple: Add the French bepo_afnor layout Jason (3): Make session file header comment more clear src: Save address file in XDG_RUNTIME_DIR Amend typos Jean-Baptiste Holcroft (1): Translated using Weblate (French) Julien Humbert (2): Translated using Weblate (French) po: Update translation (French) Luigi Toscano (1): po: Update translation (Italian) Mike FABIAN (2): Translated using Weblate (German) po: Update translation (German) Oğuz Ersen (1): Translated using Weblate (Turkish) Piotr Drąg (1): Translated using Weblate (Polish) Rafael Fontenelle (1): Translated using Weblate (Portuguese (Brazil)) Robert Hoffmann (1): bus: Fix restart crash with inotify read() Yaron Shahrabani (1): Translated using Weblate (Hebrew) Yuri Chornoivan (2): Translated using Weblate (Ukrainian) po: Update translation (Ukrainian) fujiwarat (21): ui/gtk3: Fix manpage-section-mismatch in ibus-emoji.7 src/tests: Replace push with cd for Posix SH Delete deprecated g_type_class_add_private since glib 2.58 bus: Implement GDBusAuthObserver callback bus: Use XDG_RUNTIME_DIR for Unix socket directory src: Fix to allocate compose output buffer with more than two chars Revert XDG_RUNTIME_DIR to XDG_CONFIG_HOME src: Replace g_abort with abort in unicode-parser.c Revert the commit 982c40fb819878a8131d2d4a4573d0073ef4d6cc Fix deprecated APIs ui/gtk3: Fix to exit `ibus emoji` with Escape key src/tests: RHEL codereview for ibus-desktop-testing-runner src/tests: RHEL codereview #2 for ibus-desktop-testing-runner client/gtk2: Fix to set use_button_press_event after signals are connected client/gtk2: Fix to connect button-press-event signal po: Add ibus10.pot client/gtk2: Fix some format sentences src/tests: Increase sleep to 3 waiting for IBusConfig src: Fix SEGV to access NULL GError when compose length is zero bus: Fix recursive mkdir is failed in /var/lib/gdm/.cache/ibus Release 1.5.22 pan93412 (1): Update translations ui/gtk3: Fix manpage-section-mismatch in ibus-emoji.7 (fujiwarat) 71ee904f src/tests: Replace push with cd for Posix SH (fujiwarat) fcb2187d Make session file header comment more clear (Jason) bb638201 Delete deprecated g_type_class_add_private since glib 2.58 (fujiwarat) 48a8d7ed bus: Implement GDBusAuthObserver callback (fujiwarat) 3d442dbf bus: Use XDG_RUNTIME_DIR for Unix socket directory (fujiwarat) a141a141 src: Save address file in XDG_RUNTIME_DIR (Jason) 982c40fb src: Fix to allocate compose output buffer with more than two chars (fujiwarat) 773420fa Revert XDG_RUNTIME_DIR to XDG_CONFIG_HOME (fujiwarat) 5742e1b3 src: Replace g_abort with abort in unicode-parser.c (fujiwarat) 745ffb80 Revert the commit 982c40fb819878a8131d2d4a4573d0073ef4d6cc (fujiwarat) d53401ef Update translations (Changwoo Ryu) 17f8a86a Fix deprecated APIs (fujiwarat) 35863d81 bus: Fix restart crash with inotify read() (Robert Hoffmann) efeb7b96 ui/gtk3: Fix to exit `ibus emoji` with Escape key (fujiwarat) 26a8105b engine-simple: Add the French bepo_afnor layout (Frédéric Mangano-Tarumi) 76b1773c Update translations (pan93412) 052994d1 Amend typos (Jason) 2a08af4c src/tests: RHEL codereview for ibus-desktop-testing-runner (fujiwarat) bccf94d5 src/tests: RHEL codereview #2 for ibus-desktop-testing-runner (fujiwarat) d50627f0 setup: Add NotShowIn and Keywords keys to the desktop entry (Changwoo Ryu) 66141bbc client/gtk2: Fix to set use_button_press_event after signals are connected (fujiwarat) 25d11f5c client/gtk2: Fix to connect button-press-event signal (fujiwarat) c662a02b Translated using Weblate (Turkish) (Oğuz Ersen) 6f0fec0f Translated using Weblate (German) (Mike FABIAN) fc2328e7 Translated using Weblate (French) (Julien Humbert) 2e41b2a6 Translated using Weblate (French) (Jean-Baptiste Holcroft) 7be96178 Translated using Weblate (Polish) (Piotr Drąg) d31e55e4 Translated using Weblate (Portuguese (Brazil)) (Rafael Fontenelle) 22b4a08e Translated using Weblate (Hebrew) (Yaron Shahrabani) 4a3aa879 Translated using Weblate (Hungarian) (Balázs Meskó) 6f7aceb4 Translated using Weblate (Ukrainian) (Yuri Chornoivan) 9a9e5db8 po: Add ibus10.pot (fujiwarat) 687d026c client/gtk2: Fix some format sentences (fujiwarat) ecc3465a Handle small final sigma in ibus_keyval_convert_case (Alex Henrie) afc0a89c src/tests: Increase sleep to 3 waiting for IBusConfig (fujiwarat) 74863851 src: Fix SEGV to access NULL GError when compose length is zero (fujiwarat) cd4fef5a bus: Fix recursive mkdir is failed in /var/lib/gdm/.cache/ibus (fujiwarat) a1705ad7 po: Update translation (Persian) (Ahmad Haghighi) ac3f5b7c po: Update translation (Ukrainian) (Yuri Chornoivan) 40f4a717 po: Update translation (Catalan) (Antoni Bella Pérez) 5f4f1a8a po: Update translation (French) (Julien Humbert) 16562d4c po: Update translation (German) (Mike FABIAN) 9e238a87 po: Update translation (Italian) (Luigi Toscano) 21f7b230 Release 1.5.22 (fujiwarat) e3262f08ibus-1.5.22/compile0000755000000000000000000001632713623751263011031 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2018 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 | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.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 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: ibus-1.5.22/COPYING.unicode0000644000000000000000000000562613623750431012127 00000000000000(Apply to data/annotations/en.xml) UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE Unicode Data Files include all data files under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF online code charts under the directory http://www.unicode.org/Public/. Software includes any source code published in the Unicode Standard or under the directories http://www.unicode.org/Public/, http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. COPYRIGHT AND PERMISSION NOTICE Copyright © 1991-2016 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in http://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation (the "Data Files") or Unicode software and any associated documentation (the "Software") to deal in the Data Files or Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Data Files or Software, and to permit persons to whom the Data Files or Software are furnished to do so, provided that (a) the above copyright notice(s) and this permission notice appear with all copies of the Data Files or Software, (b) both the above copyright notice(s) and this permission notice appear in associated documentation, and (c) there is clear notice in each modified Data File or in the Software as well as in the documentation associated with the Data File(s) or Software that the data or software has been modified. THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR 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 THE DATA FILES OR SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in these Data Files or Software without prior written authorization of the copyright holder. ibus-1.5.22/data/0000755000000000000000000000000013623751575010441 500000000000000ibus-1.5.22/data/Makefile.am0000644000000000000000000000177113623750431012411 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2016 Peng Huang # Copyright (c) 2007-2019 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 = \ annotations \ icons \ its \ keymaps \ $(NULL) if ENABLE_DCONF SUBDIRS += dconf endif -include $(top_srcdir)/git.mk ibus-1.5.22/data/Makefile.in0000644000000000000000000005676113623751264012440 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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-2016 Peng Huang # Copyright (c) 2007-2019 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 distdir-am 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 = annotations icons its 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ SUBDIRS = annotations icons its keymaps $(NULL) $(am__append_1) 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/data/its/0000755000000000000000000000000013623751575011240 500000000000000ibus-1.5.22/data/its/Makefile.am0000644000000000000000000000202313623750431013177 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2019 Takao Fujiwara # Copyright (c) 2019 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 itsdir = $(datadir)/gettext/its its_DATA = \ ibus.its \ ibus.loc \ $(NULL) EXTRA_DIST = \ $(its_DATA) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.22/data/its/Makefile.in0000644000000000000000000004657113623751264013235 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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) 2019 Takao Fujiwara # Copyright (c) 2019 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/its ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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)$(itsdir)" DATA = $(its_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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ itsdir = $(datadir)/gettext/its its_DATA = \ ibus.its \ ibus.loc \ $(NULL) EXTRA_DIST = \ $(its_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/its/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu data/its/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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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-itsDATA: $(its_DATA) @$(NORMAL_INSTALL) @list='$(its_DATA)'; test -n "$(itsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(itsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(itsdir)" || 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)$(itsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(itsdir)" || exit $$?; \ done uninstall-itsDATA: @$(NORMAL_UNINSTALL) @list='$(its_DATA)'; test -n "$(itsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(itsdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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)$(itsdir)"; 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-itsDATA 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-itsDATA .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-itsDATA \ 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-itsDATA .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.22/data/its/ibus.its0000644000000000000000000000116413623750431012633 00000000000000 ibus-1.5.22/data/its/ibus.loc0000644000000000000000000000040213623750431012603 00000000000000 ibus-1.5.22/data/annotations/0000755000000000000000000000000013623751575012776 500000000000000ibus-1.5.22/data/annotations/Makefile.am0000644000000000000000000000170513623750431014743 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2016-2017 Takao Fujiwara # Copyright (c) 2016 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 = \ en.xml \ en_ascii.xml \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.22/data/annotations/Makefile.in0000644000000000000000000004232013623751264014757 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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) 2016-2017 Takao Fujiwara # Copyright (c) 2016 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/annotations ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ EXTRA_DIST = \ en.xml \ en_ascii.xml \ $(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/annotations/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu data/annotations/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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/data/annotations/en.xml0000644000000000000000000024277213623750431014046 00000000000000 face; grin eye; face; grin; smile face; joy; laugh; tear face; mouth; open; smile eye; face; mouth; open; smile cold; face; open; smile; sweat face; laugh; mouth; open; satisfied; smile face; wink blush; eye; face; smile delicious; face; savouring; smile; um; yum bright; cool; eye; eyewear; face; glasses; smile; sun; sunglasses; weather eye; face; heart; love; smile face; heart; kiss face; kiss eye; face; kiss; smile closed; eye; face; kiss face; outlined; relaxed; smile face; smile face; hug; hugging angel; face; fairy tale; fantasy; halo; innocent; smile face; thinking deadpan; face; neutral expressionless; face; inexpressive; unexpressive face; mouth; quiet; silent eyes; face; rolling face; smirk face; persevere disappointed; face; relieved; whew face; mouth; open; sympathy face; mouth; zipper face; hushed; stunned; surprised face; sleep face; tired face; sleep; zzz face; relieved face; geek; nerd face; tongue eye; face; joke; tongue; wink eye; face; horrible; taste; tongue face; frown face; frown face; unamused; unhappy cold; face; sweat dejected; face; pensive confused; face confounded; face face; upside-down cold; doctor; face; mask; medicine; sick face; ill; sick; thermometer bandage; face; hurt; injury face; money; mouth astonished; face; shocked; totally disappointed; face face; worried face; triumph; won cry; face; sad; tear cry; face; sad; sob; tear face; frown; mouth; open anguished; face face; fear; fearful; scared face; tired; weary face; grimace blue; cold; face; mouth; open; rushed; sweat face; fear; fearful; munch; scared; scream dazed; face; flushed dizzy; face angry; face; mad; pouting; rage; red angry; face; mad face; fairy tale; fantasy; horns; smile demon; devil; face; fairy tale; fantasy creature; face; fairy tale; fantasy; japanese; monster creature; face; fairy tale; fantasy; japanese; monster body; death; face; fairy tale; monster body; crossbones; death; face; monster; skull creature; face; fairy tale; fantasy; monster creature; extraterrestrial; face; fairy tale; fantasy; monster; space; ufo alien; creature; extraterrestrial; face; fairy tale; fantasy; monster; space; ufo face; monster; robot comic; dung; face; monster; poo; poop cat; face; mouth; open; smile cat; eye; face; grin; smile cat; face; joy; tear cat; eye; face; heart; love; smile cat; face; ironic; smile; wry cat; eye; face; kiss cat; face; oh; surprised; weary cat; cry; face; sad; tear cat; face; pouting evil; face; forbidden; gesture; monkey; no; not; prohibited; see evil; face; forbidden; gesture; hear; monkey; no; not; prohibited evil; face; forbidden; gesture; monkey; no; not; prohibited; speak boy maiden; virgin; virgo; zodiac man woman man; old old; woman baby blond cop; officer; police gua pi mao; hat; man man; turban construction; hat; worker aid; cross; face; hat; helmet fairy tale; fantasy guard sleuth; spy celebration; christmas; fairy tale; fantasy; father; santa angel; baby; face; fairy tale; fantasy massage; salon barber; beauty; parlor bride; veil; wedding frown; gesture gesture; pouting forbidden; gesture; hand; no; not; prohibited gesture; hand; ok hand; help; information; sassy gesture; hand; happy; raised apology; bow; gesture; sorry body; celebration; gesture; hand; hooray; raised ask; body; bow; folded; gesture; hand; please; pray; thanks face; head; silhouette; speak; speaking bust; silhouette bust; silhouette hike; walk; walking marathon; running bunny; dancer; ear; girl; woman dancer business; man; suit couple; romance couple; heart; love; romance child; father; mother couple; hand; hold; man; woman couple; gemini; hand; hold; man; twins; zodiac couple; hand; hold; woman emoji modifier; fitzpatrick; skin; tone emoji modifier; fitzpatrick; skin; tone emoji modifier; fitzpatrick; skin; tone emoji modifier; fitzpatrick; skin; tone emoji modifier; fitzpatrick; skin; tone biceps; body; comic; flex; muscle backhand; body; finger; hand; index; point backhand; body; finger; hand; index; point body; finger; hand; index; point; up backhand; body; finger; hand; index; point; up body; finger; hand backhand; body; down; finger; hand; index; point body; hand; v; victory body; finger; hand; spock; vulcan body; finger; hand; horns; rock-on body; finger; hand; splayed body; hand body; hand; ok +1; body; hand; thumb; up -1; body; down; hand; thumb body; clenched; fist; hand; punch body; clenched; fist; hand; punch body; hand; wave; waving body; clap; hand body; hand; open body; hand; write body; care; cosmetics; manicure; nail; polish body body body; clothing; footprint; print body; eye; face body body body; lips heart; kiss; lips; mark; romance arrow; cupid; heart; romance heart beating; heart; heartbeat; pulsating break; broken; heart heart; love excited; heart; sparkle excited; growing; heart; heartpulse; nervous blue; heart green; heart heart; yellow heart; purple heart; ribbon; valentine heart; revolving heart exclamation; heart; mark; punctuation heart; letter; love; mail; romance comic; sleep angry; comic; mad comic boom; comic comic; splashing; sweat comic; dash; running comic; star balloon; bubble; comic; dialog; speech dialog; speech angry; balloon; bubble; mad balloon; bubble; comic; thought hole clothing; eye; eyeglasses; eyewear dark; eye; eyewear; glasses clothing clothing; shirt; tshirt clothing; pants; trousers clothing clothing clothing; swim clothing; woman clothing; coin bag; clothing bag; clothing bag; hotel; shopping bag; satchel; school clothing; man; shoe athletic; clothing; shoe; sneaker clothing; heel; shoe; woman clothing; sandal; shoe; woman boot; clothing; shoe; woman clothing; king; queen clothing; hat; woman clothing; hat; top; tophat cap; celebration; clothing; graduation; hat beads; clothing; necklace; prayer; religion cosmetics; makeup diamond; romance diamond; gem; jewel; romance face; monkey monkey dog; face; pet pet dog face; wolf cat; face; pet pet face; leo; lion; zodiac face; tiger tiger leopard face; horse racehorse; racing face; unicorn cow; face bull; taurus; zodiac buffalo; water cow face; pig sow pig face; nose; pig aries; sheep; zodiac ewe capricorn; zodiac dromedary; hump bactrian; camel; hump elephant face; mouse mouse rat face; hamster; pet bunny; face; pet; rabbit bunny; pet chipmunk bear; face bear face; panda feet; paw; print turkey chicken rooster baby; chick; hatching baby; chick baby; chick bird penguin bird; fly; peace face; frog crocodile turtle bearer; ophiuchus; serpent; zodiac dragon; face; fairy tale fairy tale face; spouting; whale whale flipper pisces; zodiac fish; tropical fish octopus shell; spiral cancer; zodiac snail insect insect bee; insect beetle; insect; ladybird; ladybug insect spider; web scorpio; scorpius; zodiac flower; plant; romance blossom; cherry; flower; plant flower plant flower; plant flower; plant flower; plant; sun flower; plant flower; plant plant; young plant; tree deciduous; plant; shedding; tree palm; plant; tree plant ear; plant; rice leaf; plant plant 4; clover; four; leaf; plant falling; leaf; maple; plant falling; leaf; plant blow; flutter; leaf; plant; wind fruit; grape; plant fruit; plant fruit; plant fruit; orange; plant citrus; fruit; plant fruit; plant fruit; plant apple; fruit; plant; red apple; fruit; green; plant fruit; plant fruit; plant cherry; fruit; plant berry; fruit; plant plant; vegetable aubergine; plant; vegetable corn; ear; maize; maze; plant hot; pepper; plant plant plant loaf cheese bone; meat bone; chicken; leg; poultry burger french; fries cheese; slice frankfurter; hotdog; sausage mexican mexican popcorn pot; stew bento; box cracker; rice ball; japanese; rice cooked; rice curry; rice bowl; noodle; ramen; steaming pasta potato; roasted; sweet kebab; seafood; skewer; stick sushi fried; prawn; shrimp; tempura cake; fish; pastry; swirl dessert; japanese; skewer; stick; sweet cream; dessert; ice; icecream; soft; sweet dessert; ice; shaved; sweet cream; dessert; ice; sweet dessert; donut; sweet dessert; sweet birthday; cake; celebration; dessert; pastry; sweet cake; dessert; pastry; slice; sweet bar; chocolate; dessert; sweet dessert; sweet candy; dessert; sweet dessert; pudding; sweet honey; honeypot; pot; sweet baby; bottle; drink; milk beverage; coffee; drink; hot; steaming; tea beverage; cup; drink; tea; teacup bar; beverage; bottle; cup; drink bar; bottle; cork; drink; popping bar; beverage; drink; glass; wine bar; cocktail; drink; glass bar; drink; tropical bar; beer; drink; mug bar; beer; clink; drink; mug cooking; fork; knife; plate cooking; fork; knife egg; frying; pan aquarius; cooking; drink; jug; tool; weapon; zodiac africa; earth; europe; globe; world americas; earth; globe; world asia; australia; earth; globe; world earth; globe; meridians; world map; world cold; mountain; snow mountain eruption; mountain; weather fuji; mountain camping beach; umbrella desert desert; island park stadium building; classical building; construction building; house building; city building; derelict; house building; home; house building; garden; home; house building; christian; cross; religion islam; muslim; religion islam; muslim; religion jew; jewish; religion; temple religion; shinto; shrine building building; japanese; post building; european; post building; doctor; medicine building building building; hotel; love building; convenience; store building building; department; store building building; castle; japanese building; european chapel; romance tokyo; tower liberty; statue japan; map fountain camping fog; weather night; star; weather morning; mountain; sun; sunrise; weather morning; sun; weather building; city; dusk; evening; landscape; sun; sunset; weather building; dusk; sun; weather bridge; night; weather hot; hotsprings; springs; steaming space; weather carousel; horse amusement park; ferris; wheel amusement park; coaster; roller barber; haircut; pole circus; tent art; mask; performing; theater; theatre art; frame; museum; painting; picture art; museum; painting; palette game; slot engine; railway; steam; train; vehicle car; electric; railway; train; tram; trolleybus; vehicle railway; shinkansen; speed; train; vehicle bullet; railway; shinkansen; speed; train; vehicle railway; vehicle subway; vehicle railway; vehicle railway; train; vehicle trolleybus; vehicle vehicle car; mountain; railway; vehicle car; tram; trolleybus; vehicle vehicle bus; oncoming; vehicle bus; tram; trolley; vehicle bus; busstop; stop bus; vehicle vehicle engine; fire; truck; vehicle car; patrol; police; vehicle car; oncoming; police; vehicle vehicle oncoming; taxi; vehicle car; vehicle automobile; car; oncoming; vehicle recreational; rv; vehicle delivery; truck; vehicle lorry; semi; truck; vehicle vehicle bike; vehicle fuel; fuelpump; gas; pump; station highway; road railway; train beacon; car; light; police; revolving; vehicle light; signal; traffic light; signal; traffic barrier ship; tool boat; resort; sea; vehicle; yacht boat; vehicle boat; vehicle passenger; ship; vehicle boat boat; motorboat; vehicle vehicle vehicle airplane; vehicle airplane; check-in; departure; departures; vehicle airplane; arrivals; arriving; landing; vehicle chair vehicle railway; suspension; vehicle cable; gondola; mountain; vehicle aerial; cable; car; gondola; ropeway; tramway; vehicle space; vehicle space; vehicle bell; bellhop; hotel door hotel; sleep hotel; sleep couch; hotel; lamp toilet water bathtub; bath bath sand; timer hourglass; sand; timer clock alarm; clock clock clock; timer clock 00; 12; 12:00; clock; o’clock; twelve 12; 12:30; 30; clock; thirty; twelve 00; 1; 1:00; clock; o’clock; one 1; 1:30; 30; clock; one; thirty 00; 2; 2:00; clock; o’clock; two 2; 2:30; 30; clock; thirty; two 00; 3; 3:00; clock; o’clock; three 3; 3:30; 30; clock; thirty; three 00; 4; 4:00; clock; four; o’clock 30; 4; 4:30; clock; four; thirty 00; 5; 5:00; clock; five; o’clock 30; 5; 5:30; clock; five; thirty 00; 6; 6:00; clock; o’clock; six 30; 6; 6:30; clock; six; thirty 00; 7; 7:00; clock; o’clock; seven 30; 7; 7:30; clock; seven; thirty 00; 8; 8:00; clock; eight; o’clock 30; 8; 8:30; clock; eight; thirty 00; 9; 9:00; clock; nine; o’clock 30; 9; 9:30; clock; nine; thirty 00; 10; 10:00; clock; o’clock; ten 10; 10:30; 30; clock; ten; thirty 00; 11; 11:00; clock; eleven; o’clock 11; 11:30; 30; clock; eleven; thirty dark; moon; space; weather crescent; moon; space; waxing; weather moon; quarter; space; weather gibbous; moon; space; waxing; weather full; moon; space; weather gibbous; moon; space; waning; weather moon; quarter; space; weather crescent; moon; space; waning; weather crescent; moon; space; weather face; moon; space; weather face; moon; quarter; space; weather face; moon; quarter; space; weather weather bright; rays; space; sunny; weather bright; face; full; moon; space; weather bright; face; space; sun; weather star glittery; glow; shining; sparkle; star falling; shooting; space; star weather cloud; sun; weather cloud; rain; thunder; weather cloud; sun; weather cloud; sun; weather cloud; rain; sun; weather cloud; rain; weather cloud; cold; snow; weather cloud; lightning; weather cloud; weather; whirlwind cloud; weather blow; cloud; face; weather; wind dizzy; twister; typhoon; weather rain; weather clothing; rain; umbrella; weather clothing; rain; weather clothing; drop; rain; umbrella; weather rain; sun; umbrella; weather danger; electric; electricity; lightning; voltage; zap cold; snow; weather cold; snow; weather cold; snow; snowman; weather space flame; tool cold; comic; drop; sweat; weather ocean; water; wave; weather celebration; halloween; jack; lantern celebration; christmas; tree celebration celebration; fireworks; sparkle sparkle; star celebration celebration; party; popper; tada ball; celebration; confetti banner; celebration; japanese; tree celebration; cross; crossed; japanese bamboo; celebration; japanese; pine; plant celebration; doll; festival; japanese carp; celebration; streamer bell; celebration; chime; wind celebration; ceremony; moon celebration box; celebration; gift; present; wrapped celebration; medal; military celebration; reminder; ribbon cinema; film; frames; movie admission; ticket admission label ball; soccer ball ball; hoop american; ball; football ball; football; rugby ball; racquet 8; 8 ball; ball; billiard; eight; game ball; game golf; hole ball; golf ice; skate fish; pole running; sash; shirt ski; snow ski; snow ski; snow; snowboard surfing horse; jockey; racehorse; racing swim ball lifter; weight bicycle; bike; cyclist bicycle; bicyclist; bike; cyclist; mountain car; racing racing medal prize ball; bat; game ball; game ball; field; game; hockey; stick game; hockey; ice; puck; stick ball; bat; game; paddle; table tennis birdie; game; racquet; shuttlecock bull; bullseye; dart; eye; game; hit; target controller; game game; video game dice; die; game card; game; spade; suit card; game; heart; hearts; suit card; diamond; diamonds; game; suit card; club; clubs; game; suit card; game; playing game; mahjong; red card; flower; game; japanese; playing mute; quiet; silent; speaker; volume volume low; speaker; volume; wave 3; high; loud; speaker; three; volume loud; public address cheering horn; post; postal bell bell; forbidden; mute; no; not; prohibited; quiet; silent music; score music; note music; note; notes mic; microphone; music; studio level; music; slider control; knobs; music karaoke; mic earbud instrument; music; sax instrument; music instrument; keyboard; music; piano instrument; music instrument; music video cell; mobile; phone; telephone arrow; call; cell; mobile; phone; receive; telephone phone phone; receiver; telephone pager fax battery electric; electricity; plug computer; pc; personal computer; desktop computer computer 3; button; computer; mouse; three computer computer; disk; minidisk; optical computer; disk; floppy dvd; blu-ray; cd; computer; disk; optical blu-ray; cd; computer; disk; optical camera; cinema; movie clapper; movie cinema; film; movie; projector; video tv; video video camera; flash; video camera; video tape; vhs; video glass; magnifying; search; tool glass; magnifying; search; tool tool tool antenna; dish; satellite light bulb; comic; electric; idea; light electric; light; tool; torch bar; japanese; lantern; light; red book; cover; decorated; notebook book; closed book; open book; green blue; book book; orange book notebook notebook curl; document; page paper document; page news; paper news; newspaper; paper; rolled bookmark; mark; marker; tabs mark bag; dollar; money; moneybag bank; banknote; bill; currency; money; note; yen bank; banknote; bill; currency; dollar; money; note bank; banknote; bill; currency; euro; money; note bank; banknote; bill; currency; money; note; pound bank; banknote; bill; dollar; fly; money; note; wings bank; card; credit; money bank; chart; currency; graph; growth; market; money; rise; trend; upward; yen e-mail; email email; letter; mail e-mail; email; envelope; incoming; letter; mail; receive arrow; down; e-mail; email; envelope; letter; mail; outgoing; sent box; letter; mail; outbox; sent; tray box; inbox; letter; mail; receive; tray box; parcel closed; mail; mailbox; postbox closed; lowered; mail; mailbox; postbox mail; mailbox; open; postbox lowered; mail; mailbox; open; postbox mail; mailbox ballot; box pencil nib; pen fountain; pen ballpoint painting crayon pencil briefcase file; folder file; folder; open card; dividers; index date calendar note; pad; spiral calendar; pad; spiral card; index; rolodex chart; graph; growth; trend; upward chart; down; graph; trend bar; chart; graph clipboard pin pin; pushpin paperclip link; paperclip ruler; straight edge ruler; set; triangle tool box; card; file cabinet; file wastebasket closed lock; open; unlock ink; lock; nib; pen; privacy closed; key; lock; secure lock; password clue; key; lock; old tool mining; tool hammer; pick; tool hammer; tool; wrench tool bolt; nut; tool tool tool; vice chemistry; tool balance; justice; libra; scales; tool; weight; zodiac link chain doctor; medicine; needle; shot; sick; tool doctor; medicine; sick knife; weapon cooking; hocho; knife; tool; weapon crossed; swords; weapon gun; handgun; revolver; tool; weapon weapon archer; arrow; bow; sagittarius; tool; weapon; zodiac checkered; chequered; racing waving waving post smoking death death; funeral; urn face; moyai; statue drum; oil ball; crystal; fairy tale; fantasy; fortune; tool atm; automated; bank; teller litter; litterbox drink; potable; water access lavatory; man; restroom; wc lavatory; restroom; wc; woman lavatory; wc baby; changing closet; lavatory; restroom; water; wc control; passport customs baggage; claim baggage; locker; luggage warning child; crossing; pedestrian; traffic entry; forbidden; no; not; prohibited; traffic entry; forbidden; no; not bicycle; bike; forbidden; no; not; prohibited; vehicle forbidden; no; not; prohibited; smoking forbidden; litter; no; not; prohibited drink; forbidden; no; not; potable; prohibited; water forbidden; no; not; pedestrian; prohibited radioactive biohazard arrow; cardinal; direction; north arrow; direction; intercardinal; northeast arrow; cardinal; direction; east arrow; direction; intercardinal; southeast arrow; cardinal; direction; down; south arrow; direction; intercardinal; southwest arrow; cardinal; direction; west arrow; direction; intercardinal; northwest arrow arrow arrow arrow arrow arrow; down arrow; clockwise; reload anticlockwise; arrow; counterclockwise; withershins arrow; back arrow; end arrow; mark; on arrow; soon arrow; top; up religion; worship atheist; atom hindu; religion david; jew; jewish; religion; star buddhist; dharma; religion; wheel religion; tao; taoist; yang; yin christian; cross; religion christian; cross; religion islam; muslim; religion peace candelabrum; candlestick; religion fortune; star recycle badge; name fleur-de-lis beginner; chevron; green; japanese; leaf; tool; yellow anchor; emblem; ship; tool; trident circle; o check; mark ballot; box; check check; mark cancel; multiplication; multiply; x cancel; mark; multiplication; multiply; x mark; square math; plus math; minus division; math curl; loop curl; double; loop mark; part asterisk star sparkle bank; currency; exchange; money currency; dollar; money bangbang; exclamation; mark; punctuation exclamation; interrobang; mark; punctuation; question mark; punctuation; question mark; outlined; punctuation; question exclamation; mark; outlined; punctuation exclamation; mark; punctuation dash; punctuation; wavy copyright registered mark; tm; trademark ram; zodiac bull; ox; zodiac twins; zodiac crab; zodiac lion; zodiac maiden; virgin; zodiac balance; justice; scales; zodiac scorpio; scorpion; zodiac archer; zodiac goat; zodiac bearer; water; zodiac fish; zodiac bearer; serpent; snake; zodiac arrow; crossed arrow; clockwise; repeat arrow; clockwise; once arrow; play; right; triangle arrow; double; fast; forward arrow; next scene; next track; triangle arrow; pause; play; right; triangle arrow; left; reverse; triangle arrow; double; rewind arrow; previous scene; previous track; triangle arrow; button; red arrow; double arrow; button; down; red arrow; double; down bar; double; pause; vertical square; stop circle; record eject camera; film; movie brightness; dim; low bright; brightness antenna; bar; cell; mobile; phone; signal; telephone cell; forbidden; mobile; no; not; phone; prohibited; telephone cell; mobile; mode; phone; telephone; vibration cell; mobile; off; phone; telephone hash; keycap; pound asterisk; keycap; star 0; keycap; zero 1; keycap; one 2; keycap; two 3; keycap; three 4; four; keycap 5; five; keycap 6; keycap; six 7; keycap; seven 8; eight; keycap 9; keycap; nine 10; keycap; ten 100; full; hundred; score 18; age restriction; eighteen; forbidden; no; not; prohibited; underage input; latin; letters; uppercase abcd; input; latin; letters; lowercase 1234; input; numbers input abc; alphabet; input; latin; letters a; blood ab; blood b; blood cl cool free i; information id; identity circle; m new ng blood; o ok parking help; sos mark; up versus; vs japanese japanese japanese japanese japanese japanese japanese japanese japanese chinese chinese chinese chinese chinese; congratulation; congratulations; ideograph chinese; ideograph; secret chinese chinese geometric; square geometric; square geometric; square geometric; square geometric; square geometric; square geometric; square geometric; square diamond; geometric; orange blue; diamond; geometric diamond; geometric; orange blue; diamond; geometric geometric; red down; geometric; red comic; diamond; geometric; inside button; geometric; radio button; geometric; square button; geometric; outlined; square circle; geometric circle; geometric circle; geometric; red blue; circle; geometric ibus-1.5.22/data/annotations/en_ascii.xml0000644000000000000000000000564613623750431015213 00000000000000 :') | :'-) :D | :-D | =D ':) | ':-) | '=) | ':D | ':-D | '=D >:) | >;) | >:-) | >=) ;) | ;-) | *-) | *) | ;-] | ;] | ;D | ;^) B-) | B) | 8) | 8-) | B-D | 8-D :* | :-* | =* | :^* :) | :-) | =] | =) | :] -_- | -__- | -___- :-X | :X | :-# | :# | =X | =x | :x | :-x | =# >.< :-O | :O | :-o | :o | O_O | >:O :P | :-P | =P | :-p | :p | =p | :-Þ | :Þ | :þ | :-þ | :-b | :b | d: >:P | X-P | x-p ':( | ':-( | '=( >:\ | >:/ | :-/ | :-. | :/ | :\ | =/ | =\ | :L | =L >:[ | :-( | :( | :-[ | :[ | =( :'( | :'-( | ;( | ;-( D: :$ | =$ #-) | #) | %-) | %) | X) | X-) >:( | >:-( | :@ O:-) | 0:-3 | 0:3 | 0:-) | 0:) | 0;^) | O:) | O;-) | O=) | 0;-) | O:-3 | O:3 *\0/* | \0/ | *\O/* | \O/ <3 </3 ibus-1.5.22/data/icons/0000755000000000000000000000000013623751575011554 500000000000000ibus-1.5.22/data/icons/Makefile.am0000644000000000000000000000400613623750431013516 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.22/data/icons/Makefile.in0000644000000000000000000006767013623751264013554 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/data/icons/scalable/0000755000000000000000000000000013623751575013322 500000000000000ibus-1.5.22/data/icons/scalable/ibus-setup.svg0000644000000000000000000005345013623750431016060 00000000000000 image/svg+xml System Applications Jakub Steiner http://jimmac.musichall.cz/ system applications group category admin root ibus-1.5.22/data/icons/scalable/ibus.svg0000644000000000000000000003746413623750431014731 00000000000000 image/svg+xml Character map August 2007 Andreas Nilsson Andreas Nilsson ibus-1.5.22/data/icons/scalable/ibus-engine.svg0000644000000000000000000005345013623750431016165 00000000000000 image/svg+xml System Applications Jakub Steiner http://jimmac.musichall.cz/ system applications group category admin root ibus-1.5.22/data/icons/scalable/ibus-keyboard.svg0000644000000000000000000027261713623750431016530 00000000000000 image/svg+xml ibus-1.5.22/data/icons/48/0000755000000000000000000000000013623751575012007 500000000000000ibus-1.5.22/data/icons/48/ibus-keyboard.png0000644000000000000000000000622413623750431015167 00000000000000PNG  IHDR00WsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDAThř{p\y>)zV/#QSl 4O I:}iƅ44 CR /c3+HdYڕVZi}OXY12`Kܻs )%ε mf53puUʛBq/{8v>\!'Mͅ} s{t-p%ȩ{;;Fyz^p9rc/?L`o])bnof'v#\l)\0޾k'N>٧yB~Y9 }Q|w혞޾=;e?_[͝O"D?p"s=oP(?6/ٱN.("zWFj7*Z#,K) )}C{Ữ98阆iE,Bvš4OʹiIepM߬YahMcw EaٱnhA'BsP齏U*]Ӄ@BDi?.gQ-S<9/,!'ۧXsş|(NkLC٬ _"m{ƌtv{'4U/ !$<Oo<6UU~ٲe-Dyh:c l`0eB!L$ ceDt t=hFgdxBKySiy 2;]7o=kkzۗ: UUjBP[$uuҧhhh\q]f\y_؄iψD'SLqj||!ڵr UUUhF$! Tq㍟\}OY?|uc ASc3rD"IT$FB!G{['B%):) 'iokgi$a6Ŷ-ǡ&V/}F|u]=eK7 _S[&N(QX*H1lDsɖ6'ik 35A{&3i:N2S#(uphD4zhUmQ]u+0|%KTEQ|+(@ѡTW0-eE4M'_ȡi:4M';3LMg4LfMәLP_HfjFB**R M^ɆuWP[SK*BS5"33Y4Mq¡ cl|-m5MKq߹}z[#R{Cw)ajbd`x PHDX*=d5SLLϪWU+ג>9]-58-tu[#ln)9lG~NfƤ1Ҏ%lY^㸌{#C㊕ KQՏvў= 47|` Px&+o<&/#K>w |1뽁*U(Ϯ$W%4O>Kv )RI&RIw~dk@:c/a.[s +~{8R:~DsfNLlq=Ȑxg_GO:-U2}7 !b@hn#Z30sW6.Mȹ_qn` E[>B 2nk3>-꿼H ʖ5[;?-]A >&sdP0B#z 54W`b MkcCk0 b^g[!T˛Aex?׬ڍF}84+q[k& GS0~kU]?ƿT n~B** ا^m3X$Cͤqݺ;v$nx N\WիM."%NWj >)%BB]q|zLk+-Լ2-9Au|p4Gsw28A= t4IU\ף)vϳ D_Q_wm@lXl@D:|plZ'1>}8ܸwlvJ`&O3^M0У4~SA]MnfCxK؎;gixֺ_`!l%Cbs٪̋| ϫXߓ6D&'#ˏ^0?|>W9td+K!s6~4mE}Iɬd=j&3o_L! N!5JL>2y/e芞Nw'bt<ݵO28JywPTUH /sA`:;r6.j ˷ة)8X$sAJ2 &6}k͊d;75j\`;~*;~?}M  N?KKw, LWR2TU4H91??twTR#憘2g+}Q?IENDB`ibus-1.5.22/data/icons/22/0000755000000000000000000000000013623751575011777 500000000000000ibus-1.5.22/data/icons/22/ibus-keyboard.png0000644000000000000000000000202613623750431015153 00000000000000PNG  IHDRĴl;tEXtSoftwareAdobe ImageReadyqe<IDATxUkh[e~%mלљ&=[f[k/VZإ:? MdVe 2D菉[Ŷ6 Ku.M4m6s;Yl?Y/9yQ5^b:HR@zQ[nRT" \ *"ǡCwOr5֏A%ɒH:s'BYUQ)fp1DJi4wͩ[V|>y{PsƟ9IuH=q櫀^I@SVJE,/KC2ݮ"Ib?|9q'ʖ E*oaZp"\QT̻el-lv^.aw txv b@YA{k7==y`g'4Xq?T-+hA"F,Qm4x|X-aw_v5"e"(F8Nil.zDljj<՘OcV[0þfƱ݈s!8MʢK "؅C#<܆_9^RgȲ^ll*R c泐rw5AzL1ṒiɏZjꟑHff@)DP l;vdрG;Z;Pol?].h~p^S(""P5E|x^DUv]u~uw0qc՚}ewxYazKmjȊ {i24eNI8") )q!Y4k*Tׁ'AEHR4~g/y={X8C˃ILGXmN#\^h,L/U+a, !J#F?}~8(9p#`ɩʿtǎWzu7=T̲8~ e<sidЮ:یa0:1Ϟ+Ԙ7Fbx}G]: ѹqS 2O])^7>j2n_Gq~^?YcA<,lѝݔڈ :\@`XDPom3UKHgSUux9 xWb4\aM  %=8΢\+4 fz)P [rfX13=ej*tMϯoQSU|XKt냪jyUWG&YزqYÍ"jFn=9ӑMu.S:wedžRq}CYw;f>/ [60kA"S qعUXP#qRͭqÃ-]-24PFEެs!B?˽KUuIqkP,7ͨa$s":u]uAIƱ\G|/n$R4v5t?Q@J۠iRv:?=3-y GSKA*Ҳ Ȫ@JϼN\;^:>\߻xj *mƵ :4R4:,BCߑh< g-{Hdn09͝jv(9VWUo*FK8>#SźCWl"0'/RIENDB`ibus-1.5.22/data/icons/24/0000755000000000000000000000000013623751575012001 500000000000000ibus-1.5.22/data/icons/24/ibus-keyboard.png0000644000000000000000000000204513623750431015156 00000000000000PNG  IHDRw=tEXtSoftwareAdobe ImageReadyqe<IDATxVkLU~K[h"Zʥ- ecnL@㌗mcB1ut?$ ctѨnjm  Q躖]<߱M޼_NyyyEQp+ŭS?X6+Xg WQd#-f,fjc'֪˙,1"K.ECTJ3J$0}W|k12W|yPdyr+D$\VhW7zzlعdWkPN۞?f+u^'/ MɐA7[2Nb:yP'ofҩ(|#Ϲx?k YOڃû]M!Y׎TϮ.-|q,***7fᨦYv'Vkj}md̼;l zQQZ5[E݅+3ñj[A?l`1UڂAdYaXm4̚.g%8eUE޻1>5u1<6-0riUu̎~:ɀ`i#nJi[~h/>za?~Ŕ?3SpTpT K,2C0-t Ik=?N$ߠy'~w:7mgF QlRO&i${#bp^f!m$֦L#^}foN'IDebx#ZP,Bq  Ȇ]u]{VDbr`<Ҡ!,%9Ge {@K)8~O'fڌFkHJ4z_)omH2F,ŗ!f qn Js̍mǎ4A<g !0?¦>} dI:Hxҩ3'}뽛_ş r7P8IENDB`ibus-1.5.22/data/icons/16/0000755000000000000000000000000013623751575012002 500000000000000ibus-1.5.22/data/icons/16/ibus-keyboard.png0000644000000000000000000000117313623750431015160 00000000000000PNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڌKhQ{gRZѐFEB7.)Hō_ bqVDAYB]H+WԒgѶC;Igvac.|{9-D&INbAt*1I\~p1%@ctwE1r&/(x[TiU%+'],vc>q>˘y1v\[S˫>|KҖ&>~Pz<]$Y6iH3FX-;^~cpjc3tkog3Db^:N^XiwPr^Bu]%.AG Ukҥ$mPS2aܺ28s >:9|3?)d^]} 3l sy}t׊ 16nw6Ji*X0_yJӏ%Uĭ^D$f uG<كBEfT^Aqi'yQ*@l^"fGh~nO\yn&/A|NNIENDB`ibus-1.5.22/data/keymaps/0000755000000000000000000000000013623751575012112 500000000000000ibus-1.5.22/data/keymaps/us0000644000000000000000000000160713623750431012376 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.22/data/keymaps/Makefile.am0000644000000000000000000000262513623750431014061 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.22/data/keymaps/Makefile.in0000644000000000000000000004752513623751264014107 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/data/keymaps/common0000644000000000000000000000416213623750431013236 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.22/data/keymaps/modifiers0000644000000000000000000000027613623750431013731 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.22/data/keymaps/in0000644000000000000000000000005213623750431012346 00000000000000include us keycode 100 = ISO_Level3_Shift ibus-1.5.22/data/keymaps/jp0000644000000000000000000000226013623750431012354 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.22/data/keymaps/kr0000644000000000000000000000007313623750431012357 00000000000000include us keycode 122 = Hangul keycode 123 = Hangul_Hanja ibus-1.5.22/data/dconf/0000755000000000000000000000000013623751576011533 500000000000000ibus-1.5.22/data/dconf/profile/0000755000000000000000000000000013623751576013173 500000000000000ibus-1.5.22/data/dconf/profile/ibus0000644000000000000000000000003413623750431013762 00000000000000user-db:user system-db:ibus ibus-1.5.22/data/dconf/Makefile.am0000644000000000000000000000417613623750431013504 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2011 Daiki Ueno # Copyright (c) 2007-2018 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 = org.freedesktop.ibus.gschema.xml gsettingsconvertdir = $(datadir)/GConf/gsettings dist_gsettingsconvert_DATA = ibus.convert @GSETTINGS_RULES@ dconfprofiledir = $(sysconfdir)/dconf/profile dconfprofile_DATA = profile/ibus dconfdbdir = $(sysconfdir)/dconf/db/ibus.d dconfdb_DATA = 00-upstream-settings 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; } man_5_in_files = 00-upstream-settings.5.in ibus.5.in man_5_files = $(man_5_in_files:.5.in=.5) man_5_DATA =$(man_5_files:.5=.5.gz) man_5dir = $(mandir)/man5 %.5: %.5.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ mv $@.tmp $@ %.5.gz: %.5 $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ install-data-hook: if test -z "$(DESTDIR)"; then \ dconf update; \ fi EXTRA_DIST = \ $(gsettings_SCHEMAS) \ $(man_5_in_files) \ make-dconf-override-db.sh \ profile/ibus \ 00-upstream-settings \ $(NULL) CLEANFILES = \ $(man_5_DATA) \ $(man_5_files) \ $(NULL) MAINTAINERCLEANFILES = \ 00-upstream-settings \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.22/data/dconf/Makefile.in0000644000000000000000000005754213623751264013527 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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)" "$(DESTDIR)$(man_5dir)" DATA = $(dconfdb_DATA) $(dconfprofile_DATA) \ $(dist_gsettingsconvert_DATA) $(man_5_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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ gsettings_SCHEMAS = org.freedesktop.ibus.gschema.xml gsettingsconvertdir = $(datadir)/GConf/gsettings dist_gsettingsconvert_DATA = ibus.convert dconfprofiledir = $(sysconfdir)/dconf/profile dconfprofile_DATA = profile/ibus dconfdbdir = $(sysconfdir)/dconf/db/ibus.d dconfdb_DATA = 00-upstream-settings man_5_in_files = 00-upstream-settings.5.in ibus.5.in man_5_files = $(man_5_in_files:.5.in=.5) man_5_DATA = $(man_5_files:.5=.5.gz) man_5dir = $(mandir)/man5 EXTRA_DIST = \ $(gsettings_SCHEMAS) \ $(man_5_in_files) \ make-dconf-override-db.sh \ profile/ibus \ 00-upstream-settings \ $(NULL) CLEANFILES = \ $(man_5_DATA) \ $(man_5_files) \ $(NULL) MAINTAINERCLEANFILES = \ 00-upstream-settings \ $(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/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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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) install-man_5DATA: $(man_5_DATA) @$(NORMAL_INSTALL) @list='$(man_5_DATA)'; test -n "$(man_5dir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(man_5dir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man_5dir)" || 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_5dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man_5dir)" || exit $$?; \ done uninstall-man_5DATA: @$(NORMAL_UNINSTALL) @list='$(man_5_DATA)'; test -n "$(man_5dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(man_5dir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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)" "$(DESTDIR)$(man_5dir)"; 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 install-man_5DATA @$(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 uninstall-man_5DATA .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-man_5DATA \ 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 \ uninstall-man_5DATA .PRECIOUS: Makefile @GSETTINGS_RULES@ 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; } %.5: %.5.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ mv $@.tmp $@ %.5.gz: %.5 $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ 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.22/data/dconf/ibus.convert0000644000000000000000000000224613623750431014010 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.22/data/dconf/make-dconf-override-db.sh0000755000000000000000000000253113623750431016204 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] show=0 show-im-name=false y=-1 xkb-icon-rgba='#415099' show-icon-on-systray=true auto-hide-timeout=10000 lookup-table-orientation=1 custom-font='Sans 10' use-custom-font=false property-icon-delay-time=500 follow-input-cursor-when-always-shown=false x=-1 [desktop/ibus/panel/emoji] has-partial-match=false favorite-annotations=@as [] load-unicode-at-startup=false partial-match-length=3 favorites=@as [] hotkey=['e'] lang='en' font='Monospace 16' load-emoji-at-startup=true unicode-hotkey=['u'] partial-match-condition=0 ibus-1.5.22/data/dconf/org.freedesktop.ibus.gschema.xml0000644000000000000000000002762213623750431017643 00000000000000 [] Preload engines Preload engines during ibus starts up [] Engines order Saved engines order in input method list 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. '' 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. [ '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. true Use xmodmap Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched. false Use system keyboard layout Use system keyboard (XKB) layout true Embed Preedit Text Embed Preedit Text in Application Window true Use global input method Share the same input method among all applications false Enable input method by default Enable 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 prefixes Prefixes of DConf keys to stop name conversion [ '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 [ '<Super>space' ] Trigger shortcut keys for gtk_accelerator_parse The shortcut keys for turning input method on or off [] Enable shortcut keys The shortcut keys for turning input method on [] Disable shortcut keys The shortcut keys for turning input method off [ 'Alt+Shift_L' ] Next engine shortcut keys The shortcut keys for switching to the next input method in the list [ 'Alt+Shift_L' ] Next engine shortcut keys The shortcut keys for switching to the next input method in the list [] Prev engine shortcut keys The shortcut keys for switching to the previous input method [] Prev engine shortcut keys The shortcut keys for switching to the previous input method 0 Auto hide The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always show -1 Language panel position -1 Language panel position 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. 10000 The milliseconds to show property panel The milliseconds to show property panel after focus-in or properties are changed. 1 Orientation of lookup table Orientation of lookup table. 0 = Horizontal, 1 = Vertical true Show icon on system tray Show icon on system tray false Show input method name Show input method name on language bar '#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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha. 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. false Use custom font Use custom font name for language panel 'Sans 10' Custom font Custom font name for language panel [ '<Control><Shift>u' ] Unicode shortcut keys for gtk_accelerator_parse The shortcut keys for turning Unicode typing on or off [ '<Control><Shift>e' ] Emoji shortcut keys for gtk_accelerator_parse The shortcut keys for turning emoji typing on or off 'Monospace 16' Custom font Custom font name for emoji characters on emoji dialog 'en' Default language for emoji dictionary Choose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict [] favorite emoji list on emoji dialog You can show the favorite emojis on emoji list if this list has any characters. [] favorite emoji annotation list on emoji dialog You can assign an annotation for a favorite emoji in this list. false Whether emoji annotations can be match partially or not Whether emoji annotations can be matched with a partial string instead of the exact match or not. 3 Match emoji annotations with the specified length Match emoji annotations partially with more than the specified number of characters instead of the exact match. 0 Choose a condition to match emoji annotations partially Choose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing match true Load the emoji data at the time of startup Load the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false. false Load the Unicode data at the time of startup Load the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true. ibus-1.5.22/data/dconf/00-upstream-settings.5.in0000644000000000000000000000211013623750431016040 00000000000000.\" This file is distributed under the same license as the ibus .\" package. .\" Copyright (C) Takao Fujiwara , 2018. .\" .TH 00\-UPSTREAM\-SETTINGS "5" "August 2018" "@VERSION@" "User Commands" .SH NAME .B 00\-upstream\-settings \- dconf configuration file .SH SYNOPSIS .B /etc/dconf/db/ibus.d/00\-upstream\-settings .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 00\-upstream\-settings is a text configuration file of dconf and can be converted to /etc/dconf/db/ibus by .B dconf update command with a write privilege in /etc/dconf/db. /etc/dconf/db/ibus is a database file of dconf and saves the IBus default settings. The saved keys and values can be readed by dconf command. .PP .RS 4 .nf env DCONF_PROFILE=ibus dconf list /desktop/ibus/ .RE .SH BUGS If you find a bug, please report it at https://github.com/ibus/ibus/issues .SH "SEE ALSO" .BR dconf (1) .BR ibus (5) ibus-1.5.22/data/dconf/ibus.5.in0000644000000000000000000000177313623750431013105 00000000000000.\" This file is distributed under the same license as the ibus .\" package. .\" Copyright (C) Takao Fujiwara , 2018. .\" .TH IBUS "5" "August 2018" "@VERSION@" "User Commands" .SH NAME .B IBUS \- dconf database file for IBus .SH SYNOPSIS .B /etc/dconf/db/ibus .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 /etc/dconf/db/ibus is a database file dconf and saves the IBus default settings. It can be generated from /etc/dconf/db/ibus.d/00\-upstream\-settings by .B dconf update command with a write privilege in /etc/dconf/db. The saved keys and values can be readed by dconf command. .PP .RS 4 .nf env DCONF_PROFILE=ibus dconf list /desktop/ibus/ .RE .SH BUGS If you find a bug, please report it at https://github.com/ibus/ibus/issues .SH "SEE ALSO" .BR dconf (1) .BR 00\-upstream\-settings (5) ibus-1.5.22/INSTALL0000644000000000000000000003661413623751263010505 00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2016 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.22/xinput-ibus0000644000000000000000000000126513623750431011654 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.22/README0000644000000000000000000000101613623750431010314 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.22/bindings/0000755000000000000000000000000013623751574011324 500000000000000ibus-1.5.22/bindings/Makefile.am0000644000000000000000000000205013623750431013264 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.22/bindings/Makefile.in0000644000000000000000000005701713623751263013316 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 distdir-am 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ @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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/bindings/vala/0000755000000000000000000000000013623751573012246 500000000000000ibus-1.5.22/bindings/vala/candidatearea.c0000644000000000000000000015776713623751565015127 00000000000000/* candidatearea.c generated by valac 0.47.91, 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-2019 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 TYPE_THEMED_RGBA (themed_rgba_get_type ()) #define THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THEMED_RGBA, ThemedRGBA)) #define THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THEMED_RGBA, ThemedRGBAClass)) #define IS_THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THEMED_RGBA)) #define IS_THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THEMED_RGBA)) #define THEMED_RGBA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THEMED_RGBA, ThemedRGBAClass)) typedef struct _ThemedRGBA ThemedRGBA; typedef struct _ThemedRGBAClass ThemedRGBAClass; enum { CANDIDATE_AREA_0_PROPERTY, CANDIDATE_AREA_NUM_PROPERTIES }; static GParamSpec* candidate_area_properties[CANDIDATE_AREA_NUM_PROPERTIES]; #define _themed_rgba_unref0(var) ((var == NULL) ? NULL : (var = (themed_rgba_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))) #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (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; enum { CANDIDATE_AREA_CANDIDATE_CLICKED_SIGNAL, CANDIDATE_AREA_PAGE_UP_SIGNAL, CANDIDATE_AREA_PAGE_DOWN_SIGNAL, CANDIDATE_AREA_CURSOR_UP_SIGNAL, CANDIDATE_AREA_CURSOR_DOWN_SIGNAL, CANDIDATE_AREA_NUM_SIGNALS }; static guint candidate_area_signals[CANDIDATE_AREA_NUM_SIGNALS] = {0}; #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; ThemedRGBA* m_rgba; }; 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 gint CandidateArea_private_offset; static gpointer candidate_area_parent_class = NULL; GType candidate_area_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (CandidateArea, g_object_unref) gpointer themed_rgba_ref (gpointer instance); void themed_rgba_unref (gpointer instance); GParamSpec* param_spec_themed_rgba (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_themed_rgba (GValue* value, gpointer v_object); void value_take_themed_rgba (GValue* value, gpointer v_object); gpointer value_get_themed_rgba (const GValue* value); GType themed_rgba_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (ThemedRGBA, themed_rgba_unref) 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); ThemedRGBA* themed_rgba_new (GtkWidget* widget); ThemedRGBA* themed_rgba_construct (GType object_type, GtkWidget* widget); gboolean candidate_area_candidate_scrolled (CandidateArea* self, GdkEventScroll* event); gboolean candidate_area_get_vertical (CandidateArea* self); static void candidate_area_recreate_ui (CandidateArea* self); void candidate_area_set_candidates (CandidateArea* self, IBusText** candidates, gint candidates_length1, guint focus_candidate, gboolean show_cursor); void candidate_area_set_labels (CandidateArea* self, IBusText** labels, gint labels_length1); static IBusText** _vala_array_dup1 (IBusText** self, gint length); PangoAttrList* get_pango_attr_list_from_ibus_text (IBusText* text); GdkRGBA* themed_rgba_get_selected_fg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_bg (ThemedRGBA* self); static void __lambda5_ (CandidateArea* self, GtkButton* b); static void ___lambda5__gtk_button_clicked (GtkButton* _sender, gpointer self); static void __lambda6_ (CandidateArea* self, GtkButton* b); static void ___lambda6__gtk_button_clicked (GtkButton* _sender, gpointer self); static gboolean _candidate_area_candidate_scrolled_gtk_widget_scroll_event (GtkWidget* _sender, GdkEventScroll* event, gpointer self); VSeparator* vseparator_new (void); VSeparator* vseparator_construct (GType object_type); GType vseparator_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (VSeparator, g_object_unref) HSeparator* hseparator_new (void); HSeparator* hseparator_construct (GType object_type); GType hseparator_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (HSeparator, g_object_unref) 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, gint* length, gint* size, GtkLabel* value); static void _vala_array_add2 (GtkLabel** * array, gint* length, gint* size, GtkLabel* value); static gboolean ______lambda7_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e); static gboolean _______lambda7__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void _vala_array_add3 (GtkWidget** * array, gint* length, gint* size, GtkWidget* value); static gboolean ______lambda8_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e); static gboolean _______lambda8__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void _vala_array_add4 (GtkWidget** * array, gint* length, gint* size, GtkWidget* value); static Block3Data* block3_data_ref (Block3Data* _data3_); static void block3_data_unref (void * _userdata_); static void _vala_array_add5 (GtkLabel** * array, gint* length, gint* size, GtkLabel* value); static void _vala_array_add6 (GtkLabel** * array, gint* length, gint* size, GtkLabel* value); static gboolean ______lambda9_ (Block3Data* _data3_, GtkWidget* w, GdkEventButton* e); static gboolean _______lambda9__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void _vala_array_add7 (GtkWidget** * array, gint* length, gint* 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 GType candidate_area_get_type_once (void); 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"}; static inline gpointer candidate_area_get_instance_private (CandidateArea* self) { return G_STRUCT_MEMBER_P (self, CandidateArea_private_offset); } CandidateArea* candidate_area_construct (GType object_type, gboolean vertical) { CandidateArea * self = NULL; ThemedRGBA* _tmp0_; self = (CandidateArea*) g_object_new (object_type, NULL); candidate_area_set_vertical (self, vertical, TRUE); _tmp0_ = themed_rgba_new ((GtkWidget*) self); _themed_rgba_unref0 (self->priv->m_rgba); self->priv->m_rgba = _tmp0_; return self; } CandidateArea* candidate_area_new (gboolean vertical) { return candidate_area_construct (TYPE_CANDIDATE_AREA, vertical); } gboolean candidate_area_candidate_scrolled (CandidateArea* self, GdkEventScroll* event) { GdkScrollDirection _tmp0_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (event != NULL, FALSE); _tmp0_ = event->direction; switch (_tmp0_) { case GDK_SCROLL_UP: { g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_CURSOR_UP_SIGNAL], 0); break; } case GDK_SCROLL_DOWN: { g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_CURSOR_DOWN_SIGNAL], 0); break; } default: break; } result = TRUE; return result; } gboolean candidate_area_get_vertical (CandidateArea* self) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); result = self->priv->m_vertical; return result; } void candidate_area_set_vertical (CandidateArea* self, gboolean vertical, gboolean force) { gboolean _tmp0_ = FALSE; GtkOrientation _tmp1_ = 0; IBusText** _tmp2_; gint _tmp2__length1; g_return_if_fail (self != NULL); if (!force) { _tmp0_ = self->priv->m_vertical == vertical; } else { _tmp0_ = FALSE; } if (_tmp0_) { return; } self->priv->m_vertical = vertical; if (vertical) { _tmp1_ = GTK_ORIENTATION_VERTICAL; } else { _tmp1_ = GTK_ORIENTATION_HORIZONTAL; } gtk_orientable_set_orientation ((GtkOrientable*) self, _tmp1_); candidate_area_recreate_ui (self); _tmp2_ = self->priv->m_ibus_candidates; _tmp2__length1 = self->priv->m_ibus_candidates_length1; if (_tmp2__length1 > 0) { IBusText** _tmp3_; gint _tmp3__length1; IBusText** _tmp4_; gint _tmp4__length1; _tmp3_ = self->priv->m_ibus_candidates; _tmp3__length1 = self->priv->m_ibus_candidates_length1; self->priv->m_ibus_candidates = NULL; self->priv->m_ibus_candidates_length1 = 0; _tmp4_ = _tmp3_; _tmp4__length1 = _tmp3__length1; candidate_area_set_candidates (self, _tmp4_, (gint) _tmp3__length1, self->priv->m_focus_candidate, self->priv->m_show_cursor); _tmp4_ = (_vala_array_free (_tmp4_, _tmp4__length1, (GDestroyNotify) g_object_unref), NULL); gtk_widget_show_all ((GtkWidget*) self); } } void candidate_area_set_labels (CandidateArea* self, IBusText** labels, gint labels_length1) { gint i = 0; g_return_if_fail (self != NULL); { gboolean _tmp0_ = FALSE; i = 0; _tmp0_ = TRUE; while (TRUE) { GtkLabel** _tmp2_; gint _tmp2__length1; GtkLabel* _tmp3_; IBusText* _tmp4_; const gchar* _tmp5_; if (!_tmp0_) { gint _tmp1_; _tmp1_ = i; i = _tmp1_ + 1; } _tmp0_ = FALSE; if (!(i < MIN (16, labels_length1))) { break; } _tmp2_ = self->priv->m_labels; _tmp2__length1 = self->priv->m_labels_length1; _tmp3_ = _tmp2_[i]; _tmp4_ = labels[i]; _tmp5_ = ibus_text_get_text (_tmp4_); gtk_label_set_text (_tmp3_, _tmp5_); } } { gboolean _tmp6_ = FALSE; _tmp6_ = TRUE; while (TRUE) { GtkLabel** _tmp8_; gint _tmp8__length1; GtkLabel* _tmp9_; const gchar* _tmp10_; if (!_tmp6_) { gint _tmp7_; _tmp7_ = i; i = _tmp7_ + 1; } _tmp6_ = FALSE; if (!(i < 16)) { break; } _tmp8_ = self->priv->m_labels; _tmp8__length1 = self->priv->m_labels_length1; _tmp9_ = _tmp8_[i]; _tmp10_ = CANDIDATE_AREA_LABELS[i]; gtk_label_set_text (_tmp9_, _tmp10_); } } } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static IBusText** _vala_array_dup1 (IBusText** self, gint length) { IBusText** result; gint i; result = g_new0 (IBusText*, length + 1); for (i = 0; i < length; i++) { IBusText* _tmp0_; _tmp0_ = _g_object_ref0 (self[i]); result[i] = _tmp0_; } return result; } void candidate_area_set_candidates (CandidateArea* self, IBusText** candidates, gint candidates_length1, guint focus_candidate, gboolean show_cursor) { IBusText** _tmp0_; gint _tmp0__length1; g_return_if_fail (self != NULL); _tmp0_ = (candidates != NULL) ? _vala_array_dup1 (candidates, candidates_length1) : ((gpointer) candidates); _tmp0__length1 = candidates_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 = _tmp0_; self->priv->m_ibus_candidates_length1 = _tmp0__length1; self->priv->_m_ibus_candidates_size_ = self->priv->m_ibus_candidates_length1; self->priv->m_focus_candidate = focus_candidate; self->priv->m_show_cursor = show_cursor; _vala_assert (candidates_length1 <= 16, "candidates.length <= 16"); { gint i = 0; i = 0; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { GtkLabel* label = NULL; GtkLabel** _tmp3_; gint _tmp3__length1; GtkLabel* _tmp4_; GtkLabel* _tmp5_; gboolean visible = FALSE; if (!_tmp1_) { gint _tmp2_; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; if (!(i < 16)) { break; } _tmp3_ = self->priv->m_candidates; _tmp3__length1 = self->priv->m_candidates_length1; _tmp4_ = _tmp3_[i]; _tmp5_ = _g_object_ref0 (_tmp4_); label = _tmp5_; visible = FALSE; if (i < candidates_length1) { PangoAttrList* attrs = NULL; IBusText* _tmp6_; PangoAttrList* _tmp7_; gboolean _tmp8_ = FALSE; GtkLabel* _tmp45_; IBusText* _tmp46_; const gchar* _tmp47_; GtkLabel* _tmp48_; PangoAttrList* _tmp49_; _tmp6_ = candidates[i]; _tmp7_ = get_pango_attr_list_from_ibus_text (_tmp6_); attrs = _tmp7_; if (((guint) i) == focus_candidate) { _tmp8_ = show_cursor; } else { _tmp8_ = FALSE; } if (_tmp8_) { PangoAttribute* pango_attr = NULL; ThemedRGBA* _tmp9_; GdkRGBA* _tmp10_; GdkRGBA* _tmp11_; ThemedRGBA* _tmp12_; GdkRGBA* _tmp13_; GdkRGBA* _tmp14_; ThemedRGBA* _tmp15_; GdkRGBA* _tmp16_; GdkRGBA* _tmp17_; PangoAttribute* _tmp18_; PangoAttribute* _tmp19_; PangoAttribute* _tmp20_; IBusText* _tmp21_; const gchar* _tmp22_; gint _tmp23_; gint _tmp24_; PangoAttrList* _tmp25_; PangoAttribute* _tmp26_; ThemedRGBA* _tmp27_; GdkRGBA* _tmp28_; GdkRGBA* _tmp29_; ThemedRGBA* _tmp30_; GdkRGBA* _tmp31_; GdkRGBA* _tmp32_; ThemedRGBA* _tmp33_; GdkRGBA* _tmp34_; GdkRGBA* _tmp35_; PangoAttribute* _tmp36_; PangoAttribute* _tmp37_; PangoAttribute* _tmp38_; IBusText* _tmp39_; const gchar* _tmp40_; gint _tmp41_; gint _tmp42_; PangoAttrList* _tmp43_; PangoAttribute* _tmp44_; _tmp9_ = self->priv->m_rgba; _tmp10_ = themed_rgba_get_selected_fg (_tmp9_); _tmp11_ = _tmp10_; _tmp12_ = self->priv->m_rgba; _tmp13_ = themed_rgba_get_selected_fg (_tmp12_); _tmp14_ = _tmp13_; _tmp15_ = self->priv->m_rgba; _tmp16_ = themed_rgba_get_selected_fg (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = pango_attr_foreground_new ((guint16) ((*_tmp11_).red * G_MAXUINT16), (guint16) ((*_tmp14_).green * G_MAXUINT16), (guint16) ((*_tmp17_).blue * G_MAXUINT16)); pango_attr = _tmp18_; _tmp19_ = pango_attr; _tmp19_->start_index = (guint) 0; _tmp20_ = pango_attr; _tmp21_ = candidates[i]; _tmp22_ = ibus_text_get_text (_tmp21_); _tmp23_ = strlen (_tmp22_); _tmp24_ = _tmp23_; _tmp20_->end_index = (guint) _tmp24_; _tmp25_ = attrs; _tmp26_ = pango_attr; pango_attr = NULL; pango_attr_list_insert (_tmp25_, _tmp26_); _tmp27_ = self->priv->m_rgba; _tmp28_ = themed_rgba_get_selected_bg (_tmp27_); _tmp29_ = _tmp28_; _tmp30_ = self->priv->m_rgba; _tmp31_ = themed_rgba_get_selected_bg (_tmp30_); _tmp32_ = _tmp31_; _tmp33_ = self->priv->m_rgba; _tmp34_ = themed_rgba_get_selected_bg (_tmp33_); _tmp35_ = _tmp34_; _tmp36_ = pango_attr_background_new ((guint16) ((*_tmp29_).red * G_MAXUINT16), (guint16) ((*_tmp32_).green * G_MAXUINT16), (guint16) ((*_tmp35_).blue * G_MAXUINT16)); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp36_; _tmp37_ = pango_attr; _tmp37_->start_index = (guint) 0; _tmp38_ = pango_attr; _tmp39_ = candidates[i]; _tmp40_ = ibus_text_get_text (_tmp39_); _tmp41_ = strlen (_tmp40_); _tmp42_ = _tmp41_; _tmp38_->end_index = (guint) _tmp42_; _tmp43_ = attrs; _tmp44_ = pango_attr; pango_attr = NULL; pango_attr_list_insert (_tmp43_, _tmp44_); _pango_attribute_destroy0 (pango_attr); } _tmp45_ = label; _tmp46_ = candidates[i]; _tmp47_ = ibus_text_get_text (_tmp46_); gtk_label_set_text (_tmp45_, _tmp47_); _tmp48_ = label; _tmp49_ = attrs; gtk_label_set_attributes (_tmp48_, _tmp49_); visible = TRUE; _pango_attr_list_unref0 (attrs); } else { GtkLabel* _tmp50_; GtkLabel* _tmp51_; PangoAttrList* _tmp52_; PangoAttrList* _tmp53_; _tmp50_ = label; gtk_label_set_text (_tmp50_, ""); _tmp51_ = label; _tmp52_ = pango_attr_list_new (); _tmp53_ = _tmp52_; gtk_label_set_attributes (_tmp51_, _tmp53_); _pango_attr_list_unref0 (_tmp53_); } if (self->priv->m_vertical) { GtkWidget** _tmp54_; gint _tmp54__length1; GtkWidget* _tmp55_; GtkWidget** _tmp56_; gint _tmp56__length1; GtkWidget* _tmp57_; _tmp54_ = self->priv->m_widgets; _tmp54__length1 = self->priv->m_widgets_length1; _tmp55_ = _tmp54_[i * 2]; gtk_widget_set_visible (_tmp55_, visible); _tmp56_ = self->priv->m_widgets; _tmp56__length1 = self->priv->m_widgets_length1; _tmp57_ = _tmp56_[(i * 2) + 1]; gtk_widget_set_visible (_tmp57_, visible); } else { GtkWidget** _tmp58_; gint _tmp58__length1; GtkWidget* _tmp59_; _tmp58_ = self->priv->m_widgets; _tmp58__length1 = self->priv->m_widgets_length1; _tmp59_ = _tmp58_[i]; gtk_widget_set_visible (_tmp59_, visible); } _g_object_unref0 (label); } } } } static void __lambda5_ (CandidateArea* self, GtkButton* b) { g_return_if_fail (b != NULL); g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_PAGE_UP_SIGNAL], 0); } static void ___lambda5__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda5_ ((CandidateArea*) self, _sender); } static void __lambda6_ (CandidateArea* self, GtkButton* b) { g_return_if_fail (b != NULL); g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_PAGE_DOWN_SIGNAL], 0); } static void ___lambda6__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda6_ ((CandidateArea*) self, _sender); } static gboolean _candidate_area_candidate_scrolled_gtk_widget_scroll_event (GtkWidget* _sender, GdkEventScroll* event, gpointer self) { gboolean result; result = candidate_area_candidate_scrolled ((CandidateArea*) self, event); return result; } 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, gint* length, gint* 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, gint* length, gint* 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 ______lambda7_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e) { Block1Data* _data1_; CandidateArea* self; GdkModifierType _tmp0_; gboolean result = FALSE; _data1_ = _data2_->_data1_; self = _data1_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = e->state; g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_CANDIDATE_CLICKED_SIGNAL], 0, (guint) _data1_->i, e->button, (guint) _tmp0_); result = TRUE; return result; } static gboolean _______lambda7__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = ______lambda7_ (self, _sender, event); return result; } static void _vala_array_add3 (GtkWidget** * array, gint* length, gint* 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 ______lambda8_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e) { Block1Data* _data1_; CandidateArea* self; GdkModifierType _tmp0_; gboolean result = FALSE; _data1_ = _data2_->_data1_; self = _data1_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = e->state; g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_CANDIDATE_CLICKED_SIGNAL], 0, (guint) _data2_->index, e->button, (guint) _tmp0_); result = TRUE; return result; } static gboolean _______lambda8__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = ______lambda8_ (self, _sender, event); return result; } static void _vala_array_add4 (GtkWidget** * array, gint* length, gint* 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, gint* length, gint* 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, gint* length, gint* 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_ (Block3Data* _data3_, GtkWidget* w, GdkEventButton* e) { CandidateArea* self; GdkModifierType _tmp0_; gboolean result = FALSE; self = _data3_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = e->state; g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_CANDIDATE_CLICKED_SIGNAL], 0, (guint) _data3_->index, e->button, (guint) _tmp0_); 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_add7 (GtkWidget** * array, gint* length, gint* 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_; GtkButton* prev_button = NULL; GtkButton* _tmp3_; GtkButton* _tmp4_; GtkButton* _tmp5_; GtkOrientation _tmp6_; GtkOrientation _tmp7_; const gchar* _tmp8_; GtkImage* _tmp9_; GtkImage* _tmp10_; GtkButton* _tmp11_; GtkButton* next_button = NULL; GtkButton* _tmp12_; GtkButton* _tmp13_; GtkButton* _tmp14_; GtkOrientation _tmp15_; GtkOrientation _tmp16_; const gchar* _tmp17_; GtkImage* _tmp18_; GtkImage* _tmp19_; GtkButton* _tmp20_; 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_; GtkWidget* w = NULL; _tmp1_ = _g_object_ref0 ((GtkWidget*) w_it->data); w = _tmp1_; { GtkWidget* _tmp2_; _tmp2_ = w; gtk_widget_destroy (_tmp2_); _g_object_unref0 (w); } } (w_collection == NULL) ? NULL : (w_collection = (g_list_free (w_collection), NULL)); } _tmp3_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp3_); prev_button = _tmp3_; _tmp4_ = prev_button; g_signal_connect_object (_tmp4_, "clicked", (GCallback) ___lambda5__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_, (GtkIconSize) 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) ___lambda6__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_, (GtkIconSize) 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); if (self->priv->m_vertical) { GtkEventBox* container_ebox = NULL; GtkEventBox* _tmp21_; GtkEventBox* _tmp22_; GtkEventBox* _tmp23_; GtkEventBox* _tmp24_; GtkBox* vbox = NULL; GtkBox* _tmp25_; GtkEventBox* _tmp26_; GtkBox* _tmp27_; GtkBox* candidates_hbox = NULL; GtkBox* _tmp28_; GtkBox* _tmp29_; GtkBox* _tmp30_; GtkBox* labels_vbox = NULL; GtkBox* _tmp31_; GtkBox* _tmp32_; GtkBox* candidates_vbox = NULL; GtkBox* _tmp33_; GtkBox* _tmp34_; GtkBox* _tmp35_; GtkBox* _tmp36_; GtkBox* _tmp37_; VSeparator* _tmp38_; VSeparator* _tmp39_; GtkBox* _tmp40_; GtkBox* _tmp41_; GtkBox* _tmp42_; HSeparator* _tmp43_; HSeparator* _tmp44_; GtkBox* buttons_hbox = NULL; GtkBox* _tmp45_; GtkLabel* state_label = NULL; GtkLabel* _tmp46_; GtkLabel* _tmp47_; GtkBox* _tmp48_; GtkLabel* _tmp49_; GtkBox* _tmp50_; GtkButton* _tmp51_; GtkBox* _tmp52_; GtkButton* _tmp53_; GtkBox* _tmp54_; GtkBox* _tmp55_; GtkLabel** _tmp56_; GtkLabel** _tmp57_; GtkWidget** _tmp58_; _tmp21_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp21_); container_ebox = _tmp21_; _tmp22_ = container_ebox; gtk_widget_add_events ((GtkWidget*) _tmp22_, (gint) GDK_SCROLL_MASK); _tmp23_ = container_ebox; g_signal_connect_object ((GtkWidget*) _tmp23_, "scroll-event", (GCallback) _candidate_area_candidate_scrolled_gtk_widget_scroll_event, self, 0); _tmp24_ = container_ebox; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp24_); _tmp25_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp25_); vbox = _tmp25_; _tmp26_ = container_ebox; _tmp27_ = vbox; gtk_container_add ((GtkContainer*) _tmp26_, (GtkWidget*) _tmp27_); _tmp28_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp28_); candidates_hbox = _tmp28_; _tmp29_ = vbox; _tmp30_ = candidates_hbox; gtk_box_pack_start (_tmp29_, (GtkWidget*) _tmp30_, FALSE, FALSE, (guint) 0); _tmp31_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp31_); labels_vbox = _tmp31_; _tmp32_ = labels_vbox; gtk_box_set_homogeneous (_tmp32_, TRUE); _tmp33_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp33_); candidates_vbox = _tmp33_; _tmp34_ = candidates_vbox; gtk_box_set_homogeneous (_tmp34_, TRUE); _tmp35_ = candidates_hbox; _tmp36_ = labels_vbox; gtk_box_pack_start (_tmp35_, (GtkWidget*) _tmp36_, FALSE, FALSE, (guint) 4); _tmp37_ = candidates_hbox; _tmp38_ = vseparator_new (); g_object_ref_sink (_tmp38_); _tmp39_ = _tmp38_; gtk_box_pack_start (_tmp37_, (GtkWidget*) _tmp39_, FALSE, FALSE, (guint) 0); _g_object_unref0 (_tmp39_); _tmp40_ = candidates_hbox; _tmp41_ = candidates_vbox; gtk_box_pack_start (_tmp40_, (GtkWidget*) _tmp41_, TRUE, TRUE, (guint) 4); _tmp42_ = vbox; _tmp43_ = hseparator_new (); g_object_ref_sink (_tmp43_); _tmp44_ = _tmp43_; gtk_box_pack_start (_tmp42_, (GtkWidget*) _tmp44_, FALSE, FALSE, (guint) 0); _g_object_unref0 (_tmp44_); _tmp45_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp45_); buttons_hbox = _tmp45_; _tmp46_ = (GtkLabel*) gtk_label_new (NULL); g_object_ref_sink (_tmp46_); state_label = _tmp46_; _tmp47_ = state_label; gtk_widget_set_size_request ((GtkWidget*) _tmp47_, 20, -1); _tmp48_ = buttons_hbox; _tmp49_ = state_label; gtk_box_pack_start (_tmp48_, (GtkWidget*) _tmp49_, TRUE, TRUE, (guint) 0); _tmp50_ = buttons_hbox; _tmp51_ = prev_button; gtk_box_pack_start (_tmp50_, (GtkWidget*) _tmp51_, FALSE, FALSE, (guint) 0); _tmp52_ = buttons_hbox; _tmp53_ = next_button; gtk_box_pack_start (_tmp52_, (GtkWidget*) _tmp53_, FALSE, FALSE, (guint) 0); _tmp54_ = vbox; _tmp55_ = buttons_hbox; gtk_box_pack_start (_tmp54_, (GtkWidget*) _tmp55_, FALSE, FALSE, (guint) 0); _tmp56_ = 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 = _tmp56_; self->priv->m_labels_length1 = 0; self->priv->_m_labels_size_ = self->priv->m_labels_length1; _tmp57_ = 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 = _tmp57_; self->priv->m_candidates_length1 = 0; self->priv->_m_candidates_size_ = self->priv->m_candidates_length1; _tmp58_ = 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 = _tmp58_; 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 _tmp59_ = FALSE; _tmp59_ = TRUE; while (TRUE) { Block2Data* _data2_; GtkLabel* label = NULL; const gchar* _tmp61_; GtkLabel* _tmp62_; GtkLabel* _tmp63_; GtkLabel* _tmp64_; GtkLabel* _tmp65_; GtkLabel** _tmp66_; gint _tmp66__length1; GtkLabel* _tmp67_; GtkLabel* _tmp68_; GtkLabel* candidate = NULL; GtkLabel* _tmp69_; GtkLabel* _tmp70_; GtkLabel* _tmp71_; GtkLabel* _tmp72_; GtkLabel** _tmp73_; gint _tmp73__length1; GtkLabel* _tmp74_; GtkLabel* _tmp75_; GtkLabel* _tmp76_; GtkLabel* _tmp77_; GtkLabel* _tmp78_; GtkLabel* _tmp79_; GtkEventBox* label_ebox = NULL; GtkEventBox* _tmp80_; GtkEventBox* _tmp81_; GtkEventBox* _tmp82_; GtkEventBox* _tmp83_; GtkLabel* _tmp84_; GtkBox* _tmp85_; GtkEventBox* _tmp86_; GtkWidget** _tmp87_; gint _tmp87__length1; GtkEventBox* _tmp88_; GtkWidget* _tmp89_; GtkEventBox* candidate_ebox = NULL; GtkEventBox* _tmp90_; GtkEventBox* _tmp91_; GtkEventBox* _tmp92_; GtkEventBox* _tmp93_; GtkLabel* _tmp94_; GtkBox* _tmp95_; GtkEventBox* _tmp96_; GtkWidget** _tmp97_; gint _tmp97__length1; GtkEventBox* _tmp98_; GtkWidget* _tmp99_; _data2_ = g_slice_new0 (Block2Data); _data2_->_ref_count_ = 1; _data2_->_data1_ = block1_data_ref (_data1_); if (!_tmp59_) { gint _tmp60_; _tmp60_ = _data1_->i; _data1_->i = _tmp60_ + 1; } _tmp59_ = FALSE; if (!(_data1_->i < 16)) { block2_data_unref (_data2_); _data2_ = NULL; break; } _tmp61_ = CANDIDATE_AREA_LABELS[_data1_->i]; _tmp62_ = (GtkLabel*) gtk_label_new (_tmp61_); g_object_ref_sink (_tmp62_); label = _tmp62_; _tmp63_ = label; gtk_widget_set_halign ((GtkWidget*) _tmp63_, GTK_ALIGN_START); _tmp64_ = label; gtk_widget_set_valign ((GtkWidget*) _tmp64_, GTK_ALIGN_CENTER); _tmp65_ = label; gtk_widget_show ((GtkWidget*) _tmp65_); _tmp66_ = self->priv->m_labels; _tmp66__length1 = self->priv->m_labels_length1; _tmp67_ = label; _tmp68_ = _g_object_ref0 (_tmp67_); _vala_array_add1 (&self->priv->m_labels, &self->priv->m_labels_length1, &self->priv->_m_labels_size_, _tmp68_); _tmp69_ = (GtkLabel*) gtk_label_new ("test"); g_object_ref_sink (_tmp69_); candidate = _tmp69_; _tmp70_ = candidate; gtk_widget_set_halign ((GtkWidget*) _tmp70_, GTK_ALIGN_START); _tmp71_ = candidate; gtk_widget_set_valign ((GtkWidget*) _tmp71_, GTK_ALIGN_CENTER); _tmp72_ = candidate; gtk_widget_show ((GtkWidget*) _tmp72_); _tmp73_ = self->priv->m_candidates; _tmp73__length1 = self->priv->m_candidates_length1; _tmp74_ = candidate; _tmp75_ = _g_object_ref0 (_tmp74_); _vala_array_add2 (&self->priv->m_candidates, &self->priv->m_candidates_length1, &self->priv->_m_candidates_size_, _tmp75_); _tmp76_ = label; gtk_widget_set_margin_start ((GtkWidget*) _tmp76_, 8); _tmp77_ = label; gtk_widget_set_margin_end ((GtkWidget*) _tmp77_, 8); _tmp78_ = candidate; gtk_widget_set_margin_start ((GtkWidget*) _tmp78_, 8); _tmp79_ = candidate; gtk_widget_set_margin_end ((GtkWidget*) _tmp79_, 8); _data2_->index = _data1_->i; _tmp80_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp80_); label_ebox = _tmp80_; _tmp81_ = label_ebox; gtk_widget_set_no_show_all ((GtkWidget*) _tmp81_, TRUE); _tmp82_ = label_ebox; g_signal_connect_data ((GtkWidget*) _tmp82_, "button-press-event", (GCallback) _______lambda7__gtk_widget_button_press_event, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); _tmp83_ = label_ebox; _tmp84_ = label; gtk_container_add ((GtkContainer*) _tmp83_, (GtkWidget*) _tmp84_); _tmp85_ = labels_vbox; _tmp86_ = label_ebox; gtk_box_pack_start (_tmp85_, (GtkWidget*) _tmp86_, FALSE, FALSE, (guint) 2); _tmp87_ = self->priv->m_widgets; _tmp87__length1 = self->priv->m_widgets_length1; _tmp88_ = label_ebox; _tmp89_ = _g_object_ref0 ((GtkWidget*) _tmp88_); _vala_array_add3 (&self->priv->m_widgets, &self->priv->m_widgets_length1, &self->priv->_m_widgets_size_, _tmp89_); _tmp90_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp90_); candidate_ebox = _tmp90_; _tmp91_ = candidate_ebox; gtk_widget_set_no_show_all ((GtkWidget*) _tmp91_, TRUE); _tmp92_ = candidate_ebox; g_signal_connect_data ((GtkWidget*) _tmp92_, "button-press-event", (GCallback) _______lambda8__gtk_widget_button_press_event, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); _tmp93_ = candidate_ebox; _tmp94_ = candidate; gtk_container_add ((GtkContainer*) _tmp93_, (GtkWidget*) _tmp94_); _tmp95_ = candidates_vbox; _tmp96_ = candidate_ebox; gtk_box_pack_start (_tmp95_, (GtkWidget*) _tmp96_, FALSE, FALSE, (guint) 2); _tmp97_ = self->priv->m_widgets; _tmp97__length1 = self->priv->m_widgets_length1; _tmp98_ = candidate_ebox; _tmp99_ = _g_object_ref0 ((GtkWidget*) _tmp98_); _vala_array_add4 (&self->priv->m_widgets, &self->priv->m_widgets_length1, &self->priv->_m_widgets_size_, _tmp99_); _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); _g_object_unref0 (vbox); _g_object_unref0 (container_ebox); } else { GtkEventBox* container_ebox = NULL; GtkEventBox* _tmp100_; GtkEventBox* _tmp101_; GtkEventBox* _tmp102_; GtkEventBox* _tmp103_; GtkBox* hbox = NULL; GtkBox* _tmp104_; GtkEventBox* _tmp105_; GtkBox* _tmp106_; GtkLabel** _tmp107_; GtkLabel** _tmp108_; GtkWidget** _tmp109_; GtkBox* _tmp143_; VSeparator* _tmp144_; VSeparator* _tmp145_; GtkBox* _tmp146_; GtkButton* _tmp147_; GtkBox* _tmp148_; GtkButton* _tmp149_; _tmp100_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp100_); container_ebox = _tmp100_; _tmp101_ = container_ebox; gtk_widget_add_events ((GtkWidget*) _tmp101_, (gint) GDK_SCROLL_MASK); _tmp102_ = container_ebox; g_signal_connect_object ((GtkWidget*) _tmp102_, "scroll-event", (GCallback) _candidate_area_candidate_scrolled_gtk_widget_scroll_event, self, 0); _tmp103_ = container_ebox; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp103_); _tmp104_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp104_); hbox = _tmp104_; _tmp105_ = container_ebox; _tmp106_ = hbox; gtk_container_add ((GtkContainer*) _tmp105_, (GtkWidget*) _tmp106_); _tmp107_ = 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 = _tmp107_; self->priv->m_labels_length1 = 0; self->priv->_m_labels_size_ = self->priv->m_labels_length1; _tmp108_ = 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 = _tmp108_; self->priv->m_candidates_length1 = 0; self->priv->_m_candidates_size_ = self->priv->m_candidates_length1; _tmp109_ = 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 = _tmp109_; self->priv->m_widgets_length1 = 0; self->priv->_m_widgets_size_ = self->priv->m_widgets_length1; { gint i = 0; i = 0; { gboolean _tmp110_ = FALSE; _tmp110_ = TRUE; while (TRUE) { Block3Data* _data3_; GtkLabel* label = NULL; const gchar* _tmp112_; GtkLabel* _tmp113_; GtkLabel* _tmp114_; GtkLabel* _tmp115_; GtkLabel* _tmp116_; GtkLabel** _tmp117_; gint _tmp117__length1; GtkLabel* _tmp118_; GtkLabel* _tmp119_; GtkLabel* candidate = NULL; GtkLabel* _tmp120_; GtkLabel* _tmp121_; GtkLabel* _tmp122_; GtkLabel* _tmp123_; GtkLabel** _tmp124_; gint _tmp124__length1; GtkLabel* _tmp125_; GtkLabel* _tmp126_; GtkBox* candidate_hbox = NULL; GtkBox* _tmp127_; GtkBox* _tmp128_; GtkBox* _tmp129_; GtkLabel* _tmp130_; GtkBox* _tmp131_; GtkLabel* _tmp132_; GtkEventBox* ebox = NULL; GtkEventBox* _tmp133_; GtkEventBox* _tmp134_; GtkEventBox* _tmp135_; GtkEventBox* _tmp136_; GtkBox* _tmp137_; GtkBox* _tmp138_; GtkEventBox* _tmp139_; GtkWidget** _tmp140_; gint _tmp140__length1; GtkEventBox* _tmp141_; GtkWidget* _tmp142_; _data3_ = g_slice_new0 (Block3Data); _data3_->_ref_count_ = 1; _data3_->self = g_object_ref (self); if (!_tmp110_) { gint _tmp111_; _tmp111_ = i; i = _tmp111_ + 1; } _tmp110_ = FALSE; if (!(i < 16)) { block3_data_unref (_data3_); _data3_ = NULL; break; } _tmp112_ = CANDIDATE_AREA_LABELS[i]; _tmp113_ = (GtkLabel*) gtk_label_new (_tmp112_); g_object_ref_sink (_tmp113_); label = _tmp113_; _tmp114_ = label; gtk_widget_set_halign ((GtkWidget*) _tmp114_, GTK_ALIGN_START); _tmp115_ = label; gtk_widget_set_valign ((GtkWidget*) _tmp115_, GTK_ALIGN_CENTER); _tmp116_ = label; gtk_widget_show ((GtkWidget*) _tmp116_); _tmp117_ = self->priv->m_labels; _tmp117__length1 = self->priv->m_labels_length1; _tmp118_ = label; _tmp119_ = _g_object_ref0 (_tmp118_); _vala_array_add5 (&self->priv->m_labels, &self->priv->m_labels_length1, &self->priv->_m_labels_size_, _tmp119_); _tmp120_ = (GtkLabel*) gtk_label_new ("test"); g_object_ref_sink (_tmp120_); candidate = _tmp120_; _tmp121_ = candidate; gtk_widget_set_halign ((GtkWidget*) _tmp121_, GTK_ALIGN_START); _tmp122_ = candidate; gtk_widget_set_valign ((GtkWidget*) _tmp122_, GTK_ALIGN_CENTER); _tmp123_ = candidate; gtk_widget_show ((GtkWidget*) _tmp123_); _tmp124_ = self->priv->m_candidates; _tmp124__length1 = self->priv->m_candidates_length1; _tmp125_ = candidate; _tmp126_ = _g_object_ref0 (_tmp125_); _vala_array_add6 (&self->priv->m_candidates, &self->priv->m_candidates_length1, &self->priv->_m_candidates_size_, _tmp126_); _tmp127_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp127_); candidate_hbox = _tmp127_; _tmp128_ = candidate_hbox; gtk_widget_show ((GtkWidget*) _tmp128_); _tmp129_ = candidate_hbox; _tmp130_ = label; gtk_box_pack_start (_tmp129_, (GtkWidget*) _tmp130_, FALSE, FALSE, (guint) 2); _tmp131_ = candidate_hbox; _tmp132_ = candidate; gtk_box_pack_start (_tmp131_, (GtkWidget*) _tmp132_, FALSE, FALSE, (guint) 2); _data3_->index = i; _tmp133_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp133_); ebox = _tmp133_; _tmp134_ = ebox; gtk_widget_set_no_show_all ((GtkWidget*) _tmp134_, TRUE); _tmp135_ = ebox; g_signal_connect_data ((GtkWidget*) _tmp135_, "button-press-event", (GCallback) _______lambda9__gtk_widget_button_press_event, block3_data_ref (_data3_), (GClosureNotify) block3_data_unref, 0); _tmp136_ = ebox; _tmp137_ = candidate_hbox; gtk_container_add ((GtkContainer*) _tmp136_, (GtkWidget*) _tmp137_); _tmp138_ = hbox; _tmp139_ = ebox; gtk_box_pack_start (_tmp138_, (GtkWidget*) _tmp139_, FALSE, FALSE, (guint) 4); _tmp140_ = self->priv->m_widgets; _tmp140__length1 = self->priv->m_widgets_length1; _tmp141_ = ebox; _tmp142_ = _g_object_ref0 ((GtkWidget*) _tmp141_); _vala_array_add7 (&self->priv->m_widgets, &self->priv->m_widgets_length1, &self->priv->_m_widgets_size_, _tmp142_); _g_object_unref0 (ebox); _g_object_unref0 (candidate_hbox); _g_object_unref0 (candidate); _g_object_unref0 (label); block3_data_unref (_data3_); _data3_ = NULL; } } } _tmp143_ = hbox; _tmp144_ = vseparator_new (); g_object_ref_sink (_tmp144_); _tmp145_ = _tmp144_; gtk_box_pack_start (_tmp143_, (GtkWidget*) _tmp145_, FALSE, FALSE, (guint) 0); _g_object_unref0 (_tmp145_); _tmp146_ = hbox; _tmp147_ = prev_button; gtk_box_pack_start (_tmp146_, (GtkWidget*) _tmp147_, FALSE, FALSE, (guint) 0); _tmp148_ = hbox; _tmp149_ = next_button; gtk_box_pack_start (_tmp148_, (GtkWidget*) _tmp149_, FALSE, FALSE, (guint) 0); _g_object_unref0 (hbox); _g_object_unref0 (container_ebox); } _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, gpointer klass_data) { candidate_area_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &CandidateArea_private_offset); G_OBJECT_CLASS (klass)->finalize = candidate_area_finalize; candidate_area_signals[CANDIDATE_AREA_CANDIDATE_CLICKED_SIGNAL] = 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); candidate_area_signals[CANDIDATE_AREA_PAGE_UP_SIGNAL] = g_signal_new ("page-up", TYPE_CANDIDATE_AREA, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); candidate_area_signals[CANDIDATE_AREA_PAGE_DOWN_SIGNAL] = g_signal_new ("page-down", TYPE_CANDIDATE_AREA, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); candidate_area_signals[CANDIDATE_AREA_CURSOR_UP_SIGNAL] = g_signal_new ("cursor-up", TYPE_CANDIDATE_AREA, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); candidate_area_signals[CANDIDATE_AREA_CURSOR_DOWN_SIGNAL] = 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, gpointer klass) { self->priv = candidate_area_get_instance_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); _themed_rgba_unref0 (self->priv->m_rgba); G_OBJECT_CLASS (candidate_area_parent_class)->finalize (obj); } static GType candidate_area_get_type_once (void) { 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); CandidateArea_private_offset = g_type_add_instance_private (candidate_area_type_id, sizeof (CandidateAreaPrivate)); return candidate_area_type_id; } 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)) { GType candidate_area_type_id; candidate_area_type_id = candidate_area_get_type_once (); 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)) { gint 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.22/bindings/vala/ibus-1.0.vapi0000644000000000000000000162375413623751565014330 00000000000000/* ibus-1.0.vapi generated by vapigen-0.48, 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 (); [CCode (has_construct_function = false)] public Bus.async_client (); 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 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; public unowned string get_service_name (); [Version (deprecated = true, deprecated_since = "1.5.3")] public bool get_use_global_engine (); [Version (deprecated = true, deprecated_since = "1.5.3")] public async void get_use_global_engine_async (int timeout_msec, GLib.Cancellable? cancellable); [Version (deprecated = true, deprecated_since = "1.5.3")] public bool get_use_global_engine_async_finish (GLib.AsyncResult res) throws GLib.Error; [Version (deprecated = true, deprecated_since = "1.5.3")] public bool get_use_sys_layout (); [Version (deprecated = true, deprecated_since = "1.5.3")] public async void get_use_sys_layout_async (int timeout_msec, GLib.Cancellable? cancellable); [Version (deprecated = true, 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 (); [Version (deprecated = true, deprecated_since = "1.5.3")] public bool is_global_engine_enabled (); [Version (deprecated = true, deprecated_since = "1.5.3")] public async void is_global_engine_enabled_async (int timeout_msec, GLib.Cancellable? cancellable); [Version (deprecated = true, deprecated_since = "1.5.3")] public bool is_global_engine_enabled_async_finish (GLib.AsyncResult res) throws GLib.Error; [Version (deprecated = true, deprecated_since = "1.5.3")] public GLib.List list_active_engines (); [Version (deprecated = true, deprecated_since = "1.5.3")] public async void list_active_engines_async (int timeout_msec, GLib.Cancellable? cancellable); [Version (deprecated = true, 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 client_only { get; construct; } [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_emoji_data_get_type ()")] public class EmojiData : IBus.Serializable { [CCode (cname = "ibus_emoji_data_new", has_construct_function = true)] public EmojiData (string first_property_name, ...); public unowned GLib.SList get_annotations (); public unowned string get_category (); public unowned string get_description (); public unowned string get_emoji (); public static GLib.SList load (string path); public static void save (string path, GLib.SList list); public void set_annotations (owned GLib.SList annotations); public void set_description (string description); public void* annotations { get; owned set construct; } public string category { get; construct; } public string description { get; set construct; } public string emoji { get; construct; } } [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_extension_event_get_type ()")] public class ExtensionEvent : IBus.Serializable { [CCode (cname = "ibus_extension_event_new", has_construct_function = true)] public ExtensionEvent (string first_property_name, ...); public unowned string get_name (); public unowned string get_params (); public uint get_version (); [NoAccessorMethod] public bool is_enabled { get; construct; } [NoAccessorMethod] public bool is_extension { get; construct; } public string name { get; construct; } public string @params { get; construct; } public uint version { get; } } [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_client_commit_preedit (bool client_commit); 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_cursor_location_relative (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_preedit_text_with_mode (IBus.Text text, uint cursor_pos, bool visible, uint mode); 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)] public weak uint keymap[1792]; public weak string name; [CCode (has_construct_function = false)] [Version (deprecated = true)] 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 commit_text (IBus.Text text); public void cursor_down (); public void cursor_up (); public void hide_preedit_text_received (); public void page_down (); public void page_up (); public void panel_extension (owned IBus.ExtensionEvent event); public void panel_extension_register_keys (string first_property_name, ...); 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 void show_preedit_text_received (); public void update_auxiliary_text_received (IBus.Text text, bool visible); public void update_lookup_table_received (IBus.LookupTable table, bool visible); public void update_preedit_text_received (IBus.Text text, uint cursor_pos, bool visible); public virtual signal void candidate_clicked_lookup_table (uint index, uint button, uint state); public virtual signal void commit_text_received (IBus.Text text); 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 panel_extension_received (IBus.ExtensionEvent event); public virtual signal bool process_key_event (uint keyval, uint keycode, uint state); 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 set_cursor_location_relative (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 static unowned IBus.Serializable deserialize_object (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 GLib.Variant serialize_object (); 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", type_id = "ibus_unicode_block_get_type ()")] public class UnicodeBlock : IBus.Serializable { [CCode (has_construct_function = false)] protected UnicodeBlock (); public unichar get_end (); public unowned string get_name (); public unichar get_start (); public static GLib.SList load (string path); public static void save (string path, GLib.SList list); public uint end { get; construct; } [NoAccessorMethod] public string name { owned get; set construct; } public uint start { get; construct; } } [CCode (cheader_filename = "ibus.h", type_id = "ibus_unicode_data_get_type ()")] public class UnicodeData : IBus.Serializable { [CCode (has_construct_function = false)] protected UnicodeData (); public unowned string get_alias (); public unowned string get_block_name (); public unichar get_code (); public unowned string get_name (); public static GLib.SList load (string path, GLib.Object? object); public static void load_async (string path, GLib.Object? object, GLib.Cancellable? cancellable, IBus.UnicodeDataLoadAsyncFinish callback); public static void save (string path, GLib.SList list); public void set_block_name (string block_name); [NoAccessorMethod] public string alias { owned get; set construct; } public string block_name { get; set construct; } public uint code { get; construct; } [NoAccessorMethod] public string name { owned get; set construct; } } [CCode (cheader_filename = "ibus.h", lower_case_csuffix = "x_event", type_id = "ibus_x_event_get_type ()")] public class XEvent : IBus.Serializable { [CCode (cname = "ibus_x_event_new", has_construct_function = true)] public XEvent (global::string first_property_name, ...); public IBus.XEventType get_event_type (); public uint8 get_group (); public uint16 get_hardware_keycode (); public bool get_is_modifier (); public uint get_keyval (); public int get_length (); public unowned global::string get_purpose (); public uint32 get_root (); public bool get_same_screen (); public int8 get_send_event (); public ulong get_serial (); public uint get_state (); public unowned global::string get_string (); public uint32 get_subwindow (); public uint32 get_time (); public uint get_version (); public uint32 get_window (); public int get_x (); public int get_x_root (); public int get_y (); public int get_y_root (); public int event_type { get; construct; } public uint group { get; construct; } public uint hardware_keycode { get; construct; } public bool is_modifier { get; construct; } public uint keyval { get; construct; } public int length { get; construct; } public global::string purpose { get; construct; } public uint root { get; construct; } public bool same_screen { get; construct; } public int send_event { get; construct; } public ulong serial { get; construct; } public uint state { get; construct; } public global::string string { get; construct; } public uint subwindow { get; construct; } public uint time { get; construct; } public uint version { get; } public uint window { get; construct; } public int x { get; construct; } public int x_root { get; construct; } public int y { get; construct; } public int y_root { get; construct; } } [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 ProcessKeyEventData { public uint keyval; public uint keycode; public uint state; } [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_X_EVENT_", type_id = "ibus_xevent_type_get_type ()")] public enum XEventType { NOTHING, KEY_PRESS, KEY_RELEASE, OTHER, EVENT_LAST } [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", instance_pos = 1.9)] public delegate void UnicodeDataLoadAsyncFinish (owned GLib.SList data_list); [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_INTERFACE_PORTAL")] public const string INTERFACE_PORTAL; [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_PATH_PANEL_EXTENSION_EMOJI")] public const string PATH_PANEL_EXTENSION_EMOJI; [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_SERVICE_PANEL_EXTENSION")] public const string SERVICE_PANEL_EXTENSION; [CCode (cheader_filename = "ibus.h", cname = "IBUS_SERVICE_PANEL_EXTENSION_EMOJI")] public const string SERVICE_PANEL_EXTENSION_EMOJI; [CCode (cheader_filename = "ibus.h", cname = "IBUS_SERVICE_PORTAL")] public const string SERVICE_PORTAL; [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 string accelerator_name (uint accelerator_key, IBus.ModifierType accelerator_mods); [CCode (cheader_filename = "ibus.h")] [Version (since = "1.5.18")] public static void accelerator_parse (string accelerator, out uint accelerator_key, out IBus.ModifierType accelerator_mods); [CCode (cheader_filename = "ibus.h")] public static bool accelerator_valid (uint keyval, IBus.ModifierType modifiers); [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")] public static unowned GLib.HashTable emoji_dict_load (string path); [CCode (cheader_filename = "ibus.h")] public static unowned IBus.EmojiData emoji_dict_lookup (owned GLib.HashTable dict, string emoji); [CCode (cheader_filename = "ibus.h")] public static void emoji_dict_save (string path, GLib.HashTable dict); [CCode (cheader_filename = "ibus.h")] [Version (deprecated = true)] public static void free_strv (string strv); [CCode (cheader_filename = "ibus.h")] public static unowned string get_address (); [CCode (cheader_filename = "ibus.h")] [Version (deprecated = true)] public static long get_daemon_uid (); [CCode (cheader_filename = "ibus.h")] public static 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 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 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.22/bindings/vala/Makefile.am0000644000000000000000000001456513623750431014225 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2016 Peng Huang # Copyright (c) 2017-2018 Takao Fujiwara # Copyright (c) 2007-2017 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) libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la noinst_LTLIBRARIES = noinst_DATA = INTROSPECTION_GIRS = girdir = $(datadir)/gir-1.0 AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ -include $(CONFIG_HEADER) \ $(NULL) AM_CFLAGS = \ -DG_LOG_DOMAIN=\"IBUS\" \ -DPKGDATADIR=\"$(pkgdatadir)\" \ -DIBUS_DISABLE_DEPRECATED \ -Wno-unused-variable \ -Wno-unused-but-set-variable \ -Wno-unused-function \ $(NULL) AM_VALAFLAGS = \ --vapidir=$(builddir) \ --vapidir=$(srcdir) \ --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) vapi_deps = \ IBus-1.0.metadata \ $(top_builddir)/src/IBus-1.0.gir \ $(NULL) ibus-1.0.vapi: $(vapi_deps) ibus_vapi = ibus-1.0.vapi VAPIGEN_VAPIS = $(ibus_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 = $(ibus_vapi) $(ibus_vapi:.vapi=.deps) MAINTAINERCLEANFILES = $(ibus_vapi) DISTCLEANFILES = $(ibus_vapi) EXTRA_DIST = \ $(ibus_vapi) \ IBus-1.0.metadata \ IBus-1.0-custom.vala \ IBusEmojiDialog-1.0.metadata \ ibus-1.0.deps \ ibus-emoji-dialog-1.0.deps \ config.vapi \ gdk-wayland.vapi \ xi.vapi \ $(NULL) if ENABLE_EMOJI_DICT AM_VALAFLAGS += --define=EMOJI_DICT libibus_emoji_dialog = libibus-emoji-dialog-1.0.la noinst_LTLIBRARIES += $(libibus_emoji_dialog) libibus_emoji_dialog_1_0_la_SOURCES = \ candidatearea.vala \ emojier.vala \ iconwidget.vala \ pango.vala \ separator.vala \ $(NULL) libibus_emoji_dialog_1_0_la_CFLAGS = \ $(AM_CFLAGS) \ @GLIB2_CFLAGS@ \ @GIO2_CFLAGS@ \ @GTHREAD2_CFLAGS@ \ @GTK3_CFLAGS@ \ @X11_CFLAGS@ \ -DBINDIR=\"$(bindir)\" \ $(NULL) libibus_emoji_dialog_1_0_la_LIBADD = \ @GLIB2_LIBS@ \ @GIO2_LIBS@ \ @GTHREAD2_LIBS@ \ @GTK3_LIBS@ \ @X11_LIBS@ \ -lXi \ $(libibus) \ $(NULL) libibus_emoji_dialog_1_0_la_LDFLAGS = \ -no-undefined \ -export-symbols-regex "ibus_.*" \ $(NULL) # per file setting is needed to avoid conflicting LN_S by calling # duplicated times in parallel make %.vala: $(ibus_vapi) if test ! -f $@ ; then \ $(LN_S) $(top_srcdir)/ui/gtk3/$@ .; \ fi; MAINTAINERCLEANFILES += $(libibus_emoji_dialog_1_0_la_SOURCES) DISTCLEANFILES += $(libibus_emoji_dialog_1_0_la_SOURCES) if HAVE_INTROSPECTION -include $(INTROSPECTION_MAKEFILE) INTROSPECTION_SCANNER_ARGS = INTROSPECTION_COMPILER_ARGS = \ --includedir=$(srcdir) \ --includedir=. \ --includedir=$(top_srcdir)/src \ $(NULL) emoji_headers = \ $(top_srcdir)/ui/gtk3/ibusemojidialog.h \ $(NULL) IBusEmojiDialog-1.0.gir: $(libibus_emoji_dialog) Makefile IBusEmojiDialog_1_0_gir_SCANNERFLAGS = \ --pkg-export=ibus-1.0 \ --pkg=gtk+-3.0 \ $(IBUS_GIR_SCANNERFLAGS) \ $(NULL) IBusEmojiDialog_1_0_gir_INCLUDES = Gtk-3.0 GLib-2.0 GObject-2.0 Gio-2.0 IBusEmojiDialog_1_0_gir_LIBS = $(libibus_emoji_dialog) $(libibus) IBusEmojiDialog_1_0_gir_FILES = $(emoji_headers) IBusEmojiDialog_1_0_gir_CFLAGS = \ -I$(srcdir) \ -I$(builddir) \ -I$(top_srcdir)/src \ $(NULL) ibus_emoji_dialog_gir = IBusEmojiDialog-1.0.gir INTROSPECTION_GIRS += $(ibus_emoji_dialog_gir) noinst_DATA += $(ibus_emoji_dialog_gir) EXTRA_DIST += $(ibus_emoji_dialog_gir) MAINTAINERCLEANFILES += $(ibus_emoji_dialog_gir) DISTCLEANFILES += $(ibus_emoji_dialog_gir) ibus-emoji-dialog-1.0.vapi: $(ibus_emoji_dialog_gir) IBusEmojiDialog-1.0.metadata ibus_emoji_dialog_vapi = ibus-emoji-dialog-1.0.vapi ibus_emoji_dialog_1_0_vapi_DEPS = gtk+-3.0 gio-2.0 ibus_emoji_dialog_1_0_vapi_METADATADIRS = $(srcdir) ibus_emoji_dialog_1_0_vapi_FILES = IBusEmojiDialog-1.0.gir VAPIGEN_VAPIS += $(ibus_emoji_dialog_vapi) noinst_DATA += $(ibus_emoji_dialog_vapi) EXTRA_DIST += $(ibus_emoji_dialog_vapi) MAINTAINERCLEANFILES += $(ibus_emoji_dialog_vapi) DISTCLEANFILES += $(ibus_emoji_dialog_vapi) endif #end of HAVE_INTROSPECTION endif # end of ENABLE_EMOJI_DICT -include $(top_srcdir)/git.mk ibus-1.5.22/bindings/vala/emojier.vala0000644000000000000000000027711313623750431014470 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright (c) 2017-2019 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 IBusEmojier : Gtk.ApplicationWindow { private class EListBox : Gtk.ListBox { public EListBox() { GLib.Object( vexpand : true, halign : Gtk.Align.FILL, valign : Gtk.Align.FILL ); this.motion_notify_event.connect((e) => { #if VALA_0_24 Gdk.EventMotion pe = e; #else Gdk.EventMotion *pe = &e; #endif if (m_mouse_x == pe.x_root && m_mouse_y == pe.y_root) return false; m_mouse_x = pe.x_root; m_mouse_y = pe.y_root; var row = this.get_row_at_y((int)e.y); if (row != null) this.select_row(row); return false; }); this.enter_notify_event.connect((e) => { // avoid gtk_button_update_state() return true; }); } } private class EBoxRow : Gtk.ListBoxRow { public EBoxRow(string text) { this.text = text; } public string text { get; set; } } private class EScrolledWindow : Gtk.ScrolledWindow { public EScrolledWindow(Gtk.Adjustment? hadjustment=null, Gtk.Adjustment? vadjustment=null) { GLib.Object( hscrollbar_policy : Gtk.PolicyType.NEVER, vscrollbar_policy : Gtk.PolicyType.NEVER, shadow_type : Gtk.ShadowType.IN, margin_start : 6, margin_end : 6, margin_top : 6, margin_bottom : 6 ); if (hadjustment != null) set_hadjustment(hadjustment); if (vadjustment != null) set_hadjustment(vadjustment); } } private class EGrid : Gtk.Grid { public EGrid() { GLib.Object( row_homogeneous : false, vexpand : true, halign : Gtk.Align.FILL, valign : Gtk.Align.FILL, row_spacing : 5, column_spacing : 5, border_width : 2 ); } } private class EWhiteLabel : Gtk.Label { private int m_minimum_width = 0; private int m_natural_width = 0; private int m_minimum_height = 0; private int m_natural_height = 0; public EWhiteLabel(string text) { GLib.Object( name : "IBusEmojierWhiteLabel" ); set_label(text); } public override void get_preferred_width(out int minimum_width, out int natural_width) { if (m_minimum_height == 0 && m_natural_height == 0) { base.get_preferred_height(out m_minimum_height, out m_natural_height); } var text = get_label(); var ch = text.get_char(); if (text.length == 1 && ch == '\t') { m_minimum_width = minimum_width = m_minimum_height; m_natural_width = natural_width = m_natural_height; return; } base.get_preferred_width(out minimum_width, out natural_width); if (text.length == 1 && (ch == '\n' || ch == '\r')) { minimum_width /= 2; natural_width /= 2; m_minimum_width = minimum_width; m_natural_width = natural_width; return; } if (minimum_width < m_minimum_height) minimum_width = m_minimum_height; if (natural_width < m_natural_height) natural_width = m_natural_height; m_minimum_width = minimum_width; m_natural_width = natural_width; } public override void get_preferred_height(out int minimum_height, out int natural_height) { if (m_minimum_width == 0 && m_natural_width == 0) { base.get_preferred_width(out m_minimum_width, out m_natural_width); } var text = get_label(); var ch = text.get_char(); if (text.length == 1 && ch == '\v') { m_minimum_height = minimum_height = m_minimum_width; m_natural_height = natural_height = m_natural_width; return; } base.get_preferred_height(out minimum_height, out natural_height); if (text.length == 1 && (ch == '\n' || ch == '\r')) { minimum_height /= 2; natural_height /= 2; m_minimum_height = minimum_height; m_natural_height = natural_height; return; } m_minimum_height = minimum_height; m_natural_height = natural_height; } } private class ESelectedLabel : EWhiteLabel { public ESelectedLabel(string text) { GLib.Object( name : "IBusEmojierSelectedLabel" ); if (text != "") set_label(text); } } private class EGoldLabel : EWhiteLabel { public EGoldLabel(string text) { GLib.Object( name : "IBusEmojierGoldLabel" ); if (text != "") set_label(text); } } private class EPaddedLabel : Gtk.Label { public EPaddedLabel(string text, Gtk.Align align) { GLib.Object( name : "IBusEmojierPaddedLabel", halign : align, valign : Gtk.Align.CENTER, margin_start : 20, margin_end : 20, margin_top : 6, margin_bottom : 6 ); set_text(text); } } private class EPaddedLabelBox : Gtk.Box { public EPaddedLabelBox(string text, Gtk.Align align, TravelDirection direction=TravelDirection.NONE, string? caption=null) { GLib.Object( name : "IBusEmojierPaddedLabelBox", orientation : Gtk.Orientation.HORIZONTAL, spacing : 0 ); if (direction == TravelDirection.BACKWARD) { IconWidget icon; if (Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL) { icon = new IconWidget("go-previous-rtl-symbolic", Gtk.IconSize.MENU); } else { icon = new IconWidget("go-previous-symbolic", Gtk.IconSize.MENU); } pack_start(icon, false, true, 0); } EPaddedLabel label = new EPaddedLabel(text, align); pack_start(label, true, true, 0); if (caption != null) { EPaddedLabel label_r = new EPaddedLabel(caption, Gtk.Align.END); pack_end(label_r, true, true, 0); } } } private class LoadProgressObject : GLib.Object { public LoadProgressObject() { } public signal void deserialize_unicode(uint done, uint total); } private enum TravelDirection { NONE, BACKWARD, } public const uint BUTTON_CLOSE_BUTTON = 1000; private const uint EMOJI_GRID_PAGE = 10; private const string EMOJI_CATEGORY_FAVORITES = N_("Favorites"); private const string EMOJI_CATEGORY_OTHERS = N_("Others"); private const string EMOJI_CATEGORY_UNICODE = N_("Open Unicode choice"); private const unichar[] EMOJI_VARIANT_LIST = { 0x1f3fb, 0x1f3fc, 0x1f3fd, 0x1f3fe, 0x1f3ff, 0x200d }; // Set the actual default values in the constructor // because these fields are used for class_init() and static functions, // e.g. set_emoji_font(), can be called before class_init() is called. private static string m_current_lang_id; private static string m_emoji_font_family; private static int m_emoji_font_size; private static bool m_emoji_font_changed = false; private static string[] m_favorites; private static string[] m_favorite_annotations; private static int m_emoji_max_seq_len; private static bool m_has_partial_match; private static uint m_partial_match_length; private static uint m_partial_match_condition; private static bool m_show_emoji_variant = false; private static int m_default_window_width; private static int m_default_window_height; private static GLib.HashTable>? m_annotation_to_emojis_dict; private static GLib.HashTable? m_emoji_to_data_dict; private static GLib.HashTable>? m_category_to_emojis_dict; private static GLib.HashTable>? m_emoji_to_emoji_variants_dict; private static GLib.HashTable? m_unicode_to_data_dict; private static GLib.HashTable>? m_name_to_unicodes_dict; private static GLib.SList m_unicode_block_list; private static bool m_show_unicode = false; private static LoadProgressObject m_unicode_progress_object; private static bool m_loaded_unicode = false; private static string m_warning_message = ""; private ThemedRGBA m_rgba; private Gtk.Box m_vbox; /* If emojier is emoji category list or Unicode category list, * m_annotation is "" and preedit is also "". * If emojier is candidate mode, m_annotation is an annotation and * get_current_candidate() returns the current emoji. * But the current preedit can be "" in candidate mode in case that * Unicode candidate window has U+0000. */ private string m_annotation = ""; private string? m_backward; private int m_backward_index = -1; private EScrolledWindow? m_scrolled_window = null; private EListBox m_list_box; private bool m_is_running = false; private string m_input_context_path = ""; private GLib.MainLoop? m_loop; private string? m_result; /* If m_candidate_panel_is_visible is true, emojier is candidate mode and * the emoji lookup window is visible. * If m_candidate_panel_is_visible is false, the emoji lookup window is * not visible but the mode is not clear. */ private bool m_candidate_panel_is_visible; /* If m_candidate_panel_mode is true, emojier is candidate mode and * it does not depend on whether the window is visible or not. * I.E. the first candidate does not show the lookup window and the * second one shows the window. * If m_candidate_panel_mode is false, emojier is emoji category list or * Unicode category list. */ private bool m_candidate_panel_mode; private int m_category_active_index = -1; private IBus.LookupTable m_lookup_table; private Gtk.Label[] m_candidates; private bool m_enter_notify_enable = true; private uint m_entry_notify_show_id; private uint m_entry_notify_disable_id; protected static double m_mouse_x; protected static double m_mouse_y; private Gtk.ProgressBar m_unicode_progress_bar; private uint m_unicode_progress_id; private Gtk.Label m_unicode_percent_label; private double m_unicode_percent; private Gdk.Rectangle m_cursor_location; private bool m_is_up_side_down = false; private uint m_redraw_window_id; public signal void candidate_clicked(uint index, uint button, uint state); public signal void commit_text(string text); public signal void cancel(); public IBusEmojier() { GLib.Object( type : Gtk.WindowType.POPUP ); // GLib.ActionEntry accepts const variables only. var action = new GLib.SimpleAction.stateful( "variant", null, new GLib.Variant.boolean(m_show_emoji_variant)); action.activate.connect(check_action_variant_cb); add_action(action); action = new GLib.SimpleAction("close", null); action.activate.connect(action_close_cb); add_action(action); if (m_current_lang_id == null) m_current_lang_id = "en"; if (m_emoji_font_family == null) { m_emoji_font_family = "Monospace"; m_emoji_font_changed = true; } if (m_emoji_font_size == 0) { m_emoji_font_size = 16; m_emoji_font_changed = true; } if (m_favorites == null) m_favorites = {}; if (m_favorite_annotations == null) m_favorite_annotations = {}; set_css_data(); m_vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); add(m_vbox); // The constructor of IBus.LookupTable does not support more than // 16 pages. m_lookup_table = new IBus.LookupTable(1, 0, true, true); m_lookup_table.set_page_size(EMOJI_GRID_PAGE * EMOJI_GRID_PAGE); hide.connect(() => { if (m_loop != null && m_loop.is_running()) m_loop.quit(); }); size_allocate.connect((w, a) => { adjust_window_position(); }); if (m_annotation_to_emojis_dict == null) { reload_emoji_dict(); } get_load_progress_object(); } private static void reload_emoji_dict() { init_emoji_dict(); make_emoji_dict("en"); if (m_current_lang_id != "en") { var lang_ids = m_current_lang_id.split("_"); if (lang_ids.length > 1) { string sub_id = lang_ids[0]; make_emoji_dict(sub_id); } make_emoji_dict(m_current_lang_id); } add_variants_to_component(); GLib.List annotations = m_annotation_to_emojis_dict.get_keys(); foreach (unowned string annotation in annotations) { if (m_emoji_max_seq_len < annotation.length) m_emoji_max_seq_len = annotation.length; } update_favorite_emoji_dict(); } private static void init_emoji_dict() { m_annotation_to_emojis_dict = new GLib.HashTable>(GLib.str_hash, GLib.str_equal); m_emoji_to_data_dict = new GLib.HashTable(GLib.str_hash, GLib.str_equal); m_category_to_emojis_dict = new GLib.HashTable>(GLib.str_hash, GLib.str_equal); m_emoji_to_emoji_variants_dict = new GLib.HashTable>(GLib.str_hash, GLib.str_equal); if (m_unicode_to_data_dict == null) { m_unicode_to_data_dict = new GLib.HashTable( GLib.direct_hash, GLib.direct_equal); } if (m_name_to_unicodes_dict == null) { m_name_to_unicodes_dict = new GLib.HashTable>(GLib.str_hash, GLib.str_equal); } } private static void make_emoji_dict(string lang) { GLib.SList emoji_list = IBus.EmojiData.load( Config.PKGDATADIR + "/dicts/emoji-" + lang + ".dict"); if (emoji_list == null) return; foreach (IBus.EmojiData data in emoji_list) { update_emoji_to_data_dict(data, lang); update_annotation_to_emojis_dict(data); update_category_to_emojis_dict(data, lang); } } private static void add_variants_to_component() { string category = "Component"; unowned GLib.SList hits = m_category_to_emojis_dict.lookup(category); if (hits == null) { category = "component"; hits = m_category_to_emojis_dict.lookup(category); } if (hits == null) return; GLib.SList emoji_list = new GLib.SList(); GLib.SList annotations = new GLib.SList(); annotations.append("zero"); IBus.EmojiData _data; _data = new IBus.EmojiData("emoji", "\u200d", "annotations", annotations, "description", "ZERO WIDTH JOINER", "category", category); emoji_list.append(_data); annotations = null; annotations.append("text"); annotations.append("variation"); annotations.append("selector"); _data = new IBus.EmojiData("emoji", "\ufe0e", "annotations", annotations, "description", "VARIATION SELECTOR-15", "category", category); emoji_list.append(_data); annotations = null; annotations.append("emoji"); annotations.append("variation"); annotations.append("selector"); _data = new IBus.EmojiData("emoji", "\ufe0f", "annotations", annotations, "description", "VARIATION SELECTOR-16", "category", category); emoji_list.append(_data); foreach (IBus.EmojiData data in emoji_list) { update_emoji_to_data_dict(data, "en"); update_annotation_to_emojis_dict(data); update_category_to_emojis_dict(data, "en"); } } private static void update_annotation_to_emojis_dict(IBus.EmojiData data) { string emoji = data.get_emoji(); unowned GLib.SList annotations = data.get_annotations(); foreach (string annotation in annotations) { bool has_emoji = false; GLib.SList hits = m_annotation_to_emojis_dict.lookup(annotation).copy_deep( GLib.strdup); foreach (string hit_emoji in hits) { if (hit_emoji == emoji) { has_emoji = true; break; } } if (!has_emoji) { hits.append(emoji); m_annotation_to_emojis_dict.replace( annotation, hits.copy_deep(GLib.strdup)); } } } private static string utf8_code_point(string str) { var buff = new GLib.StringBuilder(); int length = str.char_count(); if (length == 0) { buff.append("U+%04X".printf(0)); return buff.str; } for (int i = 0; i < length; i++) { unichar ch = str.get_char(0); if (i == 0) buff.append("U+%04X".printf(ch)); else buff.append(" %04X".printf(ch)); str = str.next_char(); } return buff.str; } private static string utf8_entity(string str) { var buff = new GLib.StringBuilder(); int length = str.char_count(); for (int i = 0; i < length; i++) { unichar ch = str.get_char(0); switch(ch) { case '<': buff.append("<"); break; case '>': buff.append(">"); break; case '&': buff.append("&"); break; default: buff.append_unichar(ch); break; } str = str.next_char(); } return buff.str; } private static void update_annotations_with_description (IBus.EmojiData data, string description) { GLib.SList annotations = data.get_annotations().copy_deep(GLib.strdup); bool update_annotations = false; string former = null; string later = null; int index = description.index_of(": "); if (index > 0) { former = description.substring(0, index); if (annotations.find_custom(former, GLib.strcmp) == null) { annotations.append(former); update_annotations = true; } later = description.substring(index + 2); } else { later = description.dup(); } var words = later.split(" "); // If the description has less than 3 words, add it to annotations // FIXME: How to cast GLib.CompareFunc to strcmp? if (words.length < 3 && annotations.find_custom( later, GLib.strcmp) == null) { annotations.append(later); update_annotations = true; } if (update_annotations) data.set_annotations(annotations.copy_deep(GLib.strdup)); } private static void update_emoji_to_data_dict(IBus.EmojiData data, string lang) { string emoji = data.get_emoji(); if (lang == "en") { string description = data.get_description().down(); update_annotations_with_description (data, description); m_emoji_to_data_dict.replace(emoji, data); } else { unowned IBus.EmojiData? en_data = null; en_data = m_emoji_to_data_dict.lookup(emoji); if (en_data == null) { m_emoji_to_data_dict.insert(emoji, data); return; } string trans_description = data.get_description(); en_data.set_description(trans_description); trans_description = trans_description.down(); update_annotations_with_description (data, trans_description); unowned GLib.SList annotations = data.get_annotations(); unowned GLib.SList en_annotations = en_data.get_annotations(); foreach (string annotation in en_annotations) { // FIXME: How to cast GLib.CompareFunc to strcmp? if (annotations.find_custom( annotation, GLib.strcmp) == null) { annotations.append(annotation.dup()); } } en_data.set_annotations(annotations.copy_deep(GLib.strdup)); } } private static void update_category_to_emojis_dict(IBus.EmojiData data, string lang) { string emoji = data.get_emoji(); string category = data.get_category(); if (category == "") category = EMOJI_CATEGORY_OTHERS; if (lang == "en") { bool has_variant = false; if (category.ascii_casecmp("component") != 0) { foreach (unichar ch in EMOJI_VARIANT_LIST) { if (emoji.index_of_char(ch) >= 0) { has_variant = true; break; } } } // If emoji includes variants (skin colors and items), // it's escaped in m_emoji_to_emoji_variants_dict and // not shown by default. if (has_variant) { unichar base_ch = emoji.get_char(); string base_emoji = base_ch.to_string(); var buff = new GLib.StringBuilder(); buff.append_unichar(base_ch); buff.append_unichar(0xfe0f); if (m_emoji_to_data_dict.lookup(buff.str) != null) base_emoji = buff.str; GLib.SList? variants = m_emoji_to_emoji_variants_dict.lookup( base_emoji).copy_deep(GLib.strdup); if (variants.find_custom(emoji, GLib.strcmp) == null) { if (variants == null) variants.append(base_emoji); if (base_emoji != emoji) variants.append(emoji); m_emoji_to_emoji_variants_dict.replace( base_emoji, variants.copy_deep(GLib.strdup)); } return; } bool has_emoji = false; GLib.SList hits = m_category_to_emojis_dict.lookup(category).copy_deep( GLib.strdup); foreach (string hit_emoji in hits) { if (hit_emoji == emoji) { has_emoji = true; break; } } if (!has_emoji) { hits.append(emoji); m_category_to_emojis_dict.replace(category, hits.copy_deep(GLib.strdup)); } } } private static void make_unicode_block_dict() { m_unicode_block_list = IBus.UnicodeBlock.load( Config.PKGDATADIR + "/dicts/unicode-blocks.dict"); foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { unowned string name = block.get_name(); if (m_emoji_max_seq_len < name.length) m_emoji_max_seq_len = name.length; } } private static void make_unicode_name_dict(Object source_object) { IBus.UnicodeData.load_async( Config.PKGDATADIR + "/dicts/unicode-names.dict", source_object, null, (IBus.UnicodeDataLoadAsyncFinish)make_unicode_name_dict_finish); } private static void make_unicode_name_dict_finish(GLib.SList unicode_list) { if (unicode_list == null) return; foreach (IBus.UnicodeData data in unicode_list) { update_unicode_to_data_dict(data); update_name_to_unicodes_dict(data); } GLib.List names = m_name_to_unicodes_dict.get_keys(); foreach (unowned string name in names) { if (m_emoji_max_seq_len < name.length) m_emoji_max_seq_len = name.length; } m_loaded_unicode = true; } private static void update_unicode_to_data_dict(IBus.UnicodeData data) { unichar code = data.get_code(); m_unicode_to_data_dict.replace(code, data); } private static void update_name_to_unicodes_dict(IBus.UnicodeData data) { unichar code = data.get_code(); string[] names = {data.get_name().down(), data.get_alias().down()}; foreach (unowned string name in names) { if (name == "") continue; bool has_code = false; GLib.SList hits = m_name_to_unicodes_dict.lookup(name).copy(); foreach (unichar hit_code in hits) { if (hit_code == code) { has_code = true; break; } } if (!has_code) { hits.append(code); m_name_to_unicodes_dict.replace(name, hits.copy()); } } } private void set_css_data() { 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; } // Set en locale because de_DE's decimal_point is ',' instead of '.' string? backup_locale = Intl.setlocale(LocaleCategory.NUMERIC, null).dup(); if (Intl.setlocale(LocaleCategory.NUMERIC, "en_US.UTF-8") == null) { if (Intl.setlocale(LocaleCategory.NUMERIC, "C.UTF-8") == null) { if (Intl.setlocale(LocaleCategory.NUMERIC, "C") == null) { warning("You don't install either en_US.UTF-8 or C.UTF-8 " + "or C locale"); } } } if (m_rgba == null) m_rgba = new ThemedRGBA(this); uint bg_red = (uint)(m_rgba.normal_bg.red * 255); uint bg_green = (uint)(m_rgba.normal_bg.green * 255); uint bg_blue = (uint)(m_rgba.normal_bg.blue * 255); double bg_alpha = m_rgba.normal_bg.alpha; string data = "#IBusEmojierWhiteLabel { background-color: " + "rgba(%u, %u, %u, %lf); ".printf( bg_red, bg_green, bg_blue, bg_alpha) + "font-family: %s; font-size: %dpt; ".printf( m_emoji_font_family, m_emoji_font_size) + "border-width: 4px; border-radius: 3px; } "; uint fg_red = (uint)(m_rgba.selected_fg.red * 255); uint fg_green = (uint)(m_rgba.selected_fg.green * 255); uint fg_blue = (uint)(m_rgba.selected_fg.blue * 255); double fg_alpha = m_rgba.selected_fg.alpha; bg_red = (uint)(m_rgba.selected_bg.red * 255); bg_green = (uint)(m_rgba.selected_bg.green * 255); bg_blue = (uint)(m_rgba.selected_bg.blue * 255); bg_alpha = m_rgba.selected_bg.alpha; data += "#IBusEmojierSelectedLabel { color: " + "rgba(%u, %u, %u, %lf); ".printf( fg_red, fg_green, fg_blue, fg_alpha) + "font-family: %s; font-size: %dpt; ".printf( m_emoji_font_family, m_emoji_font_size) + "background-color: " + "rgba(%u, %u, %u, %lf); ".printf( bg_red, bg_green, bg_blue, bg_alpha) + "border-width: 4px; border-radius: 3px; }"; data += "#IBusEmojierGoldLabel { color: " + "rgba(%u, %u, %u, %lf); ".printf( fg_red, fg_green, fg_blue, fg_alpha) + "font-family: %s; font-size: %dpt; ".printf( m_emoji_font_family, m_emoji_font_size) + "background-color: #b09c5f; " + "border-width: 4px; border-radius: 3px; }"; Gtk.CssProvider css_provider = new Gtk.CssProvider(); try { css_provider.load_from_data(data, -1); } catch (GLib.Error e) { warning("Failed css_provider_from_data: %s", e.message); return; } if (backup_locale != null) Intl.setlocale(LocaleCategory.NUMERIC, backup_locale); else Intl.setlocale(LocaleCategory.NUMERIC, ""); Gtk.StyleContext.add_provider_for_screen( screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } private void set_fixed_size() { resize(20, 1); } private void remove_all_children() { if (m_list_box != null) { foreach (Gtk.Widget w in m_list_box.get_children()) { w.destroy(); } m_list_box = null; } foreach (Gtk.Widget w in m_vbox.get_children()) { if (w.name == "IBusEmojierEntry" || w.name == "IBusEmojierTitleLabelBox") { continue; } w.destroy(); } } private void clamp_page() { Gtk.ListBoxRow row; if (m_category_active_index >= 0) { row = m_list_box.get_row_at_index(m_category_active_index); m_list_box.select_row(row); } else { row = m_list_box.get_row_at_index(0); } Gtk.Allocation alloc = { 0, 0, 0, 0 }; row.get_allocation(out alloc); var adjustment = m_scrolled_window.get_vadjustment(); adjustment.clamp_page(alloc.y, alloc.y + alloc.height); return_if_fail(m_category_active_index >= 0); m_lookup_table.set_cursor_pos((uint)m_category_active_index); } private void show_category_list() { // Do not call remove_all_children() to work adjustment.clamp_page() // with PageUp/Down. // After show_candidate_panel() is called, m_category_active_index // is saved for Escape key but m_list_box is null by // remove_all_children(). if (m_category_active_index >= 0 && m_list_box != null) { var row = m_list_box.get_row_at_index(m_category_active_index); m_list_box.select_row(row); return; } if (m_category_active_index < 0) m_category_active_index = 0; remove_all_children(); m_scrolled_window = new EScrolledWindow(); set_fixed_size(); m_vbox.add(m_scrolled_window); Gtk.Viewport viewport = new Gtk.Viewport(null, null); m_scrolled_window.add(viewport); m_list_box = new EListBox(); viewport.add(m_list_box); Gtk.Adjustment adjustment = m_scrolled_window.get_vadjustment(); m_list_box.set_adjustment(adjustment); m_list_box.row_activated.connect((box, gtkrow) => { m_category_active_index = gtkrow.get_index(); EBoxRow row = gtkrow as EBoxRow; show_emoji_for_category(row.text); show_all(); }); uint ncandidates = m_lookup_table.get_number_of_candidates(); for (uint i = 0; i < ncandidates; i++) { string category = m_lookup_table.get_candidate(i).text; EBoxRow row = new EBoxRow(category); EPaddedLabelBox widget = new EPaddedLabelBox(_(category), Gtk.Align.CENTER); row.add(widget); m_list_box.add(row); if (i == m_category_active_index) m_list_box.select_row(row); } m_scrolled_window.show_all(); if (m_category_active_index == -1) m_list_box.unselect_all(); m_list_box.invalidate_filter(); m_list_box.set_selection_mode(Gtk.SelectionMode.SINGLE); } private void show_emoji_for_category(string category) { if (category == EMOJI_CATEGORY_FAVORITES) { m_lookup_table.clear(); m_candidate_panel_mode = true; foreach (unowned string favorate in m_favorites) { IBus.Text text = new IBus.Text.from_string(favorate); m_lookup_table.append_candidate(text); } m_backward = category; } else if (category == EMOJI_CATEGORY_UNICODE) { m_category_active_index = -1; m_show_unicode = true; update_unicode_blocks(); return; } else { // Use copy_deep() since vala 0.43.4 does not allow to assign // a weak pointer to the full one in SList: // emojier.vala:885.48-886.62: error: Assignment: Cannot convert // from `GLib.SList' to `GLib.SList?' GLib.SList emojis = m_category_to_emojis_dict.lookup(category).copy_deep( GLib.strdup); m_lookup_table.clear(); m_candidate_panel_mode = true; foreach (unowned string emoji in emojis) { IBus.Text text = new IBus.Text.from_string(emoji); m_lookup_table.append_candidate(text); } m_backward = category; } m_annotation = m_lookup_table.get_candidate(0).text; // Restore the cursor position before the special table of // emoji variants is shown. if (m_backward_index >= 0) { m_lookup_table.set_cursor_pos((uint)m_backward_index); m_backward_index = -1; } } private void show_emoji_variants(GLib.SList? emojis) { m_backward_index = (int)m_lookup_table.get_cursor_pos(); m_lookup_table.clear(); foreach (unowned string emoji in emojis) { IBus.Text text = new IBus.Text.from_string(emoji); m_lookup_table.append_candidate(text); } } private void show_unicode_blocks() { // Do not call remove_all_children() to work adjustment.clamp_page() // with PageUp/Down. // After show_candidate_panel() is called, m_category_active_index // is saved for Escape key but m_list_box is null by // remove_all_children(). if (m_category_active_index >= 0 && m_list_box != null) { var row = m_list_box.get_row_at_index(m_category_active_index); m_list_box.select_row(row); return; } if (m_category_active_index < 0) m_category_active_index = 0; m_show_unicode = true; if (m_default_window_width == 0 && m_default_window_height == 0) get_size(out m_default_window_width, out m_default_window_height); remove_all_children(); set_fixed_size(); EPaddedLabelBox label = new EPaddedLabelBox(_("Bring back emoji choice"), Gtk.Align.CENTER, TravelDirection.BACKWARD); Gtk.Button button = new Gtk.Button(); button.add(label); m_vbox.add(button); button.show_all(); button.button_press_event.connect((w, e) => { m_category_active_index = -1; m_show_unicode = false; hide_candidate_panel(); show_all(); return true; }); m_scrolled_window = new EScrolledWindow(); m_vbox.add(m_scrolled_window); Gtk.Viewport viewport = new Gtk.Viewport(null, null); m_scrolled_window.add(viewport); m_list_box = new EListBox(); viewport.add(m_list_box); Gtk.Adjustment adjustment = m_scrolled_window.get_vadjustment(); m_list_box.set_adjustment(adjustment); m_list_box.row_activated.connect((box, gtkrow) => { m_category_active_index = gtkrow.get_index(); EBoxRow row = gtkrow as EBoxRow; show_unicode_for_block(row.text); show_candidate_panel(); }); uint n = 0; foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { string name = block.get_name(); string caption = "U+%08X".printf(block.get_start()); EBoxRow row = new EBoxRow(name); EPaddedLabelBox widget = new EPaddedLabelBox(_(name), Gtk.Align.CENTER, TravelDirection.NONE, caption); row.add(widget); m_list_box.add(row); if (n++ == m_category_active_index) { m_list_box.select_row(row); } } set_size_request(-1, m_default_window_height + 100); m_scrolled_window.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); m_scrolled_window.show_all(); if (m_category_active_index == -1) m_list_box.unselect_all(); m_list_box.invalidate_filter(); m_list_box.set_selection_mode(Gtk.SelectionMode.SINGLE); Gtk.ListBoxRow row = m_list_box.get_row_at_index((int)n - 1); // If clamp_page() would be called without the allocation signal, // the jumping page could be failed when returns from // show_unicode_for_block() with Escape key. row.size_allocate.connect((w, a) => { clamp_page(); }); } private void show_unicode_for_block(string block_name) { unichar start = 0; unichar end = 0; foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { string name = block.get_name(); if (block_name == name) { start = block.get_start(); end = block.get_end(); } } m_lookup_table.clear(); m_candidate_panel_mode = true; for (unichar ch = start; ch < end; ch++) { unowned IBus.UnicodeData? data = m_unicode_to_data_dict.lookup(ch); if (data == null) continue; IBus.Text text = new IBus.Text.from_unichar(ch); m_lookup_table.append_candidate(text); } m_backward = block_name; if (m_lookup_table.get_number_of_candidates() > 0) m_annotation = m_lookup_table.get_candidate(0).text; } private void show_arrow_buttons() { Gtk.Button next_button = new Gtk.Button(); next_button.clicked.connect(() => { m_lookup_table.page_down(); show_candidate_panel(); }); next_button.set_image(new Gtk.Image.from_icon_name( "go-down", Gtk.IconSize.MENU)); next_button.set_relief(Gtk.ReliefStyle.NONE); next_button.set_tooltip_text(_("Page Down")); Gtk.Button prev_button = new Gtk.Button(); prev_button.clicked.connect(() => { m_lookup_table.page_up(); show_candidate_panel(); }); prev_button.set_image(new Gtk.Image.from_icon_name( "go-up", Gtk.IconSize.MENU)); prev_button.set_relief(Gtk.ReliefStyle.NONE); prev_button.set_tooltip_text(_("Page Up")); var menu = new GLib.Menu(); menu.append(_("Show emoji variants"), "win.variant"); menu.append(_("Close"), "win.close"); var menu_button = new Gtk.MenuButton(); menu_button.set_direction(Gtk.ArrowType.NONE); menu_button.set_valign(Gtk.Align.CENTER); menu_button.set_menu_model(menu); menu_button.set_relief(Gtk.ReliefStyle.NONE); menu_button.set_tooltip_text(_("Menu")); IBus.Text text = this.get_title_text(); Pango.AttrList attrs = get_pango_attr_list_from_ibus_text(text); Gtk.Label title_label = new Gtk.Label(text.get_text()); title_label.set_attributes(attrs); Gtk.Button? warning_button = null; if (m_warning_message != "") { warning_button = new Gtk.Button(); warning_button.set_tooltip_text( _("Click to view a warning message")); warning_button.set_image(new Gtk.Image.from_icon_name( "dialog-warning", Gtk.IconSize.MENU)); warning_button.set_relief(Gtk.ReliefStyle.NONE); warning_button.clicked.connect(() => { Gtk.Label warning_label = new Gtk.Label(m_warning_message); warning_label.set_line_wrap(true); warning_label.set_max_width_chars(40); Gtk.Popover popover = new Gtk.Popover(warning_button); popover.add(warning_label); popover.show_all(); popover.popup(); }); } Gtk.Box buttons_hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); Gtk.Label state_label = new Gtk.Label(null); state_label.set_size_request(10, -1); state_label.set_halign(Gtk.Align.CENTER); state_label.set_valign(Gtk.Align.CENTER); buttons_hbox.pack_start(state_label, false, true, 0); buttons_hbox.pack_start(prev_button, false, false, 0); buttons_hbox.pack_start(next_button, false, false, 0); buttons_hbox.pack_start(title_label, false, false, 0); if (warning_button != null) buttons_hbox.pack_start(warning_button, false, false, 0); buttons_hbox.pack_end(menu_button, false, false, 0); m_vbox.pack_start(buttons_hbox, false, false, 0); buttons_hbox.show_all(); } private void show_unicode_progress_bar() { m_unicode_progress_bar = new Gtk.ProgressBar(); m_unicode_progress_bar.set_ellipsize(Pango.EllipsizeMode.MIDDLE); m_unicode_progress_bar.set_halign(Gtk.Align.CENTER); m_unicode_progress_bar.set_valign(Gtk.Align.CENTER); m_vbox.add(m_unicode_progress_bar); m_unicode_progress_bar.show(); var hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 5); hbox.set_halign(Gtk.Align.CENTER); hbox.set_valign(Gtk.Align.CENTER); m_vbox.add(hbox); var label = new Gtk.Label(_("Loading a Unicode dictionary:")); hbox.pack_start(label, false, true, 0); m_unicode_percent_label = new Gtk.Label(""); hbox.pack_start(m_unicode_percent_label, false, true, 0); hbox.show_all(); m_unicode_progress_object.deserialize_unicode.connect((i, n) => { m_unicode_percent = (double)i / n; }); if (m_unicode_progress_id > 0) { GLib.Source.remove(m_unicode_progress_id); } m_unicode_progress_id = GLib.Timeout.add(100, () => { m_unicode_progress_id = 0; m_unicode_progress_bar.set_fraction(m_unicode_percent); m_unicode_percent_label.set_text( "%.0f%%\n".printf(m_unicode_percent * 100)); m_unicode_progress_bar.show(); m_unicode_percent_label.show(); if (m_loaded_unicode) { show_candidate_panel(); } return !m_loaded_unicode; }); } private static string? check_unicode_point(string annotation) { string unicode_point = null; // Add "0x" because uint64.ascii_strtoull() is not accessible // and need to use uint64.parse() var buff = new GLib.StringBuilder("0x"); var retval = new GLib.StringBuilder(); for (int i = 0; i < annotation.char_count(); i++) { unichar ch = annotation.get_char(i); if (ch == 0) return null; if (ch.isspace()) { unichar code = (unichar)uint64.parse(buff.str); buff.assign("0x"); if (!code.validate()) return null; retval.append(code.to_string()); continue; } if (!ch.isxdigit()) return null; buff.append_unichar(ch); } unichar code = (unichar)uint64.parse(buff.str); if (!code.validate()) return null; retval.append(code.to_string()); unicode_point = retval.str; if (unicode_point == null) return null; return unicode_point; } private static GLib.SList? lookup_emojis_from_annotation(string annotation) { GLib.SList? total_emojis = null; unowned GLib.SList? sub_emojis = null; unowned GLib.SList? sub_exact_unicodes = null; unowned GLib.SList? sub_unicodes = null; int length = annotation.length; if (m_has_partial_match && length >= m_partial_match_length) { GLib.SList? sorted_emojis = null; foreach (unowned string key in m_annotation_to_emojis_dict.get_keys()) { if (key.length < length) continue; bool matched = false; switch(m_partial_match_condition) { case 0: if (key.has_prefix(annotation)) matched = true; break; case 1: if (key.has_suffix(annotation)) matched = true; break; case 2: if (key.index_of(annotation) >= 0) matched = true; break; default: break; } if (!matched) continue; sub_emojis = m_annotation_to_emojis_dict.lookup(key); foreach (unowned string emoji in sub_emojis) { if (total_emojis.find_custom(emoji, GLib.strcmp) == null) { sorted_emojis.insert_sorted(emoji, GLib.strcmp); } } } foreach (string emoji in sorted_emojis) { if (total_emojis.find_custom(emoji, GLib.strcmp) == null) { total_emojis.append(emoji); } } } else { sub_emojis = m_annotation_to_emojis_dict.lookup(annotation); foreach (unowned string emoji in sub_emojis) total_emojis.append(emoji); } sub_exact_unicodes = m_name_to_unicodes_dict.lookup(annotation); foreach (unichar code in sub_exact_unicodes) { string ch = code.to_string(); if (total_emojis.find_custom(ch, GLib.strcmp) == null) { total_emojis.append(ch); } } if (length >= m_partial_match_length) { GLib.SList? sorted_unicodes = null; foreach (unowned string key in m_name_to_unicodes_dict.get_keys()) { bool matched = false; if (key.index_of(annotation) >= 0) matched = true; if (!matched) continue; sub_unicodes = m_name_to_unicodes_dict.lookup(key); foreach (unichar code in sub_unicodes) { string ch = code.to_string(); if (sorted_unicodes.find_custom(ch, GLib.strcmp) == null) { sorted_unicodes.insert_sorted(ch, GLib.strcmp); } } } foreach (string ch in sorted_unicodes) { if (total_emojis.find_custom(ch, GLib.strcmp) == null) { total_emojis.append(ch); } } } return total_emojis; } private void update_candidate_window() { string annotation = m_annotation; if (annotation.length == 0) { m_backward = null; return; } m_lookup_table.clear(); m_category_active_index = -1; if (annotation.length > m_emoji_max_seq_len) { return; } string? unicode_point = check_unicode_point(annotation); GLib.SList? total_emojis = null; if (annotation.ascii_casecmp("history") == 0) { for (int i = 0; i < m_favorites.length; i++) { total_emojis.append(m_favorites[i].dup()); } } if (total_emojis == null) total_emojis = lookup_emojis_from_annotation(annotation); if (total_emojis == null) { /* Users can type title strings against lower case. * E.g. "Smile" against "smile" * But the dictionary has the case sensitive annotations. * E.g. ":D" and ":q" * So need to call lookup_emojis_from_annotation() twice. */ annotation = annotation.down(); total_emojis = lookup_emojis_from_annotation(annotation); } if (total_emojis == null && unicode_point == null) { return; } if (unicode_point != null) { IBus.Text text = new IBus.Text.from_string(unicode_point); m_lookup_table.append_candidate(text); } foreach (unowned string emoji in total_emojis) { IBus.Text text = new IBus.Text.from_string(emoji); m_lookup_table.append_candidate(text); } m_candidate_panel_is_visible = (m_lookup_table.get_number_of_candidates() > 0) ? true : false; m_candidate_panel_mode = true; } private void update_category_list() { // Always update m_lookup_table even if the contents are same // because m_category_active_index needs to be kept after // bring back this API from show_emoji_for_category(). reset_window_mode(); m_lookup_table.clear(); IBus.Text text; if (m_favorites.length > 0) { text = new IBus.Text.from_string(EMOJI_CATEGORY_FAVORITES); m_lookup_table.append_candidate(text); } GLib.List categories = m_category_to_emojis_dict.get_keys(); // FIXME: How to cast GLib.CompareFunc to strcmp? categories.sort((a, b) => { if (a == EMOJI_CATEGORY_OTHERS && b != EMOJI_CATEGORY_OTHERS) return 1; else if (a != EMOJI_CATEGORY_OTHERS && b == EMOJI_CATEGORY_OTHERS) return -1; return GLib.strcmp(_(a), _(b)); }); foreach (unowned string category in categories) { // "Others" category includes next unicode chars and fonts do not // support the base and varints yet. if (category == EMOJI_CATEGORY_OTHERS) continue; text = new IBus.Text.from_string(category); m_lookup_table.append_candidate(text); } if (m_unicode_block_list.length() > 0) { text = new IBus.Text.from_string(EMOJI_CATEGORY_UNICODE); m_lookup_table.append_candidate(text); } // Do not set m_category_active_index to 0 here so that // show_category_list() handles it. } private void update_unicode_blocks() { // Always update m_lookup_table even if the contents are same // because m_category_active_index needs to be kept after // bring back this API from show_emoji_for_category(). reset_window_mode(); m_lookup_table.clear(); m_show_unicode = true; foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { string name = block.get_name(); IBus.Text text = new IBus.Text.from_string(name); m_lookup_table.append_candidate(text); } // Do not set m_category_active_index to 0 here so that // show_unicode_blocks() handles it. } private void show_code_point_description(string text) { EPaddedLabelBox widget_code = new EPaddedLabelBox( _("Code point: %s").printf(utf8_code_point(text)), Gtk.Align.START); m_vbox.add(widget_code); widget_code.show_all(); if (m_emoji_to_emoji_variants_dict.lookup(text) != null) { EPaddedLabelBox widget_has_variant = new EPaddedLabelBox( _("Has emoji variants"), Gtk.Align.START); m_vbox.add(widget_has_variant); widget_has_variant.show_all(); } } private void show_candidate_panel() { remove_all_children(); set_fixed_size(); if (m_emoji_font_changed) { set_css_data(); m_emoji_font_changed = false; } uint page_size = m_lookup_table.get_page_size(); uint ncandidates = m_lookup_table.get_number_of_candidates(); uint cursor = m_lookup_table.get_cursor_pos(); uint page_start_pos = cursor / page_size * page_size; uint page_end_pos = uint.min(page_start_pos + page_size, ncandidates); Gtk.Button? backward_button = null; if (m_backward != null) { string backward_desc = _(m_backward); EPaddedLabelBox label = new EPaddedLabelBox(backward_desc, Gtk.Align.CENTER, TravelDirection.BACKWARD); backward_button = new Gtk.Button(); backward_button.add(label); backward_button.button_press_event.connect((w, e) => { // Bring back to emoji candidate panel in case // m_show_emoji_variant is enabled and shows variants. if (m_backward_index >= 0 && m_backward != null) { show_emoji_for_category(m_backward); show_candidate_panel(); } else { hide_candidate_panel(); show_all(); } return true; }); } EGrid grid = new EGrid(); int n = 0; for (uint i = page_start_pos; i < page_end_pos; i++) { string text = m_lookup_table.get_candidate(i).text; bool has_variant = (m_emoji_to_emoji_variants_dict.lookup(text) != null); Gtk.Label label; // If 'i' is the cursor position, use the selected color. // If the emoji has emoji variants, use the gold color. // Otherwise the white color. if (i == cursor) { label = new ESelectedLabel(text) as Gtk.Label; } else if (m_show_emoji_variant && has_variant && m_backward_index < 0) { label = new EGoldLabel(text) as Gtk.Label; } else { label = new EWhiteLabel(text) as Gtk.Label; } if (text.char_count() > 2) { string font_family = m_emoji_font_family; int font_size = m_emoji_font_size - 2; string emoji_font = "%s %d".printf(font_family, font_size); string markup = "%s". printf(emoji_font, utf8_entity(text)); label.set_markup(markup); } label.set_halign(Gtk.Align.FILL); label.set_valign(Gtk.Align.FILL); Gtk.EventBox candidate_ebox = new Gtk.EventBox(); candidate_ebox.add_events(Gdk.EventMask.POINTER_MOTION_MASK); candidate_ebox.add(label); // Make a copy of i to workaround a bug in vala. // https://bugzilla.gnome.org/show_bug.cgi?id=628336 uint index = i; candidate_ebox.button_press_event.connect((w, e) => { candidate_clicked(index, e.button, e.state); return true; }); candidate_ebox.motion_notify_event.connect((e) => { // m_enter_notify_enable is added because // enter_notify_event conflicts with keyboard operations. if (!m_enter_notify_enable) return false; if (m_lookup_table.get_cursor_pos() == index) return false; #if VALA_0_24 Gdk.EventMotion pe = e; #else Gdk.EventMotion *pe = &e; #endif if (m_mouse_x == pe.x_root && m_mouse_y == pe.y_root) return false; m_mouse_x = pe.x_root; m_mouse_y = pe.y_root; m_lookup_table.set_cursor_pos(index); if (m_entry_notify_show_id > 0 && GLib.MainContext.default().find_source_by_id( m_entry_notify_show_id) != null) { GLib.Source.remove(m_entry_notify_show_id); } // If timeout is not added, memory leak happens and // button_press_event signal does not work above. m_entry_notify_show_id = GLib.Timeout.add(100, () => { show_candidate_panel(); return false; }); return false; }); grid.attach(candidate_ebox, n % (int)EMOJI_GRID_PAGE, n / (int)EMOJI_GRID_PAGE, 1, 1); n++; m_candidates += label; } m_candidate_panel_is_visible = true; if (!m_is_up_side_down) { show_arrow_buttons(); if (backward_button != null) { m_vbox.add(backward_button); backward_button.show_all(); } if (n > 0) { m_vbox.add(grid); grid.show_all(); show_description(); } if (!m_loaded_unicode) show_unicode_progress_bar(); } else { if (!m_loaded_unicode) show_unicode_progress_bar(); if (n > 0) { show_description(); m_vbox.add(grid); grid.show_all(); } if (backward_button != null) { m_vbox.add(backward_button); backward_button.show_all(); } show_arrow_buttons(); } } private void show_description() { uint cursor = m_lookup_table.get_cursor_pos(); string text = m_lookup_table.get_candidate(cursor).text; unowned IBus.EmojiData? data = m_emoji_to_data_dict.lookup(text); if (data != null) { show_emoji_description(data, text); return; } if (text.char_count() <= 1) { unichar code = text.get_char(); unowned IBus.UnicodeData? udata = m_unicode_to_data_dict.lookup(code); if (udata != null) { show_unicode_description(udata, text); return; } } EPaddedLabelBox widget = new EPaddedLabelBox( _("Description: %s").printf(_("None")), Gtk.Align.START); m_vbox.add(widget); widget.show_all(); show_code_point_description(text); } private void show_emoji_description(IBus.EmojiData data, string text) { unowned string description = data.get_description(); { EPaddedLabelBox widget = new EPaddedLabelBox( _("Description: %s").printf(description), Gtk.Align.START); m_vbox.add(widget); widget.show_all(); } GLib.SList annotations = data.get_annotations().copy_deep(GLib.strdup); var buff = new GLib.StringBuilder(); int i = 0; foreach (unowned string annotation in annotations) { if (i++ == 0) buff.append_printf(_("Annotations: %s"), annotation); else buff.append_printf(" | %s", annotation); if (buff.str.char_count() > 30) { EPaddedLabelBox widget = new EPaddedLabelBox(buff.str, Gtk.Align.START); m_vbox.add(widget); widget.show_all(); buff.erase(); } } if (buff.str != "") { EPaddedLabelBox widget = new EPaddedLabelBox(buff.str, Gtk.Align.START); m_vbox.add(widget); widget.show_all(); } show_code_point_description(text); } private void show_unicode_description(IBus.UnicodeData data, string text) { unowned string name = data.get_name(); { EPaddedLabelBox widget = new EPaddedLabelBox( _("Name: %s").printf(name), Gtk.Align.START); m_vbox.add(widget); widget.show_all(); } unowned string alias = data.get_alias(); { EPaddedLabelBox widget = new EPaddedLabelBox( _("Alias: %s").printf(alias), Gtk.Align.START); m_vbox.add(widget); widget.show_all(); } show_code_point_description(text); } private void hide_candidate_panel() { hide(); m_enter_notify_enable = true; m_annotation = ""; // Call remove_all_children() instead of show_category_list() // so that show_category_list do not remove children with // PageUp/PageDown. remove_all_children(); if (m_show_unicode) update_unicode_blocks(); else update_category_list(); } private void enter_notify_disable_with_timer() { // Enable keyboard operation and disable mouse operation. m_enter_notify_enable = false; if (m_entry_notify_disable_id > 0) { GLib.Source.remove(m_entry_notify_disable_id); } // Bring back the mouse operation after a timeout. m_entry_notify_show_id = GLib.Timeout.add(100, () => { m_enter_notify_enable = true; return false; }); } private void candidate_panel_cursor_down() { enter_notify_disable_with_timer(); uint ncandidates = m_lookup_table.get_number_of_candidates(); uint cursor = m_lookup_table.get_cursor_pos(); if ((cursor + EMOJI_GRID_PAGE) < ncandidates) { m_lookup_table.set_cursor_pos(cursor + EMOJI_GRID_PAGE); } else if (cursor % EMOJI_GRID_PAGE < ncandidates) { m_lookup_table.set_cursor_pos(cursor % EMOJI_GRID_PAGE); } else { m_lookup_table.set_cursor_pos(0); } } private void candidate_panel_cursor_up() { enter_notify_disable_with_timer(); int ncandidates = (int)m_lookup_table.get_number_of_candidates(); int cursor = (int)m_lookup_table.get_cursor_pos(); int highest_pos = ((ncandidates - 1)/ (int)EMOJI_GRID_PAGE * (int)EMOJI_GRID_PAGE) + (cursor % (int)EMOJI_GRID_PAGE); if ((cursor - (int)EMOJI_GRID_PAGE) >= 0) { m_lookup_table.set_cursor_pos(cursor - (int)EMOJI_GRID_PAGE); } else if (highest_pos < ncandidates) { m_lookup_table.set_cursor_pos(highest_pos); } else { m_lookup_table.set_cursor_pos(0); } } private int get_page_num() { if (m_category_active_index < 0) m_category_active_index = 0; var row = m_list_box.get_row_at_index(m_category_active_index); Gtk.Allocation alloc = { 0, 0, 0, 0 }; row.get_allocation(out alloc); var adjustment = m_scrolled_window.get_vadjustment(); var page_size = (int)adjustment.get_page_size(); int page_num = page_size / alloc.height; page_num += ((page_size % alloc.height) > 0) ? 1 : 0; return page_num; } private bool category_list_cursor_move(uint keyval) { return_val_if_fail (m_list_box != null, false); GLib.List list = m_list_box.get_children(); int length = (int)list.length(); if (length == 0) return false; switch(keyval) { case Gdk.Key.Down: if (++m_category_active_index == length) m_category_active_index = 0; break; case Gdk.Key.Up: if (--m_category_active_index < 0) m_category_active_index = length - 1; break; case Gdk.Key.Home: m_category_active_index = 0; break; case Gdk.Key.End: m_category_active_index = length - 1; break; case Gdk.Key.Page_Down: var page_num = get_page_num(); if (m_category_active_index + 1 == length) m_category_active_index = 0; else if (m_category_active_index + page_num >= length) m_category_active_index = length - 1; else m_category_active_index += page_num; break; case Gdk.Key.Page_Up: var page_num = get_page_num(); if (m_category_active_index == 0) m_category_active_index = length - 1; else if (m_category_active_index - page_num < 0) m_category_active_index = 0; else m_category_active_index -= page_num; break; } var row = m_list_box.get_selected_row(); if (row != null) m_list_box.unselect_row(row); clamp_page (); return true; } public bool has_variants(uint index, bool need_commit_signal) { if (index >= m_lookup_table.get_number_of_candidates()) return false; string text = m_lookup_table.get_candidate(index).text; unowned GLib.SList? emojis = m_emoji_to_emoji_variants_dict.lookup(text); if (m_show_emoji_variant && emojis != null && m_backward_index < 0) { show_emoji_variants(emojis); return true; } m_result = text; if (need_commit_signal) commit_text(text); return false; } public bool key_press_cursor_horizontal(uint keyval, uint modifiers) { assert (keyval == Gdk.Key.Left || keyval == Gdk.Key.Right); if (m_candidate_panel_mode && m_lookup_table.get_number_of_candidates() > 0) { enter_notify_disable_with_timer(); if (keyval == Gdk.Key.Left) m_lookup_table.cursor_up(); else if (keyval == Gdk.Key.Right) m_lookup_table.cursor_down(); } else { // For Gdk.Key.f and Gdk.Key.b if (keyval == Gdk.Key.Left) keyval = Gdk.Key.Up; else if (keyval == Gdk.Key.Right) keyval = Gdk.Key.Down; return category_list_cursor_move(keyval); } return true; } public bool key_press_cursor_vertical(uint keyval, uint modifiers) { assert (keyval == Gdk.Key.Down || keyval == Gdk.Key.Up || keyval == Gdk.Key.Page_Down || keyval == Gdk.Key.Page_Up); if ((modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { if (keyval == Gdk.Key.Down) keyval = Gdk.Key.Page_Down; else if (keyval == Gdk.Key.Up) keyval = Gdk.Key.Page_Up; } if ((m_candidate_panel_is_visible || m_annotation.length > 0) && m_lookup_table.get_number_of_candidates() > 0) { switch (keyval) { case Gdk.Key.Down: candidate_panel_cursor_down(); break; case Gdk.Key.Up: candidate_panel_cursor_up(); break; case Gdk.Key.Page_Down: enter_notify_disable_with_timer(); m_lookup_table.page_down(); break; case Gdk.Key.Page_Up: enter_notify_disable_with_timer(); m_lookup_table.page_up(); break; } } else { return category_list_cursor_move(keyval); } return true; } public bool key_press_cursor_home_end(uint keyval, uint modifiers) { assert (keyval == Gdk.Key.Home || keyval == Gdk.Key.End); uint ncandidates = m_lookup_table.get_number_of_candidates(); if (m_candidate_panel_mode && ncandidates > 0) { enter_notify_disable_with_timer(); if (keyval == Gdk.Key.Home) { m_lookup_table.set_cursor_pos(0); } else if (keyval == Gdk.Key.End) { m_lookup_table.set_cursor_pos(ncandidates - 1); } return true; } return category_list_cursor_move(keyval); } public bool key_press_escape() { if (m_show_unicode) { if (!m_candidate_panel_is_visible) { m_show_unicode = false; m_category_active_index = -1; } hide_candidate_panel(); return true; } else if (m_backward_index >= 0 && m_backward != null) { show_emoji_for_category(m_backward); return true; } else if (m_candidate_panel_is_visible && m_backward != null) { hide_candidate_panel(); return true; } hide(); if (m_candidate_panel_mode && m_lookup_table.get_number_of_candidates() > 0) { // Call remove_all_children() instead of show_category_list() // so that show_category_list do not remove children with // PageUp/PageDown. remove_all_children(); } cancel(); return false; } public bool key_press_enter(bool need_commit_signal) { if (m_candidate_panel_is_visible) { uint index = m_lookup_table.get_cursor_pos(); return has_variants(index, need_commit_signal); } else if (m_category_active_index >= 0) { Gtk.ListBoxRow gtkrow = m_list_box.get_selected_row(); EBoxRow row = gtkrow as EBoxRow; if (m_show_unicode) show_unicode_for_block(row.text); else show_emoji_for_category(row.text); } return true; } private Gdk.Rectangle get_monitor_geometry() { Gdk.Rectangle monitor_area = { 0, }; // Use get_monitor_geometry() instead of get_monitor_area(). // get_monitor_area() excludes docks, but the lookup window should be // shown over them. #if VALA_0_34 Gdk.Monitor monitor = Gdk.Display.get_default().get_monitor_at_point( m_cursor_location.x, m_cursor_location.y); monitor_area = monitor.get_geometry(); #else Gdk.Screen screen = Gdk.Screen.get_default(); int monitor_num = screen.get_monitor_at_point(m_cursor_location.x, m_cursor_location.y); screen.get_monitor_geometry(monitor_num, out monitor_area); #endif return monitor_area; } 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; get_allocation(out allocation); Gdk.Point window_right_bottom = { cursor_right_bottom.x + allocation.width, cursor_right_bottom.y + allocation.height }; Gdk.Rectangle monitor_area = get_monitor_geometry(); int monitor_right = monitor_area.x + monitor_area.width; int monitor_bottom = monitor_area.y + monitor_area.height; int x, y; if (window_right_bottom.x > monitor_right) x = monitor_right - allocation.width; else x = cursor_right_bottom.x; if (x < 0) x = 0; bool changed = false; // Do not up side down frequently. // The first pos does not show the lookup table yet but the // preedit only and the second pos shows the lookup table. if (m_lookup_table.get_cursor_pos() != 1) { if (m_is_up_side_down) y = m_cursor_location.y - allocation.height; else y = cursor_right_bottom.y; } else if (window_right_bottom.y > monitor_bottom) { y = m_cursor_location.y - allocation.height; // Do not up side down in Wayland if (m_input_context_path == "") { changed = (m_is_up_side_down == false); m_is_up_side_down = true; } else { changed = (m_is_up_side_down == true); m_is_up_side_down = false; } } else { y = cursor_right_bottom.y; changed = (m_is_up_side_down == true); m_is_up_side_down = false; } if (y < 0) y = 0; move(x, y); if (changed) { if (m_redraw_window_id > 0) GLib.Source.remove(m_redraw_window_id); m_redraw_window_id = GLib.Timeout.add(100, () => { m_redraw_window_id = 0; this.show_all(); return false; }); } } #if 0 private void check_action_variant_cb(Gtk.MenuItem item) { Gtk.CheckMenuItem check = item as Gtk.CheckMenuItem; m_show_emoji_variant = check.get_active(); // Redraw emoji candidate panel for m_show_emoji_variant if (m_candidate_panel_is_visible) { // DOTO: queue_draw() does not effect at the real time. this.queue_draw(); } } #else private void check_action_variant_cb(GLib.SimpleAction action, GLib.Variant? parameter) { m_show_emoji_variant = !action.get_state().get_boolean(); action.set_state(new GLib.Variant.boolean(m_show_emoji_variant)); // Redraw emoji candidate panel for m_show_emoji_variant if (m_candidate_panel_is_visible) { // DOTO: queue_draw() does not effect at the real time. this.queue_draw(); } } #endif private void action_close_cb(GLib.SimpleAction action, GLib.Variant? parameter) { candidate_clicked(0, BUTTON_CLOSE_BUTTON, 0); } public static void update_favorite_emoji_dict() { if (m_emoji_to_data_dict == null || m_annotation_to_emojis_dict == null) return; for(int i = 0; i < m_favorites.length; i++) { var favorite = m_favorites[i]; string? annotation = ""; if (i < m_favorite_annotations.length) { annotation = m_favorite_annotations[i]; } if (annotation == "") continue; unowned IBus.EmojiData? data = m_emoji_to_data_dict.lookup(favorite); if (data == null) { GLib.SList new_annotations = new GLib.SList(); new_annotations.append(annotation); IBus.EmojiData new_data = GLib.Object.new( typeof(IBus.EmojiData), "emoji", favorite.dup(), "annotations", new_annotations, "description", annotation.dup() ) as IBus.EmojiData; m_emoji_to_data_dict.insert(favorite, new_data); } else { GLib.SList annotations = data.get_annotations().copy_deep(GLib.strdup); if (annotations.find_custom(annotation, GLib.strcmp) == null) { annotations.append(annotation); data.set_annotations(annotations.copy_deep(GLib.strdup)); } } unowned GLib.SList emojis = m_annotation_to_emojis_dict.lookup(annotation); if (emojis.find_custom(favorite, GLib.strcmp) == null) { emojis.append(favorite); m_annotation_to_emojis_dict.replace( annotation, emojis.copy_deep(GLib.strdup)); } } } public void set_annotation(string annotation) { m_annotation = annotation; remove_all_children(); if (annotation.length > 0) { update_candidate_window(); } else { if (m_show_unicode) update_unicode_blocks(); else update_category_list(); } } public IBus.LookupTable get_one_dimension_lookup_table() { var lookup_table = new IBus.LookupTable(EMOJI_GRID_PAGE, 0, true, true); uint i = 0; for (; i < m_lookup_table.get_number_of_candidates(); i++) { IBus.Text text = new IBus.Text.from_string(""); text.copy(m_lookup_table.get_candidate(i)); lookup_table.append_candidate(text); } if (i > 0) lookup_table.set_cursor_pos(m_lookup_table.get_cursor_pos()); return lookup_table; } public uint get_number_of_candidates() { return m_lookup_table.get_number_of_candidates(); } public uint get_cursor_pos() { return m_lookup_table.get_cursor_pos(); } public void set_cursor_pos(uint cursor_pos) { m_lookup_table.set_cursor_pos(cursor_pos); } public string get_current_candidate() { // If category_list mode, do not show the category name on preedit. // If candidate_panel mode, the first space key does not show the // lookup table but the first candidate is available on preedit. if (!m_candidate_panel_mode) return ""; uint cursor = m_lookup_table.get_cursor_pos(); return m_lookup_table.get_candidate(cursor).text; } public IBus.Text get_title_text() { var language = _(IBus.get_language_name(m_current_lang_id)); uint ncandidates = this.get_number_of_candidates(); string main_title = _("Emoji Choice"); if (m_show_unicode) main_title = _("Unicode Choice"); var text = new IBus.Text.from_string( "%s (%s) (%u / %u)".printf( main_title, language, this.get_cursor_pos() + 1, ncandidates)); int char_count = text.text.char_count(); int start_index = -1; unowned string title = text.text; for (int i = 0; i < char_count; i++) { if (title.has_prefix(language)) { start_index = i; break; } title = title.next_char(); } if (start_index >= 0) { var attr = new IBus.Attribute( IBus.AttrType.FOREGROUND, 0x808080, start_index, start_index + language.char_count()); var attrs = new IBus.AttrList(); attrs.append(attr); text.set_attributes(attrs); } return text; } #if 0 public GLib.SList? get_candidates() { if (m_annotation.length == 0) { return null; } if (m_annotation.length > m_emoji_max_seq_len) { return null; } string? unicode_point = check_unicode_point(m_annotation); GLib.SList? total_emojis = lookup_emojis_from_annotation(m_annotation); if (total_emojis == null) { /* Users can type title strings against lower case. * E.g. "Smile" against "smile" * But the dictionary has the case sensitive annotations. * E.g. ":D" and ":q" * So need to call lookup_emojis_from_annotation() twice. */ string lower_annotation = m_annotation.down(); total_emojis = lookup_emojis_from_annotation(lower_annotation); } if (unicode_point != null) total_emojis.prepend(unicode_point); return total_emojis; } #endif #if 0 public string run(string input_context_path, Gdk.Event event) { assert (m_loop == null); m_is_running = true; m_input_context_path = input_context_path; m_candidate_panel_is_visible = false; m_result = null; m_enter_notify_enable = true; m_show_unicode = false; /* Let gtk recalculate the window size. */ resize(1, 1); show_category_list(); show_all(); /* Some window managers, e.g. MATE, GNOME, Plasma desktops, * does not give the keyboard focus when Emojier is lauched * twice with Ctrl-Shift-e via XIEvent, if present_with_time() * is not applied. * But XFCE4 desktop does not effect this bug. * Seems this is caused by the window manager's focus stealing * prevention logic: * https://mail.gnome.org/archives/gtk-devel-list/2017-May/msg00026.html */ present_centralize(event); Gdk.Device pointer; #if VALA_0_34 Gdk.Seat seat = event.get_seat(); if (seat == null) { var display = get_display(); seat = display.get_default_seat(); } pointer = seat.get_pointer(); #else Gdk.Device device = event.get_device(); if (device == null) { var display = get_display(); device = display.list_devices().data; } if (device.get_source() == Gdk.InputSource.KEYBOARD) pointer = device.get_associated_device(); else pointer = device; #endif pointer.get_position_double(null, out m_mouse_x, out m_mouse_y); m_loop = new GLib.MainLoop(); m_loop.run(); m_loop = null; hide(); // Make sure the switcher is hidden before returning from this function. while (Gtk.events_pending()) Gtk.main_iteration(); m_is_running = false; return m_result; } #endif /* override virtual functions */ public override void show_all() { base.show_all(); if (m_candidate_panel_mode) show_candidate_panel(); else if (m_show_unicode) show_unicode_blocks(); else show_category_list(); } public override void hide() { base.hide(); m_candidate_panel_is_visible = false; // m_candidate_panel_mode is not false in when you type something // during enabling the candidate panel. if (m_redraw_window_id > 0) { GLib.Source.remove(m_redraw_window_id); m_redraw_window_id = 0; } if (m_unicode_progress_id > 0) { GLib.Source.remove(m_unicode_progress_id); m_unicode_progress_id = 0; } } public override bool key_press_event(Gdk.EventKey event) { uint keyval = event.keyval; uint modifiers = event.state; /* Need to handle events in key_press_event() instead of * key_release_event() so that this can know if the event * was handled by IME. */ switch (keyval) { case Gdk.Key.Escape: if (key_press_escape()) show_all(); return true; case Gdk.Key.Return: case Gdk.Key.KP_Enter: if (key_press_enter(true)) show_all(); else hide(); return true; case Gdk.Key.space: case Gdk.Key.KP_Space: if (m_candidate_panel_is_visible) { enter_notify_disable_with_timer(); m_lookup_table.cursor_down(); show_candidate_panel(); } else { category_list_cursor_move(Gdk.Key.Down); show_all(); } return true; case Gdk.Key.Right: case Gdk.Key.KP_Right: key_press_cursor_horizontal(Gdk.Key.Right, modifiers); show_all(); return true; case Gdk.Key.Left: case Gdk.Key.KP_Left: key_press_cursor_horizontal(Gdk.Key.Left, modifiers); show_all(); return true; case Gdk.Key.Down: case Gdk.Key.KP_Down: key_press_cursor_vertical(Gdk.Key.Down, modifiers); show_all(); return true; case Gdk.Key.Up: case Gdk.Key.KP_Up: key_press_cursor_vertical(Gdk.Key.Up, modifiers); show_all(); return true; case Gdk.Key.Page_Down: case Gdk.Key.KP_Page_Down: key_press_cursor_vertical(Gdk.Key.Page_Down, modifiers); show_all(); return true; case Gdk.Key.Page_Up: case Gdk.Key.KP_Page_Up: key_press_cursor_vertical(Gdk.Key.Page_Up, modifiers); show_all(); return true; case Gdk.Key.Home: case Gdk.Key.KP_Home: key_press_cursor_home_end(Gdk.Key.Home, modifiers); show_all(); return true; case Gdk.Key.End: case Gdk.Key.KP_End: key_press_cursor_home_end(Gdk.Key.End, modifiers); show_all(); return true; } if ((modifiers & Gdk.ModifierType.CONTROL_MASK) != 0) { switch (keyval) { case Gdk.Key.f: key_press_cursor_horizontal(Gdk.Key.Right, modifiers); show_all(); return true; case Gdk.Key.b: key_press_cursor_horizontal(Gdk.Key.Left, modifiers); show_all(); return true; case Gdk.Key.n: case Gdk.Key.N: key_press_cursor_vertical(Gdk.Key.Down, modifiers); show_all(); return true; case Gdk.Key.p: case Gdk.Key.P: key_press_cursor_vertical(Gdk.Key.Up, modifiers); show_all(); return true; case Gdk.Key.h: key_press_cursor_home_end(Gdk.Key.Home, modifiers); show_all(); return true; case Gdk.Key.e: key_press_cursor_home_end(Gdk.Key.End, modifiers); show_all(); return true; case Gdk.Key.C: case Gdk.Key.c: if ((modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { if (m_candidate_panel_is_visible) { uint index = m_lookup_table.get_cursor_pos(); var text = m_lookup_table.get_candidate(index).text; Gtk.Clipboard clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD); clipboard.set_text(text, -1); clipboard.store(); return true; } } break; } return false; } return true; } public bool is_running() { return m_is_running; } public string get_input_context_path() { return m_input_context_path; } public void set_input_context_path(string input_context_path) { m_input_context_path = input_context_path; if (input_context_path == "") { m_warning_message = _("" + "Failed to get the current text application. " + "Please re-focus your application. E.g. Press Esc key " + "several times to release the emoji typing mode, " + "click your desktop and click your text application again." ); } else { m_warning_message = ""; } } public string get_selected_string() { return m_result; } private void reset_window_mode() { m_backward_index = -1; m_backward = null; m_candidate_panel_is_visible = false; m_candidate_panel_mode = false; // Do not clear m_lookup_table to work with space key later. } public void reset() { reset_window_mode(); m_input_context_path = ""; m_result = null; m_category_active_index = -1; m_show_unicode = false; } public void present_centralize(Gdk.Event event) { Gtk.Allocation allocation; get_allocation(out allocation); Gdk.Rectangle monitor_area; Gdk.Rectangle work_area; #if VALA_0_34 Gdk.Display display = Gdk.Display.get_default(); Gdk.Monitor monitor = display.get_monitor_at_window(this.get_window()); monitor_area = monitor.get_geometry(); work_area = monitor.get_workarea(); #else Gdk.Screen screen = Gdk.Screen.get_default(); int monitor_num = screen.get_monitor_at_window(this.get_window()); screen.get_monitor_geometry(monitor_num, out monitor_area); work_area = screen.get_monitor_workarea(monitor_num); #endif int x = (monitor_area.x + monitor_area.width - allocation.width)/2; int y = (monitor_area.y + monitor_area.height - allocation.height)/2; // Do not hide a bottom panel in XFCE4 if (work_area.y < y) y = work_area.y; // FIXME: move() does not work in Wayland move(x, y); uint32 timestamp = event.get_time(); present_with_time(timestamp); } 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; } public bool is_candidate_panel_mode() { return m_candidate_panel_mode; } public static bool has_loaded_emoji_dict() { if (m_emoji_to_data_dict == null) return false; GLib.List keys = m_emoji_to_data_dict.get_keys(); if (keys.length() == 0) return false; return true; } public static void set_annotation_lang(string? lang) { if (lang == null || lang == "") lang = "en"; if (m_current_lang_id == lang) return; m_current_lang_id = lang; reload_emoji_dict(); } public static string get_annotation_lang() { return m_current_lang_id; } public static void set_emoji_font(string? emoji_font) { return_if_fail(emoji_font != null && emoji_font != ""); Pango.FontDescription font_desc = Pango.FontDescription.from_string(emoji_font); string font_family = font_desc.get_family(); if (font_family != null) { m_emoji_font_family = font_family; m_emoji_font_changed = true; } int font_size = font_desc.get_size() / Pango.SCALE; if (font_size != 0) { m_emoji_font_size = font_size; m_emoji_font_changed = true; } } public static void set_partial_match(bool has_partial_match) { m_has_partial_match = has_partial_match; } public static void set_partial_match_length(int length) { if (length < 1) return; m_partial_match_length = length; } public static void set_partial_match_condition(int condition) { if (condition < 0) return; m_partial_match_condition = condition; } public static void set_favorites(string[]? unowned_favorites, string[]? unowned_favorite_annotations) { m_favorites = {}; m_favorite_annotations = {}; for(int i = 0; i < unowned_favorites.length; i++) { string? favorite = unowned_favorites[i]; // Avoid gsetting value error by manual setting GLib.return_if_fail(favorite != null); m_favorites += favorite; } for(int i = 0; i < unowned_favorite_annotations.length; i++) { string? favorite_annotation = unowned_favorite_annotations[i]; GLib.return_if_fail(favorite_annotation != null); m_favorite_annotations += favorite_annotation; } update_favorite_emoji_dict(); } private static GLib.Object get_load_progress_object() { if (m_unicode_progress_object == null) m_unicode_progress_object = new LoadProgressObject(); return m_unicode_progress_object as GLib.Object; } public static void load_unicode_dict() { if (m_unicode_block_list.length() == 0) make_unicode_block_dict(); if (m_name_to_unicodes_dict.size() == 0) make_unicode_name_dict(IBusEmojier.get_load_progress_object()); } } ibus-1.5.22/bindings/vala/ibus-1.0.deps0000644000000000000000000000001013623750431014260 00000000000000gio-2.0 ibus-1.5.22/bindings/vala/ibus-emoji-dialog-1.0.deps0000644000000000000000000000002113623750431016620 00000000000000gtk+-3.0 gio-2.0 ibus-1.5.22/bindings/vala/Makefile.in0000644000000000000000000012700113623751263014230 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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-2016 Peng Huang # Copyright (c) 2017-2018 Takao Fujiwara # Copyright (c) 2007-2017 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_EMOJI_DICT_TRUE@am__append_1 = --define=EMOJI_DICT @ENABLE_EMOJI_DICT_TRUE@am__append_2 = $(libibus_emoji_dialog) @ENABLE_EMOJI_DICT_TRUE@am__append_3 = $(libibus_emoji_dialog_1_0_la_SOURCES) @ENABLE_EMOJI_DICT_TRUE@am__append_4 = $(libibus_emoji_dialog_1_0_la_SOURCES) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@am__append_5 = $(ibus_emoji_dialog_gir) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@am__append_6 = $(ibus_emoji_dialog_gir) \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ $(ibus_emoji_dialog_vapi) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@am__append_7 = $(ibus_emoji_dialog_gir) \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ $(ibus_emoji_dialog_vapi) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@am__append_8 = $(ibus_emoji_dialog_gir) \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ $(ibus_emoji_dialog_vapi) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@am__append_9 = $(ibus_emoji_dialog_gir) \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ $(ibus_emoji_dialog_vapi) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@am__append_10 = $(ibus_emoji_dialog_vapi) subdir = bindings/vala ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 = LTLIBRARIES = $(noinst_LTLIBRARIES) @ENABLE_EMOJI_DICT_TRUE@libibus_emoji_dialog_1_0_la_DEPENDENCIES = \ @ENABLE_EMOJI_DICT_TRUE@ $(libibus) am__libibus_emoji_dialog_1_0_la_SOURCES_DIST = candidatearea.vala \ emojier.vala iconwidget.vala pango.vala separator.vala @ENABLE_EMOJI_DICT_TRUE@am_libibus_emoji_dialog_1_0_la_OBJECTS = libibus_emoji_dialog_1_0_la-candidatearea.lo \ @ENABLE_EMOJI_DICT_TRUE@ libibus_emoji_dialog_1_0_la-emojier.lo \ @ENABLE_EMOJI_DICT_TRUE@ libibus_emoji_dialog_1_0_la-iconwidget.lo \ @ENABLE_EMOJI_DICT_TRUE@ libibus_emoji_dialog_1_0_la-pango.lo \ @ENABLE_EMOJI_DICT_TRUE@ libibus_emoji_dialog_1_0_la-separator.lo libibus_emoji_dialog_1_0_la_OBJECTS = \ $(am_libibus_emoji_dialog_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_emoji_dialog_1_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(libibus_emoji_dialog_1_0_la_CFLAGS) $(CFLAGS) \ $(libibus_emoji_dialog_1_0_la_LDFLAGS) $(LDFLAGS) -o $@ @ENABLE_EMOJI_DICT_TRUE@am_libibus_emoji_dialog_1_0_la_rpath = 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__maybe_remake_depfiles = depfiles am__depfiles_remade = \ ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-candidatearea.Plo \ ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-emojier.Plo \ ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-iconwidget.Plo \ ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-pango.Plo \ ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-separator.Plo 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 = $(libibus_emoji_dialog_1_0_la_SOURCES) DIST_SOURCES = $(am__libibus_emoji_dialog_1_0_la_SOURCES_DIST) 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 = $(noinst_DATA) $(vapi_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)/libibus_emoji_dialog_1_0_la_vala.stamp \ $(top_srcdir)/depcomp candidatearea.c emojier.c iconwidget.c \ pango.c separator.c DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la noinst_LTLIBRARIES = $(am__append_2) noinst_DATA = $(am__append_6) INTROSPECTION_GIRS = $(am__append_5) girdir = $(datadir)/gir-1.0 AM_CPPFLAGS = \ -I$(top_srcdir)/src \ -I$(top_builddir)/src \ -include $(CONFIG_HEADER) \ $(NULL) AM_CFLAGS = \ -DG_LOG_DOMAIN=\"IBUS\" \ -DPKGDATADIR=\"$(pkgdatadir)\" \ -DIBUS_DISABLE_DEPRECATED \ -Wno-unused-variable \ -Wno-unused-but-set-variable \ -Wno-unused-function \ $(NULL) AM_VALAFLAGS = --vapidir=$(builddir) --vapidir=$(srcdir) --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_1) vapi_deps = \ IBus-1.0.metadata \ $(top_builddir)/src/IBus-1.0.gir \ $(NULL) ibus_vapi = ibus-1.0.vapi VAPIGEN_VAPIS = $(ibus_vapi) $(am__append_10) 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 = $(ibus_vapi) $(ibus_vapi:.vapi=.deps) MAINTAINERCLEANFILES = $(ibus_vapi) $(am__append_3) $(am__append_8) DISTCLEANFILES = $(ibus_vapi) $(am__append_4) $(am__append_9) EXTRA_DIST = $(ibus_vapi) IBus-1.0.metadata IBus-1.0-custom.vala \ IBusEmojiDialog-1.0.metadata ibus-1.0.deps \ ibus-emoji-dialog-1.0.deps config.vapi gdk-wayland.vapi \ xi.vapi $(NULL) $(am__append_7) @ENABLE_EMOJI_DICT_TRUE@libibus_emoji_dialog = libibus-emoji-dialog-1.0.la @ENABLE_EMOJI_DICT_TRUE@libibus_emoji_dialog_1_0_la_SOURCES = \ @ENABLE_EMOJI_DICT_TRUE@ candidatearea.vala \ @ENABLE_EMOJI_DICT_TRUE@ emojier.vala \ @ENABLE_EMOJI_DICT_TRUE@ iconwidget.vala \ @ENABLE_EMOJI_DICT_TRUE@ pango.vala \ @ENABLE_EMOJI_DICT_TRUE@ separator.vala \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@libibus_emoji_dialog_1_0_la_CFLAGS = \ @ENABLE_EMOJI_DICT_TRUE@ $(AM_CFLAGS) \ @ENABLE_EMOJI_DICT_TRUE@ @GLIB2_CFLAGS@ \ @ENABLE_EMOJI_DICT_TRUE@ @GIO2_CFLAGS@ \ @ENABLE_EMOJI_DICT_TRUE@ @GTHREAD2_CFLAGS@ \ @ENABLE_EMOJI_DICT_TRUE@ @GTK3_CFLAGS@ \ @ENABLE_EMOJI_DICT_TRUE@ @X11_CFLAGS@ \ @ENABLE_EMOJI_DICT_TRUE@ -DBINDIR=\"$(bindir)\" \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@libibus_emoji_dialog_1_0_la_LIBADD = \ @ENABLE_EMOJI_DICT_TRUE@ @GLIB2_LIBS@ \ @ENABLE_EMOJI_DICT_TRUE@ @GIO2_LIBS@ \ @ENABLE_EMOJI_DICT_TRUE@ @GTHREAD2_LIBS@ \ @ENABLE_EMOJI_DICT_TRUE@ @GTK3_LIBS@ \ @ENABLE_EMOJI_DICT_TRUE@ @X11_LIBS@ \ @ENABLE_EMOJI_DICT_TRUE@ -lXi \ @ENABLE_EMOJI_DICT_TRUE@ $(libibus) \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@libibus_emoji_dialog_1_0_la_LDFLAGS = \ @ENABLE_EMOJI_DICT_TRUE@ -no-undefined \ @ENABLE_EMOJI_DICT_TRUE@ -export-symbols-regex "ibus_.*" \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@INTROSPECTION_SCANNER_ARGS = @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@INTROSPECTION_COMPILER_ARGS = \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ --includedir=$(srcdir) \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ --includedir=. \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ --includedir=$(top_srcdir)/src \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@emoji_headers = \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ $(top_srcdir)/ui/gtk3/ibusemojidialog.h \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@IBusEmojiDialog_1_0_gir_SCANNERFLAGS = \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ --pkg-export=ibus-1.0 \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ --pkg=gtk+-3.0 \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ $(IBUS_GIR_SCANNERFLAGS) \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@IBusEmojiDialog_1_0_gir_INCLUDES = Gtk-3.0 GLib-2.0 GObject-2.0 Gio-2.0 @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@IBusEmojiDialog_1_0_gir_LIBS = $(libibus_emoji_dialog) $(libibus) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@IBusEmojiDialog_1_0_gir_FILES = $(emoji_headers) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@IBusEmojiDialog_1_0_gir_CFLAGS = \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ -I$(srcdir) \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ -I$(builddir) \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ -I$(top_srcdir)/src \ @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ibus_emoji_dialog_gir = IBusEmojiDialog-1.0.gir @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ibus_emoji_dialog_vapi = ibus-emoji-dialog-1.0.vapi @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ibus_emoji_dialog_1_0_vapi_DEPS = gtk+-3.0 gio-2.0 @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ibus_emoji_dialog_1_0_vapi_METADATADIRS = $(srcdir) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ibus_emoji_dialog_1_0_vapi_FILES = IBusEmojiDialog-1.0.gir 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 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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}; \ } libibus-emoji-dialog-1.0.la: $(libibus_emoji_dialog_1_0_la_OBJECTS) $(libibus_emoji_dialog_1_0_la_DEPENDENCIES) $(EXTRA_libibus_emoji_dialog_1_0_la_DEPENDENCIES) $(AM_V_CCLD)$(libibus_emoji_dialog_1_0_la_LINK) $(am_libibus_emoji_dialog_1_0_la_rpath) $(libibus_emoji_dialog_1_0_la_OBJECTS) $(libibus_emoji_dialog_1_0_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libibus_emoji_dialog_1_0_la-candidatearea.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libibus_emoji_dialog_1_0_la-emojier.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libibus_emoji_dialog_1_0_la-iconwidget.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libibus_emoji_dialog_1_0_la-pango.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libibus_emoji_dialog_1_0_la-separator.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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 $@ $< libibus_emoji_dialog_1_0_la-candidatearea.lo: candidatearea.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) $(libibus_emoji_dialog_1_0_la_CFLAGS) $(CFLAGS) -MT libibus_emoji_dialog_1_0_la-candidatearea.lo -MD -MP -MF $(DEPDIR)/libibus_emoji_dialog_1_0_la-candidatearea.Tpo -c -o libibus_emoji_dialog_1_0_la-candidatearea.lo `test -f 'candidatearea.c' || echo '$(srcdir)/'`candidatearea.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libibus_emoji_dialog_1_0_la-candidatearea.Tpo $(DEPDIR)/libibus_emoji_dialog_1_0_la-candidatearea.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='candidatearea.c' object='libibus_emoji_dialog_1_0_la-candidatearea.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) $(libibus_emoji_dialog_1_0_la_CFLAGS) $(CFLAGS) -c -o libibus_emoji_dialog_1_0_la-candidatearea.lo `test -f 'candidatearea.c' || echo '$(srcdir)/'`candidatearea.c libibus_emoji_dialog_1_0_la-emojier.lo: emojier.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) $(libibus_emoji_dialog_1_0_la_CFLAGS) $(CFLAGS) -MT libibus_emoji_dialog_1_0_la-emojier.lo -MD -MP -MF $(DEPDIR)/libibus_emoji_dialog_1_0_la-emojier.Tpo -c -o libibus_emoji_dialog_1_0_la-emojier.lo `test -f 'emojier.c' || echo '$(srcdir)/'`emojier.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libibus_emoji_dialog_1_0_la-emojier.Tpo $(DEPDIR)/libibus_emoji_dialog_1_0_la-emojier.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='emojier.c' object='libibus_emoji_dialog_1_0_la-emojier.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) $(libibus_emoji_dialog_1_0_la_CFLAGS) $(CFLAGS) -c -o libibus_emoji_dialog_1_0_la-emojier.lo `test -f 'emojier.c' || echo '$(srcdir)/'`emojier.c libibus_emoji_dialog_1_0_la-iconwidget.lo: iconwidget.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) $(libibus_emoji_dialog_1_0_la_CFLAGS) $(CFLAGS) -MT libibus_emoji_dialog_1_0_la-iconwidget.lo -MD -MP -MF $(DEPDIR)/libibus_emoji_dialog_1_0_la-iconwidget.Tpo -c -o libibus_emoji_dialog_1_0_la-iconwidget.lo `test -f 'iconwidget.c' || echo '$(srcdir)/'`iconwidget.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libibus_emoji_dialog_1_0_la-iconwidget.Tpo $(DEPDIR)/libibus_emoji_dialog_1_0_la-iconwidget.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='iconwidget.c' object='libibus_emoji_dialog_1_0_la-iconwidget.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) $(libibus_emoji_dialog_1_0_la_CFLAGS) $(CFLAGS) -c -o libibus_emoji_dialog_1_0_la-iconwidget.lo `test -f 'iconwidget.c' || echo '$(srcdir)/'`iconwidget.c libibus_emoji_dialog_1_0_la-pango.lo: pango.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) $(libibus_emoji_dialog_1_0_la_CFLAGS) $(CFLAGS) -MT libibus_emoji_dialog_1_0_la-pango.lo -MD -MP -MF $(DEPDIR)/libibus_emoji_dialog_1_0_la-pango.Tpo -c -o libibus_emoji_dialog_1_0_la-pango.lo `test -f 'pango.c' || echo '$(srcdir)/'`pango.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libibus_emoji_dialog_1_0_la-pango.Tpo $(DEPDIR)/libibus_emoji_dialog_1_0_la-pango.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pango.c' object='libibus_emoji_dialog_1_0_la-pango.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) $(libibus_emoji_dialog_1_0_la_CFLAGS) $(CFLAGS) -c -o libibus_emoji_dialog_1_0_la-pango.lo `test -f 'pango.c' || echo '$(srcdir)/'`pango.c libibus_emoji_dialog_1_0_la-separator.lo: separator.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) $(libibus_emoji_dialog_1_0_la_CFLAGS) $(CFLAGS) -MT libibus_emoji_dialog_1_0_la-separator.lo -MD -MP -MF $(DEPDIR)/libibus_emoji_dialog_1_0_la-separator.Tpo -c -o libibus_emoji_dialog_1_0_la-separator.lo `test -f 'separator.c' || echo '$(srcdir)/'`separator.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libibus_emoji_dialog_1_0_la-separator.Tpo $(DEPDIR)/libibus_emoji_dialog_1_0_la-separator.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='separator.c' object='libibus_emoji_dialog_1_0_la-separator.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) $(libibus_emoji_dialog_1_0_la_CFLAGS) $(CFLAGS) -c -o libibus_emoji_dialog_1_0_la-separator.lo `test -f 'separator.c' || echo '$(srcdir)/'`separator.c $(srcdir)/candidatearea.c: $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp; \ fi $(srcdir)/emojier.c: $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp; \ fi $(srcdir)/iconwidget.c: $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp; \ fi $(srcdir)/pango.c: $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp; \ fi $(srcdir)/separator.c: $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp @if test -f $@; then :; else rm -f $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp; fi @if test -f $@; then :; else \ $(MAKE) $(AM_MAKEFLAGS) $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp; \ fi $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp: candidatearea.vala emojier.vala iconwidget.vala pango.vala separator.vala $(AM_V_at)rm -f $@ && echo stamp > $@-t $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) $(VALAFLAGS) -C candidatearea.vala emojier.vala iconwidget.vala pango.vala separator.vala $(AM_V_at)mv -f $@-t $@ 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) 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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) $(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) -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." -rm -f $(srcdir)/candidatearea.c -rm -f $(srcdir)/emojier.c -rm -f $(srcdir)/iconwidget.c -rm -f $(srcdir)/libibus_emoji_dialog_1_0_la_vala.stamp -rm -f $(srcdir)/pango.c -rm -f $(srcdir)/separator.c -rm -f candidatearea.c -rm -f emojier.c -rm -f iconwidget.c -rm -f pango.c -rm -f separator.c -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-candidatearea.Plo -rm -f ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-emojier.Plo -rm -f ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-iconwidget.Plo -rm -f ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-pango.Plo -rm -f ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-separator.Plo -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-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 ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-candidatearea.Plo -rm -f ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-emojier.Plo -rm -f ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-iconwidget.Plo -rm -f ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-pango.Plo -rm -f ./$(DEPDIR)/libibus_emoji_dialog_1_0_la-separator.Plo -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-vapiDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles 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 \ install-vapiDATA 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-vapiDATA .PRECIOUS: Makefile -include $(VAPIGEN_MAKEFILE) ibus-1.0.vapi: $(vapi_deps) # per file setting is needed to avoid conflicting LN_S by calling # duplicated times in parallel make @ENABLE_EMOJI_DICT_TRUE@%.vala: $(ibus_vapi) @ENABLE_EMOJI_DICT_TRUE@ if test ! -f $@ ; then \ @ENABLE_EMOJI_DICT_TRUE@ $(LN_S) $(top_srcdir)/ui/gtk3/$@ .; \ @ENABLE_EMOJI_DICT_TRUE@ fi; @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@-include $(INTROSPECTION_MAKEFILE) @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@IBusEmojiDialog-1.0.gir: $(libibus_emoji_dialog) Makefile @ENABLE_EMOJI_DICT_TRUE@@HAVE_INTROSPECTION_TRUE@ibus-emoji-dialog-1.0.vapi: $(ibus_emoji_dialog_gir) IBusEmojiDialog-1.0.metadata #end of HAVE_INTROSPECTION # end of ENABLE_EMOJI_DICT -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.22/bindings/vala/iconwidget.c0000644000000000000000000006347113623751565014502 00000000000000/* iconwidget.c generated by valac 0.47.91, 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 * Copyright(c) 2018 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 #define TYPE_THEMED_RGBA (themed_rgba_get_type ()) #define THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THEMED_RGBA, ThemedRGBA)) #define THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THEMED_RGBA, ThemedRGBAClass)) #define IS_THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THEMED_RGBA)) #define IS_THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THEMED_RGBA)) #define THEMED_RGBA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THEMED_RGBA, ThemedRGBAClass)) typedef struct _ThemedRGBA ThemedRGBA; typedef struct _ThemedRGBAClass ThemedRGBAClass; typedef struct _ThemedRGBAPrivate ThemedRGBAPrivate; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _gtk_widget_path_unref0(var) ((var == NULL) ? NULL : (var = (gtk_widget_path_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) typedef struct _ParamSpecThemedRGBA ParamSpecThemedRGBA; #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; enum { ICON_WIDGET_0_PROPERTY, ICON_WIDGET_NUM_PROPERTIES }; static GParamSpec* icon_widget_properties[ICON_WIDGET_NUM_PROPERTIES]; #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) struct _ThemedRGBA { GTypeInstance parent_instance; volatile int ref_count; ThemedRGBAPrivate * priv; }; struct _ThemedRGBAClass { GTypeClass parent_class; void (*finalize) (ThemedRGBA *self); }; struct _ThemedRGBAPrivate { GdkRGBA* _normal_fg; GdkRGBA* _normal_bg; GdkRGBA* _selected_fg; GdkRGBA* _selected_bg; GtkStyleContext* m_style_context; }; struct _ParamSpecThemedRGBA { GParamSpec parent_instance; }; struct _IconWidget { GtkImage parent_instance; IconWidgetPrivate * priv; }; struct _IconWidgetClass { GtkImageClass parent_class; }; static gint ThemedRGBA_private_offset; static gpointer themed_rgba_parent_class = NULL; static gpointer icon_widget_parent_class = NULL; gpointer themed_rgba_ref (gpointer instance); void themed_rgba_unref (gpointer instance); GParamSpec* param_spec_themed_rgba (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_themed_rgba (GValue* value, gpointer v_object); void value_take_themed_rgba (GValue* value, gpointer v_object); gpointer value_get_themed_rgba (const GValue* value); GType themed_rgba_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (ThemedRGBA, themed_rgba_unref) static void themed_rgba_reset_rgba (ThemedRGBA* self); ThemedRGBA* themed_rgba_new (GtkWidget* widget); ThemedRGBA* themed_rgba_construct (GType object_type, GtkWidget* widget); void themed_rgba_set_normal_fg (ThemedRGBA* self, GdkRGBA* value); void themed_rgba_set_normal_bg (ThemedRGBA* self, GdkRGBA* value); void themed_rgba_set_selected_fg (ThemedRGBA* self, GdkRGBA* value); void themed_rgba_set_selected_bg (ThemedRGBA* self, GdkRGBA* value); static void themed_rgba_get_rgba (ThemedRGBA* self); static void __lambda4_ (ThemedRGBA* self); static void ___lambda4__gtk_style_context_changed (GtkStyleContext* _sender, gpointer self); GdkRGBA* themed_rgba_get_normal_fg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_normal_bg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_fg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_bg (ThemedRGBA* self); static void themed_rgba_finalize (ThemedRGBA * obj); static GType themed_rgba_get_type_once (void); GType icon_widget_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IconWidget, g_object_unref) 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 GType icon_widget_get_type_once (void); static inline gpointer themed_rgba_get_instance_private (ThemedRGBA* self) { return G_STRUCT_MEMBER_P (self, ThemedRGBA_private_offset); } static void __lambda4_ (ThemedRGBA* self) { themed_rgba_get_rgba (self); } static void ___lambda4__gtk_style_context_changed (GtkStyleContext* _sender, gpointer self) { __lambda4_ ((ThemedRGBA*) self); } ThemedRGBA* themed_rgba_construct (GType object_type, GtkWidget* widget) { ThemedRGBA* self = NULL; GtkWidgetPath* widget_path = NULL; GtkWidgetPath* _tmp0_; GtkStyleContext* _tmp1_; GtkStyleContext* _tmp2_; GtkStyleContext* _tmp3_; GtkStyleContext* _tmp4_; GtkStyleContext* _tmp5_; GtkStyleContext* _tmp6_; g_return_val_if_fail (widget != NULL, NULL); self = (ThemedRGBA*) g_type_create_instance (object_type); themed_rgba_set_normal_fg (self, NULL); themed_rgba_set_normal_bg (self, NULL); themed_rgba_set_selected_fg (self, NULL); themed_rgba_set_selected_bg (self, NULL); _tmp0_ = gtk_widget_path_new (); widget_path = _tmp0_; gtk_widget_path_append_type (widget_path, gtk_text_view_get_type ()); _tmp1_ = gtk_style_context_new (); _g_object_unref0 (self->priv->m_style_context); self->priv->m_style_context = _tmp1_; _tmp2_ = self->priv->m_style_context; gtk_style_context_set_path (_tmp2_, widget_path); _tmp3_ = self->priv->m_style_context; gtk_style_context_add_class (_tmp3_, GTK_STYLE_CLASS_VIEW); _tmp4_ = self->priv->m_style_context; _tmp5_ = gtk_widget_get_style_context (widget); gtk_style_context_set_parent (_tmp4_, _tmp5_); themed_rgba_get_rgba (self); _tmp6_ = self->priv->m_style_context; g_signal_connect (_tmp6_, "changed", (GCallback) ___lambda4__gtk_style_context_changed, self); _gtk_widget_path_unref0 (widget_path); return self; } ThemedRGBA* themed_rgba_new (GtkWidget* widget) { return themed_rgba_construct (TYPE_THEMED_RGBA, widget); } static void themed_rgba_reset_rgba (ThemedRGBA* self) { GdkRGBA* _tmp0_; GdkRGBA* _tmp2_; GdkRGBA* _tmp4_; GdkRGBA* _tmp6_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->_normal_fg; if (_tmp0_ != NULL) { GdkRGBA* _tmp1_; _tmp1_ = self->priv->_normal_fg; gdk_rgba_free (_tmp1_); themed_rgba_set_normal_fg (self, NULL); } _tmp2_ = self->priv->_normal_bg; if (_tmp2_ != NULL) { GdkRGBA* _tmp3_; _tmp3_ = self->priv->_normal_bg; gdk_rgba_free (_tmp3_); themed_rgba_set_normal_bg (self, NULL); } _tmp4_ = self->priv->_selected_fg; if (_tmp4_ != NULL) { GdkRGBA* _tmp5_; _tmp5_ = self->priv->_selected_fg; gdk_rgba_free (_tmp5_); themed_rgba_set_selected_fg (self, NULL); } _tmp6_ = self->priv->_selected_bg; if (_tmp6_ != NULL) { GdkRGBA* _tmp7_; _tmp7_ = self->priv->_selected_bg; gdk_rgba_free (_tmp7_); themed_rgba_set_selected_bg (self, NULL); } } static void themed_rgba_get_rgba (ThemedRGBA* self) { GdkRGBA* normal_fg = NULL; GdkRGBA* normal_bg = NULL; GdkRGBA* selected_fg = NULL; GdkRGBA* selected_bg = NULL; GtkStyleContext* _tmp0_; GdkRGBA* _tmp1_ = NULL; GtkStyleContext* _tmp2_; GdkRGBA* _tmp3_ = NULL; gchar* bg_prop = NULL; gchar* _tmp4_; GtkStyleContext* _tmp5_; const gchar* _tmp6_; GdkRGBA* _tmp7_ = NULL; GtkStyleContext* _tmp8_; const gchar* _tmp9_; GdkRGBA* _tmp10_ = NULL; gboolean _tmp11_ = FALSE; gboolean _tmp12_ = FALSE; gboolean _tmp13_ = FALSE; GdkRGBA* _tmp14_; GdkRGBA* _tmp15_; GdkRGBA* _tmp29_; GdkRGBA* _tmp30_; GdkRGBA* _tmp31_; GdkRGBA* _tmp32_; g_return_if_fail (self != NULL); themed_rgba_reset_rgba (self); normal_fg = NULL; normal_bg = NULL; selected_fg = NULL; selected_bg = NULL; _tmp0_ = self->priv->m_style_context; gtk_style_context_get (_tmp0_, GTK_STATE_FLAG_NORMAL, "color", &_tmp1_, NULL); normal_fg = _tmp1_; _tmp2_ = self->priv->m_style_context; gtk_style_context_get (_tmp2_, GTK_STATE_FLAG_SELECTED, "color", &_tmp3_, NULL); selected_fg = _tmp3_; _tmp4_ = g_strdup ("background-color"); bg_prop = _tmp4_; _tmp5_ = self->priv->m_style_context; _tmp6_ = bg_prop; gtk_style_context_get (_tmp5_, GTK_STATE_FLAG_NORMAL, _tmp6_, &_tmp7_, NULL); normal_bg = _tmp7_; _tmp8_ = self->priv->m_style_context; _tmp9_ = bg_prop; gtk_style_context_get (_tmp8_, GTK_STATE_FLAG_SELECTED, _tmp9_, &_tmp10_, NULL); selected_bg = _tmp10_; _tmp14_ = normal_bg; _tmp15_ = selected_bg; if ((*_tmp14_).red == (*_tmp15_).red) { GdkRGBA* _tmp16_; GdkRGBA* _tmp17_; _tmp16_ = normal_bg; _tmp17_ = selected_bg; _tmp13_ = (*_tmp16_).green == (*_tmp17_).green; } else { _tmp13_ = FALSE; } if (_tmp13_) { GdkRGBA* _tmp18_; GdkRGBA* _tmp19_; _tmp18_ = normal_bg; _tmp19_ = selected_bg; _tmp12_ = (*_tmp18_).blue == (*_tmp19_).blue; } else { _tmp12_ = FALSE; } if (_tmp12_) { GdkRGBA* _tmp20_; GdkRGBA* _tmp21_; _tmp20_ = normal_bg; _tmp21_ = selected_bg; _tmp11_ = (*_tmp20_).alpha == (*_tmp21_).alpha; } else { _tmp11_ = FALSE; } if (_tmp11_) { gchar* _tmp22_; GtkStyleContext* _tmp23_; const gchar* _tmp24_; GdkRGBA* _tmp25_ = NULL; GtkStyleContext* _tmp26_; const gchar* _tmp27_; GdkRGBA* _tmp28_ = NULL; gdk_rgba_free (normal_bg); normal_bg = NULL; gdk_rgba_free (normal_bg); normal_bg = NULL; _tmp22_ = g_strdup ("-gtk-secondary-caret-color"); _g_free0 (bg_prop); bg_prop = _tmp22_; _tmp23_ = self->priv->m_style_context; _tmp24_ = bg_prop; gtk_style_context_get (_tmp23_, GTK_STATE_FLAG_NORMAL, _tmp24_, &_tmp25_, NULL); normal_bg = _tmp25_; _tmp26_ = self->priv->m_style_context; _tmp27_ = bg_prop; gtk_style_context_get (_tmp26_, GTK_STATE_FLAG_SELECTED, _tmp27_, &_tmp28_, NULL); selected_bg = _tmp28_; } _tmp29_ = normal_fg; themed_rgba_set_normal_fg (self, _tmp29_); _tmp30_ = normal_bg; themed_rgba_set_normal_bg (self, _tmp30_); _tmp31_ = selected_fg; themed_rgba_set_selected_fg (self, _tmp31_); _tmp32_ = selected_bg; themed_rgba_set_selected_bg (self, _tmp32_); _g_free0 (bg_prop); } GdkRGBA* themed_rgba_get_normal_fg (ThemedRGBA* self) { GdkRGBA* result; GdkRGBA* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_normal_fg; result = _tmp0_; return result; } void themed_rgba_set_normal_fg (ThemedRGBA* self, GdkRGBA* value) { g_return_if_fail (self != NULL); self->priv->_normal_fg = value; } GdkRGBA* themed_rgba_get_normal_bg (ThemedRGBA* self) { GdkRGBA* result; GdkRGBA* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_normal_bg; result = _tmp0_; return result; } void themed_rgba_set_normal_bg (ThemedRGBA* self, GdkRGBA* value) { g_return_if_fail (self != NULL); self->priv->_normal_bg = value; } GdkRGBA* themed_rgba_get_selected_fg (ThemedRGBA* self) { GdkRGBA* result; GdkRGBA* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_selected_fg; result = _tmp0_; return result; } void themed_rgba_set_selected_fg (ThemedRGBA* self, GdkRGBA* value) { g_return_if_fail (self != NULL); self->priv->_selected_fg = value; } GdkRGBA* themed_rgba_get_selected_bg (ThemedRGBA* self) { GdkRGBA* result; GdkRGBA* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_selected_bg; result = _tmp0_; return result; } void themed_rgba_set_selected_bg (ThemedRGBA* self, GdkRGBA* value) { g_return_if_fail (self != NULL); self->priv->_selected_bg = value; } static void value_themed_rgba_init (GValue* value) { value->data[0].v_pointer = NULL; } static void value_themed_rgba_free_value (GValue* value) { if (value->data[0].v_pointer) { themed_rgba_unref (value->data[0].v_pointer); } } static void value_themed_rgba_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = themed_rgba_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer value_themed_rgba_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* value_themed_rgba_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { ThemedRGBA * 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 = themed_rgba_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* value_themed_rgba_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { ThemedRGBA ** 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 = themed_rgba_ref (value->data[0].v_pointer); } return NULL; } GParamSpec* param_spec_themed_rgba (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { ParamSpecThemedRGBA* spec; g_return_val_if_fail (g_type_is_a (object_type, TYPE_THEMED_RGBA), 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_themed_rgba (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_THEMED_RGBA), NULL); return value->data[0].v_pointer; } void value_set_themed_rgba (GValue* value, gpointer v_object) { ThemedRGBA * old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_THEMED_RGBA)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_THEMED_RGBA)); 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; themed_rgba_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { themed_rgba_unref (old); } } void value_take_themed_rgba (GValue* value, gpointer v_object) { ThemedRGBA * old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_THEMED_RGBA)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_THEMED_RGBA)); 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) { themed_rgba_unref (old); } } static void themed_rgba_class_init (ThemedRGBAClass * klass, gpointer klass_data) { themed_rgba_parent_class = g_type_class_peek_parent (klass); ((ThemedRGBAClass *) klass)->finalize = themed_rgba_finalize; g_type_class_adjust_private_offset (klass, &ThemedRGBA_private_offset); } static void themed_rgba_instance_init (ThemedRGBA * self, gpointer klass) { self->priv = themed_rgba_get_instance_private (self); self->ref_count = 1; } static void themed_rgba_finalize (ThemedRGBA * obj) { ThemedRGBA * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_THEMED_RGBA, ThemedRGBA); g_signal_handlers_destroy (self); themed_rgba_reset_rgba (self); _g_object_unref0 (self->priv->m_style_context); } static GType themed_rgba_get_type_once (void) { static const GTypeValueTable g_define_type_value_table = { value_themed_rgba_init, value_themed_rgba_free_value, value_themed_rgba_copy_value, value_themed_rgba_peek_pointer, "p", value_themed_rgba_collect_value, "p", value_themed_rgba_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (ThemedRGBAClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) themed_rgba_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ThemedRGBA), 0, (GInstanceInitFunc) themed_rgba_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 themed_rgba_type_id; themed_rgba_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ThemedRGBA", &g_define_type_info, &g_define_type_fundamental_info, 0); ThemedRGBA_private_offset = g_type_add_instance_private (themed_rgba_type_id, sizeof (ThemedRGBAPrivate)); return themed_rgba_type_id; } GType themed_rgba_get_type (void) { static volatile gsize themed_rgba_type_id__volatile = 0; if (g_once_init_enter (&themed_rgba_type_id__volatile)) { GType themed_rgba_type_id; themed_rgba_type_id = themed_rgba_get_type_once (); g_once_init_leave (&themed_rgba_type_id__volatile, themed_rgba_type_id); } return themed_rgba_type_id__volatile; } gpointer themed_rgba_ref (gpointer instance) { ThemedRGBA * self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } void themed_rgba_unref (gpointer instance) { ThemedRGBA * self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { THEMED_RGBA_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } /** * 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 _tmp0_; gchar result = '\0'; g_return_val_if_fail (self != NULL, '\0'); _tmp0_ = ((gchar*) self)[index]; result = _tmp0_; 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; gint _tmp0_ = 0; gint _tmp1_ = 0; GdkPixbuf* _tmp17_; gfloat width = 0.0F; GdkPixbuf* _tmp18_; gfloat height = 0.0F; GdkPixbuf* _tmp19_; gfloat _tmp20_ = 0.0F; gfloat scale = 0.0F; GdkPixbuf* _tmp21_; GdkPixbuf* _tmp22_; GdkPixbuf* _tmp23_; GError* _inner_error0_ = NULL; g_return_val_if_fail (icon_name_or_path != NULL, NULL); self = (IconWidget*) g_object_new (object_type, NULL); pixbuf = NULL; gtk_icon_size_lookup (size, &_tmp0_, &_tmp1_); fixed_width = _tmp0_; fixed_height = _tmp1_; { if (string_get (icon_name_or_path, (glong) 0) == '/') { GdkPixbuf* _tmp2_ = NULL; GdkPixbuf* _tmp3_; GdkPixbuf* _tmp4_; _tmp3_ = gdk_pixbuf_new_from_file (icon_name_or_path, &_inner_error0_); _tmp2_ = _tmp3_; if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch0_g_error; } _tmp4_ = _tmp2_; _tmp2_ = NULL; _g_object_unref0 (pixbuf); pixbuf = _tmp4_; _g_object_unref0 (_tmp2_); } else { GtkIconTheme* theme = NULL; GtkIconTheme* _tmp5_; GtkIconTheme* _tmp6_; GdkPixbuf* _tmp7_ = NULL; GtkIconTheme* _tmp8_; GdkPixbuf* _tmp9_; GdkPixbuf* _tmp10_; _tmp5_ = gtk_icon_theme_get_default (); _tmp6_ = _g_object_ref0 (_tmp5_); theme = _tmp6_; _tmp8_ = theme; _tmp9_ = gtk_icon_theme_load_icon (_tmp8_, icon_name_or_path, fixed_width, 0, &_inner_error0_); _tmp7_ = _tmp9_; if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_object_unref0 (theme); goto __catch0_g_error; } _tmp10_ = _tmp7_; _tmp7_ = NULL; _g_object_unref0 (pixbuf); pixbuf = _tmp10_; _g_object_unref0 (_tmp7_); _g_object_unref0 (theme); } } goto __finally0; __catch0_g_error: { GError* e = NULL; e = _inner_error0_; _inner_error0_ = NULL; { GtkIconTheme* theme = NULL; GtkIconTheme* _tmp11_; GtkIconTheme* _tmp12_; GdkPixbuf* _tmp13_ = NULL; GtkIconTheme* _tmp14_; GdkPixbuf* _tmp15_; GdkPixbuf* _tmp16_; _tmp11_ = gtk_icon_theme_get_default (); _tmp12_ = _g_object_ref0 (_tmp11_); theme = _tmp12_; _tmp14_ = theme; _tmp15_ = gtk_icon_theme_load_icon (_tmp14_, "ibus-engine", fixed_width, 0, &_inner_error0_); _tmp13_ = _tmp15_; if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_object_unref0 (theme); goto __catch1_g_error; } _tmp16_ = _tmp13_; _tmp13_ = NULL; _g_object_unref0 (pixbuf); pixbuf = _tmp16_; _g_object_unref0 (_tmp13_); _g_object_unref0 (theme); } goto __finally1; __catch1_g_error: { GError* e = NULL; e = _inner_error0_; _inner_error0_ = NULL; gtk_image_set_from_icon_name ((GtkImage*) self, "image-missing", (GtkIconSize) size); _g_error_free0 (e); _g_error_free0 (e); _g_object_unref0 (pixbuf); return self; } __finally1: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_error_free0 (e); _g_object_unref0 (pixbuf); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return NULL; } _g_error_free0 (e); } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_object_unref0 (pixbuf); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return NULL; } _tmp17_ = pixbuf; if (_tmp17_ == NULL) { _g_object_unref0 (pixbuf); return self; } _tmp18_ = pixbuf; width = (gfloat) gdk_pixbuf_get_width (_tmp18_); _tmp19_ = pixbuf; height = (gfloat) gdk_pixbuf_get_height (_tmp19_); if (width > height) { _tmp20_ = width; } else { _tmp20_ = height; } scale = fixed_width / _tmp20_; width *= scale; height *= scale; _tmp21_ = pixbuf; _tmp22_ = gdk_pixbuf_scale_simple (_tmp21_, (gint) width, (gint) height, GDK_INTERP_BILINEAR); _g_object_unref0 (pixbuf); pixbuf = _tmp22_; _tmp23_ = pixbuf; gtk_image_set_from_pixbuf ((GtkImage*) self, _tmp23_); 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, gpointer klass_data) { icon_widget_parent_class = g_type_class_peek_parent (klass); } static void icon_widget_instance_init (IconWidget * self, gpointer klass) { } static GType icon_widget_get_type_once (void) { 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); return icon_widget_type_id; } 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)) { GType icon_widget_type_id; icon_widget_type_id = icon_widget_get_type_once (); g_once_init_leave (&icon_widget_type_id__volatile, icon_widget_type_id); } return icon_widget_type_id__volatile; } ibus-1.5.22/bindings/vala/iconwidget.vala0000644000000000000000000001353713623750431015170 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2014 Peng Huang * Copyright(c) 2018 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 ThemedRGBA { public Gdk.RGBA *normal_fg { get; set; } public Gdk.RGBA *normal_bg { get; set; } public Gdk.RGBA *selected_fg { get; set; } public Gdk.RGBA *selected_bg { get; set; } private Gtk.StyleContext m_style_context; public ThemedRGBA(Gtk.Widget widget) { this.normal_fg = null; this.normal_bg = null; this.selected_fg = null; this.selected_bg = null; /* Use the color of Gtk.TextView instead of Gtk.Label * because the selected label "color" is not configured * in "Adwaita" theme and the selected label "background-color" * is not configured in "Maia" theme. * https://github.com/ibus/ibus/issues/1871 */ Gtk.WidgetPath widget_path = new Gtk.WidgetPath(); widget_path.append_type(typeof(Gtk.TextView)); m_style_context = new Gtk.StyleContext(); m_style_context.set_path(widget_path); m_style_context.add_class(Gtk.STYLE_CLASS_VIEW); /* "-gtk-secondary-caret-color" value is different * if the parent widget is set in "Menta" theme. */ m_style_context.set_parent(widget.get_style_context()); get_rgba(); m_style_context.changed.connect(() => { get_rgba(); }); } ~ThemedRGBA() { reset_rgba(); } private void reset_rgba() { if (this.normal_fg != null) { this.normal_fg.free(); this.normal_fg = null; } if (this.normal_bg != null) { this.normal_bg.free(); this.normal_bg = null; } if (this.selected_fg != null) { this.selected_fg.free(); this.selected_fg = null; } if (this.selected_bg != null) { this.selected_bg.free(); this.selected_bg = null; } } private void get_rgba() { reset_rgba(); Gdk.RGBA *normal_fg = null; Gdk.RGBA *normal_bg = null; Gdk.RGBA *selected_fg = null; Gdk.RGBA *selected_bg = null; m_style_context.get(Gtk.StateFlags.NORMAL, "color", out normal_fg); m_style_context.get(Gtk.StateFlags.SELECTED, "color", out selected_fg); string bg_prop = "background-color"; m_style_context.get(Gtk.StateFlags.NORMAL, bg_prop, out normal_bg); m_style_context.get(Gtk.StateFlags.SELECTED, bg_prop, out selected_bg); if (normal_bg.red == selected_bg.red && normal_bg.green == selected_bg.green && normal_bg.blue == selected_bg.blue && normal_bg.alpha == selected_bg.alpha) { normal_bg.free(); normal_bg = null; normal_bg.free(); normal_bg = null; bg_prop = "-gtk-secondary-caret-color"; m_style_context.get(Gtk.StateFlags.NORMAL, bg_prop, out normal_bg); m_style_context.get(Gtk.StateFlags.SELECTED, bg_prop, out selected_bg); } this.normal_fg = normal_fg; this.normal_bg = normal_bg; this.selected_fg = selected_fg; this.selected_bg = selected_bg; } } 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.22/bindings/vala/separator.c0000644000000000000000000001422413623751565014336 00000000000000/* separator.c generated by valac 0.47.91, 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 #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; enum { HSEPARATOR_0_PROPERTY, HSEPARATOR_NUM_PROPERTIES }; static GParamSpec* hseparator_properties[HSEPARATOR_NUM_PROPERTIES]; #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; enum { VSEPARATOR_0_PROPERTY, VSEPARATOR_NUM_PROPERTIES }; static GParamSpec* vseparator_properties[VSEPARATOR_NUM_PROPERTIES]; 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (HSeparator, g_object_unref) HSeparator* hseparator_new (void); HSeparator* hseparator_construct (GType object_type); static GType hseparator_get_type_once (void); GType vseparator_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (VSeparator, g_object_unref) VSeparator* vseparator_new (void); VSeparator* vseparator_construct (GType object_type); static GType vseparator_get_type_once (void); 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, gpointer klass_data) { hseparator_parent_class = g_type_class_peek_parent (klass); } static void hseparator_instance_init (HSeparator * self, gpointer klass) { } static GType hseparator_get_type_once (void) { 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); return hseparator_type_id; } GType hseparator_get_type (void) { static volatile gsize hseparator_type_id__volatile = 0; if (g_once_init_enter (&hseparator_type_id__volatile)) { GType hseparator_type_id; hseparator_type_id = hseparator_get_type_once (); 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, gpointer klass_data) { vseparator_parent_class = g_type_class_peek_parent (klass); } static void vseparator_instance_init (VSeparator * self, gpointer klass) { } static GType vseparator_get_type_once (void) { 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); return vseparator_type_id; } GType vseparator_get_type (void) { static volatile gsize vseparator_type_id__volatile = 0; if (g_once_init_enter (&vseparator_type_id__volatile)) { GType vseparator_type_id; vseparator_type_id = vseparator_get_type_once (); g_once_init_leave (&vseparator_type_id__volatile, vseparator_type_id); } return vseparator_type_id__volatile; } ibus-1.5.22/bindings/vala/config.vapi0000644000000000000000000000066113623750431014307 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 LIBEXECDIR; public const string GETTEXT_PACKAGE; public const string LOCALEDIR; } ibus-1.5.22/bindings/vala/xi.vapi0000644000000000000000000000340613623750431013462 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.22/bindings/vala/separator.vala0000644000000000000000000000231113623750431015020 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.22/bindings/vala/ibus-emoji-dialog-1.0.vapi0000644000000000000000000000276713623751573016657 00000000000000/* ibus-emoji-dialog-1.0.vapi generated by vapigen-0.48, do not modify. */ [CCode (cprefix = "IBus", gir_namespace = "IBusEmojiDialog", gir_version = "1.0", lower_case_cprefix = "ibus_")] namespace IBus { [CCode (cheader_filename = "ibusemojidialog.h", type_id = "ibus_emojier_get_type ()")] public class Emojier : Gtk.ApplicationWindow, Atk.Implementor, GLib.ActionGroup, GLib.ActionMap, Gtk.Buildable { [CCode (has_construct_function = false)] public Emojier (); public string get_input_context_path (); public string get_selected_string (); public static bool has_loaded_emoji_dict (); public bool is_running (); public static void load_unicode_dict (); public void present_centralize (Gdk.Event event); public void reset (); public string run (string input_context_path, Gdk.Event event); public static void set_annotation_lang (string lang); public static void set_emoji_font (string emoji_font); public static void set_favorites ([CCode (array_length_cname = "favorites_length", array_length_pos = 1.5)] string[] favorites, [CCode (array_length_cname = "favorite_annotations_length", array_length_pos = 2.1)] string[]? favorite_annotations); public static void set_partial_match (bool has_partial_match); public static void set_partial_match_condition (int condition); public static void set_partial_match_length (int length); public signal void cancel (); public signal void candidate_clicked (uint object, uint p0, uint p1); public signal void commit_text (string object); } } ibus-1.5.22/bindings/vala/IBus-1.0.metadata0000644000000000000000000000003713623750431015016 00000000000000IBus cheader_filename="ibus.h" ibus-1.5.22/bindings/vala/pango.c0000644000000000000000000001566313623751565013452 00000000000000/* pango.c generated by valac 0.47.91, 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 #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) { gchar* _tmp0_; gint result = 0; g_return_val_if_fail (self != NULL, 0); _tmp0_ = g_utf8_offset_to_pointer (self, c); result = (gint) (_tmp0_ - ((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* pango_attrs = NULL; PangoAttrList* _tmp0_; IBusAttrList* attrs = NULL; IBusAttrList* _tmp1_; IBusAttrList* _tmp2_; const gchar* str = NULL; const gchar* _tmp3_; glong nchars = 0L; const gchar* _tmp4_; glong* offsets = NULL; glong* _tmp5_; gint offsets_length1; gint _offsets_size_; IBusAttribute* attr = NULL; gint i = 0; PangoAttrList* result = NULL; g_return_val_if_fail (text != NULL, NULL); _tmp0_ = pango_attr_list_new (); pango_attrs = _tmp0_; _tmp1_ = ibus_text_get_attributes (text); attrs = _tmp1_; _tmp2_ = attrs; if (_tmp2_ == NULL) { result = pango_attrs; return result; } _tmp3_ = ibus_text_get_text (text); str = _tmp3_; _tmp4_ = str; nchars = (glong) g_utf8_strlen (_tmp4_, (gssize) -1); _tmp5_ = g_new0 (glong, nchars + 1); offsets = _tmp5_; offsets_length1 = nchars + 1; _offsets_size_ = offsets_length1; { gint i = 0; i = 0; { gboolean _tmp6_ = FALSE; _tmp6_ = TRUE; while (TRUE) { glong* _tmp8_; gint _tmp8__length1; const gchar* _tmp9_; if (!_tmp6_) { gint _tmp7_; _tmp7_ = i; i = _tmp7_ + 1; } _tmp6_ = FALSE; if (!(((glong) i) <= nchars)) { break; } _tmp8_ = offsets; _tmp8__length1 = offsets_length1; _tmp9_ = str; _tmp8_[i] = (glong) string_index_of_nth_char (_tmp9_, (glong) i); } } } i = 0; while (TRUE) { IBusAttrList* _tmp10_; gint _tmp11_; IBusAttribute* _tmp12_; IBusAttribute* _tmp13_; IBusAttribute* _tmp14_; glong start_index = 0L; IBusAttribute* _tmp15_; glong _tmp16_ = 0L; glong end_index = 0L; IBusAttribute* _tmp21_; glong _tmp22_ = 0L; PangoAttribute* pango_attr = NULL; IBusAttribute* _tmp27_; PangoAttribute* _tmp38_; PangoAttribute* _tmp39_; PangoAttrList* _tmp40_; PangoAttribute* _tmp41_; _tmp10_ = attrs; _tmp11_ = i; i = _tmp11_ + 1; _tmp12_ = ibus_attr_list_get (_tmp10_, (guint) _tmp11_); _tmp13_ = _g_object_ref0 (_tmp12_); _g_object_unref0 (attr); attr = _tmp13_; _tmp14_ = attr; if (_tmp14_ == NULL) { break; } _tmp15_ = attr; start_index = (glong) _tmp15_->start_index; if (start_index <= ((glong) 0)) { start_index = (glong) 0; } if (start_index <= nchars) { glong* _tmp17_; gint _tmp17__length1; glong _tmp18_; _tmp17_ = offsets; _tmp17__length1 = offsets_length1; _tmp18_ = _tmp17_[start_index]; _tmp16_ = _tmp18_; } else { glong* _tmp19_; gint _tmp19__length1; glong _tmp20_; _tmp19_ = offsets; _tmp19__length1 = offsets_length1; _tmp20_ = _tmp19_[-1]; _tmp16_ = _tmp20_; } start_index = _tmp16_; _tmp21_ = attr; end_index = (glong) _tmp21_->end_index; if (end_index <= ((glong) 0)) { end_index = (glong) 0; } if (end_index <= nchars) { glong* _tmp23_; gint _tmp23__length1; glong _tmp24_; _tmp23_ = offsets; _tmp23__length1 = offsets_length1; _tmp24_ = _tmp23_[end_index]; _tmp22_ = _tmp24_; } else { glong* _tmp25_; gint _tmp25__length1; glong _tmp26_; _tmp25_ = offsets; _tmp25__length1 = offsets_length1; _tmp26_ = _tmp25_[-1]; _tmp22_ = _tmp26_; } end_index = _tmp22_; pango_attr = NULL; _tmp27_ = attr; switch (_tmp27_->type) { case IBUS_ATTR_TYPE_FOREGROUND: { { guint16 r = 0U; IBusAttribute* _tmp28_; guint16 g = 0U; IBusAttribute* _tmp29_; guint16 b = 0U; IBusAttribute* _tmp30_; PangoAttribute* _tmp31_; _tmp28_ = attr; r = (guint16) ((_tmp28_->value & 0x00ff0000) >> 8); _tmp29_ = attr; g = (guint16) (_tmp29_->value & 0x0000ff00); _tmp30_ = attr; b = (guint16) ((_tmp30_->value & 0x000000ff) << 8); _tmp31_ = pango_attr_foreground_new (r, g, b); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp31_; break; } } case IBUS_ATTR_TYPE_BACKGROUND: { { guint16 r = 0U; IBusAttribute* _tmp32_; guint16 g = 0U; IBusAttribute* _tmp33_; guint16 b = 0U; IBusAttribute* _tmp34_; PangoAttribute* _tmp35_; _tmp32_ = attr; r = (guint16) ((_tmp32_->value & 0x00ff0000) >> 8); _tmp33_ = attr; g = (guint16) (_tmp33_->value & 0x0000ff00); _tmp34_ = attr; b = (guint16) ((_tmp34_->value & 0x000000ff) << 8); _tmp35_ = pango_attr_background_new (r, g, b); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp35_; break; } } case IBUS_ATTR_TYPE_UNDERLINE: { { IBusAttribute* _tmp36_; PangoAttribute* _tmp37_; _tmp36_ = attr; _tmp37_ = pango_attr_underline_new ((PangoUnderline) _tmp36_->value); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp37_; break; } } default: { _pango_attribute_destroy0 (pango_attr); continue; } } _tmp38_ = pango_attr; _tmp38_->start_index = (guint) start_index; _tmp39_ = pango_attr; _tmp39_->end_index = (guint) end_index; _tmp40_ = pango_attrs; _tmp41_ = pango_attr; pango_attr = NULL; pango_attr_list_insert (_tmp40_, _tmp41_); _pango_attribute_destroy0 (pango_attr); } result = pango_attrs; _g_object_unref0 (attr); offsets = (g_free (offsets), NULL); return result; } ibus-1.5.22/bindings/vala/candidatearea.vala0000644000000000000000000002656013623750431015601 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2015 Peng Huang * Copyright(c) 2015-2019 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 ThemedRGBA m_rgba; 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); m_rgba = new ThemedRGBA(this); } public bool candidate_scrolled(Gdk.EventScroll event) { switch (event.direction) { case Gdk.ScrollDirection.UP: cursor_up(); break; case Gdk.ScrollDirection.DOWN: cursor_down(); break; } return 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) { Pango.Attribute pango_attr = Pango.attr_foreground_new( (uint16)(m_rgba.selected_fg.red * uint16.MAX), (uint16)(m_rgba.selected_fg.green * uint16.MAX), (uint16)(m_rgba.selected_fg.blue * uint16.MAX)); pango_attr.start_index = 0; pango_attr.end_index = candidates[i].get_text().length; attrs.insert((owned)pango_attr); pango_attr = Pango.attr_background_new( (uint16)(m_rgba.selected_bg.red * uint16.MAX), (uint16)(m_rgba.selected_bg.green * uint16.MAX), (uint16)(m_rgba.selected_bg.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) { Gtk.EventBox container_ebox = new Gtk.EventBox(); container_ebox.add_events(Gdk.EventMask.SCROLL_MASK); container_ebox.scroll_event.connect(candidate_scrolled); add(container_ebox); Gtk.Box vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); container_ebox.add(vbox); // Add Candidates Gtk.Box candidates_hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); vbox.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 vbox.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); vbox.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; label.set_margin_start (8); label.set_margin_end (8); candidate.set_margin_start (8); candidate.set_margin_end (8); // 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.EventBox container_ebox = new Gtk.EventBox(); container_ebox.add_events(Gdk.EventMask.SCROLL_MASK); container_ebox.scroll_event.connect(candidate_scrolled); add(container_ebox); Gtk.Box hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); container_ebox.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.22/bindings/vala/IBusEmojiDialog-1.0.gir0000644000000000000000000004060513623751573016140 00000000000000 Creates a new #IBusEmojier. A newly allocated #IBusEmojiier. %TRUE if the emoji dict is loaded, otherwise %FALSE. Load the dictionary of #IBusUnicodeData. Set a language id for emoji annotations. #IBusEmojier will load $PKGDATADIR/dicts/emoji-@lang.dict. The default is "en". A langauge id for emoji annotations. Set emoji font on the emoji dialog font name for emoji characters Set custom emojis on the emoji dialog. @favorite_annotations can be null. If you don't assign an annotation for a specific emoji, you can pass the annotation as "", e.g. favorite_annotations = { "", "", "my annotation" }; A custom emoji list. A length of @favorites A custom annotation listfor @favorites. A length of @favorite_annotations Set partial match for emoji annotations. Enable the partial match if %TRUE. Otherwise if %FALSE. Set the partial match condition with the integer. condition id between 0 and 2. Set the minimum length to match partially. minimum length to match partially. an input context path of #IBusInputContext which is saved in ibus_emojier_run(). An #IBusEmojier an selected emoji character on the emoji dialog. An #IBusEmojier boolean if the emoji dialog is running An #IBusEmojier Move the window to the toplevel on the screen and centralize it. An #IBusEmojier A #GdkEventKey for timestamp Reset the selected string and input context path. An #IBusEmojier Runs emoji dialog to select emoji. A selected emoji character. An #IBusEmojier An input context path of #IBusInputContext of the focused application. A #GdkEventKey for timestamp ibus-1.5.22/bindings/vala/libibus_emoji_dialog_1_0_la_vala.stamp0000644000000000000000000000000613623751565021502 00000000000000stamp ibus-1.5.22/bindings/vala/IBus-1.0-custom.vala0000644000000000000000000000205713623750431015475 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); } public class ExtensionEvent : IBus.Serializable { [CCode (cname = "ibus_extension_event_new", has_construct_function = true)] public ExtensionEvent (string first_property_name, ...); } public class XEvent : IBus.Serializable { [CCode (cname = "ibus_x_event_new", has_construct_function = true)] public XEvent (string first_property_name, ...); } public class PanelService : IBus.Service { public void panel_extension_register_keys(string first_property_name, ...); } public class EmojiData : IBus.Serializable { [CCode (cname = "ibus_emoji_data_new", has_construct_function = true)] public EmojiData (string first_property_name, ...); } } ibus-1.5.22/bindings/vala/gdk-wayland.vapi0000644000000000000000000000033113623750431015236 00000000000000[CCode (cprefix = "", lower_case_cprefix = "", cheader_filename = "gdk/gdkwayland.h")] namespace GdkWayland { [CCode (type_id = "gdk_wayland_display_get_type ()")] public class Display : Gdk.Display { } } ibus-1.5.22/bindings/vala/emojier.c0000644000000000000000000107614013623751565013776 00000000000000/* emojier.c generated by valac 0.47.91, the Vala compiler * generated from emojier.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright (c) 2017-2019 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 #include #define TYPE_IBUS_EMOJIER (ibus_emojier_get_type ()) #define IBUS_EMOJIER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IBUS_EMOJIER, IBusEmojier)) #define IBUS_EMOJIER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IBUS_EMOJIER, IBusEmojierClass)) #define IS_IBUS_EMOJIER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IBUS_EMOJIER)) #define IS_IBUS_EMOJIER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IBUS_EMOJIER)) #define IBUS_EMOJIER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IBUS_EMOJIER, IBusEmojierClass)) typedef struct _IBusEmojier IBusEmojier; typedef struct _IBusEmojierClass IBusEmojierClass; typedef struct _IBusEmojierPrivate IBusEmojierPrivate; #define TYPE_THEMED_RGBA (themed_rgba_get_type ()) #define THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THEMED_RGBA, ThemedRGBA)) #define THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THEMED_RGBA, ThemedRGBAClass)) #define IS_THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THEMED_RGBA)) #define IS_THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THEMED_RGBA)) #define THEMED_RGBA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THEMED_RGBA, ThemedRGBAClass)) typedef struct _ThemedRGBA ThemedRGBA; typedef struct _ThemedRGBAClass ThemedRGBAClass; #define IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW (ibus_emojier_escrolled_window_get_type ()) #define IBUS_EMOJIER_ESCROLLED_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, IBusEmojierEScrolledWindow)) #define IBUS_EMOJIER_ESCROLLED_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, IBusEmojierEScrolledWindowClass)) #define IBUS_EMOJIER_IS_ESCROLLED_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW)) #define IBUS_EMOJIER_IS_ESCROLLED_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW)) #define IBUS_EMOJIER_ESCROLLED_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, IBusEmojierEScrolledWindowClass)) typedef struct _IBusEmojierEScrolledWindow IBusEmojierEScrolledWindow; typedef struct _IBusEmojierEScrolledWindowClass IBusEmojierEScrolledWindowClass; #define IBUS_EMOJIER_TYPE_ELIST_BOX (ibus_emojier_elist_box_get_type ()) #define IBUS_EMOJIER_ELIST_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_ELIST_BOX, IBusEmojierEListBox)) #define IBUS_EMOJIER_ELIST_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_ELIST_BOX, IBusEmojierEListBoxClass)) #define IBUS_EMOJIER_IS_ELIST_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_ELIST_BOX)) #define IBUS_EMOJIER_IS_ELIST_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_ELIST_BOX)) #define IBUS_EMOJIER_ELIST_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_ELIST_BOX, IBusEmojierEListBoxClass)) typedef struct _IBusEmojierEListBox IBusEmojierEListBox; typedef struct _IBusEmojierEListBoxClass IBusEmojierEListBoxClass; enum { IBUS_EMOJIER_0_PROPERTY, IBUS_EMOJIER_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_properties[IBUS_EMOJIER_NUM_PROPERTIES]; typedef enum { IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD } IBusEmojierTravelDirection; #define IBUS_EMOJIER_TYPE_TRAVEL_DIRECTION (ibus_emojier_travel_direction_get_type ()) #define IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT (ibus_emojier_load_progress_object_get_type ()) #define IBUS_EMOJIER_LOAD_PROGRESS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, IBusEmojierLoadProgressObject)) #define IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, IBusEmojierLoadProgressObjectClass)) #define IBUS_EMOJIER_IS_LOAD_PROGRESS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT)) #define IBUS_EMOJIER_IS_LOAD_PROGRESS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT)) #define IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, IBusEmojierLoadProgressObjectClass)) typedef struct _IBusEmojierLoadProgressObject IBusEmojierLoadProgressObject; typedef struct _IBusEmojierLoadProgressObjectClass IBusEmojierLoadProgressObjectClass; #define _themed_rgba_unref0(var) ((var == NULL) ? NULL : (var = (themed_rgba_unref (var), NULL))) #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define _g_main_loop_unref0(var) ((var == NULL) ? NULL : (var = (g_main_loop_unref (var), NULL))) #define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) #define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) #define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL))) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define IBUS_EMOJIER_TYPE_EBOX_ROW (ibus_emojier_ebox_row_get_type ()) #define IBUS_EMOJIER_EBOX_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow)) #define IBUS_EMOJIER_EBOX_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRowClass)) #define IBUS_EMOJIER_IS_EBOX_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EBOX_ROW)) #define IBUS_EMOJIER_IS_EBOX_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EBOX_ROW)) #define IBUS_EMOJIER_EBOX_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRowClass)) typedef struct _IBusEmojierEBoxRow IBusEmojierEBoxRow; typedef struct _IBusEmojierEBoxRowClass IBusEmojierEBoxRowClass; #define IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX (ibus_emojier_epadded_label_box_get_type ()) #define IBUS_EMOJIER_EPADDED_LABEL_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, IBusEmojierEPaddedLabelBox)) #define IBUS_EMOJIER_EPADDED_LABEL_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, IBusEmojierEPaddedLabelBoxClass)) #define IBUS_EMOJIER_IS_EPADDED_LABEL_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX)) #define IBUS_EMOJIER_IS_EPADDED_LABEL_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX)) #define IBUS_EMOJIER_EPADDED_LABEL_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, IBusEmojierEPaddedLabelBoxClass)) typedef struct _IBusEmojierEPaddedLabelBox IBusEmojierEPaddedLabelBox; typedef struct _IBusEmojierEPaddedLabelBoxClass IBusEmojierEPaddedLabelBoxClass; typedef struct _Block4Data Block4Data; #define _pango_attr_list_unref0(var) ((var == NULL) ? NULL : (var = (pango_attr_list_unref (var), NULL))) #define IBUS_EMOJIER_TYPE_EGRID (ibus_emojier_egrid_get_type ()) #define IBUS_EMOJIER_EGRID(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EGRID, IBusEmojierEGrid)) #define IBUS_EMOJIER_EGRID_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EGRID, IBusEmojierEGridClass)) #define IBUS_EMOJIER_IS_EGRID(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EGRID)) #define IBUS_EMOJIER_IS_EGRID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EGRID)) #define IBUS_EMOJIER_EGRID_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EGRID, IBusEmojierEGridClass)) typedef struct _IBusEmojierEGrid IBusEmojierEGrid; typedef struct _IBusEmojierEGridClass IBusEmojierEGridClass; typedef struct _Block5Data Block5Data; #define IBUS_EMOJIER_TYPE_EWHITE_LABEL (ibus_emojier_ewhite_label_get_type ()) #define IBUS_EMOJIER_EWHITE_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabel)) #define IBUS_EMOJIER_EWHITE_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabelClass)) #define IBUS_EMOJIER_IS_EWHITE_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EWHITE_LABEL)) #define IBUS_EMOJIER_IS_EWHITE_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EWHITE_LABEL)) #define IBUS_EMOJIER_EWHITE_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabelClass)) typedef struct _IBusEmojierEWhiteLabel IBusEmojierEWhiteLabel; typedef struct _IBusEmojierEWhiteLabelClass IBusEmojierEWhiteLabelClass; #define IBUS_EMOJIER_TYPE_ESELECTED_LABEL (ibus_emojier_eselected_label_get_type ()) #define IBUS_EMOJIER_ESELECTED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_ESELECTED_LABEL, IBusEmojierESelectedLabel)) #define IBUS_EMOJIER_ESELECTED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_ESELECTED_LABEL, IBusEmojierESelectedLabelClass)) #define IBUS_EMOJIER_IS_ESELECTED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_ESELECTED_LABEL)) #define IBUS_EMOJIER_IS_ESELECTED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_ESELECTED_LABEL)) #define IBUS_EMOJIER_ESELECTED_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_ESELECTED_LABEL, IBusEmojierESelectedLabelClass)) typedef struct _IBusEmojierESelectedLabel IBusEmojierESelectedLabel; typedef struct _IBusEmojierESelectedLabelClass IBusEmojierESelectedLabelClass; #define IBUS_EMOJIER_TYPE_EGOLD_LABEL (ibus_emojier_egold_label_get_type ()) #define IBUS_EMOJIER_EGOLD_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EGOLD_LABEL, IBusEmojierEGoldLabel)) #define IBUS_EMOJIER_EGOLD_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EGOLD_LABEL, IBusEmojierEGoldLabelClass)) #define IBUS_EMOJIER_IS_EGOLD_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EGOLD_LABEL)) #define IBUS_EMOJIER_IS_EGOLD_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EGOLD_LABEL)) #define IBUS_EMOJIER_EGOLD_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EGOLD_LABEL, IBusEmojierEGoldLabelClass)) typedef struct _IBusEmojierEGoldLabel IBusEmojierEGoldLabel; typedef struct _IBusEmojierEGoldLabelClass IBusEmojierEGoldLabelClass; #define __vala_GdkEventMotion_free0(var) ((var == NULL) ? NULL : (var = (_vala_GdkEventMotion_free (var), NULL))) #define __vala_PangoFontDescription_free0(var) ((var == NULL) ? NULL : (var = (_vala_PangoFontDescription_free (var), NULL))) typedef struct _IBusEmojierEListBoxPrivate IBusEmojierEListBoxPrivate; enum { IBUS_EMOJIER_ELIST_BOX_0_PROPERTY, IBUS_EMOJIER_ELIST_BOX_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_elist_box_properties[IBUS_EMOJIER_ELIST_BOX_NUM_PROPERTIES]; typedef struct _IBusEmojierEBoxRowPrivate IBusEmojierEBoxRowPrivate; enum { IBUS_EMOJIER_EBOX_ROW_0_PROPERTY, IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY, IBUS_EMOJIER_EBOX_ROW_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_ebox_row_properties[IBUS_EMOJIER_EBOX_ROW_NUM_PROPERTIES]; typedef struct _IBusEmojierEScrolledWindowPrivate IBusEmojierEScrolledWindowPrivate; enum { IBUS_EMOJIER_ESCROLLED_WINDOW_0_PROPERTY, IBUS_EMOJIER_ESCROLLED_WINDOW_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_escrolled_window_properties[IBUS_EMOJIER_ESCROLLED_WINDOW_NUM_PROPERTIES]; typedef struct _IBusEmojierEGridPrivate IBusEmojierEGridPrivate; enum { IBUS_EMOJIER_EGRID_0_PROPERTY, IBUS_EMOJIER_EGRID_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_egrid_properties[IBUS_EMOJIER_EGRID_NUM_PROPERTIES]; typedef struct _IBusEmojierEWhiteLabelPrivate IBusEmojierEWhiteLabelPrivate; enum { IBUS_EMOJIER_EWHITE_LABEL_0_PROPERTY, IBUS_EMOJIER_EWHITE_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_ewhite_label_properties[IBUS_EMOJIER_EWHITE_LABEL_NUM_PROPERTIES]; typedef struct _IBusEmojierESelectedLabelPrivate IBusEmojierESelectedLabelPrivate; enum { IBUS_EMOJIER_ESELECTED_LABEL_0_PROPERTY, IBUS_EMOJIER_ESELECTED_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_eselected_label_properties[IBUS_EMOJIER_ESELECTED_LABEL_NUM_PROPERTIES]; typedef struct _IBusEmojierEGoldLabelPrivate IBusEmojierEGoldLabelPrivate; enum { IBUS_EMOJIER_EGOLD_LABEL_0_PROPERTY, IBUS_EMOJIER_EGOLD_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_egold_label_properties[IBUS_EMOJIER_EGOLD_LABEL_NUM_PROPERTIES]; #define IBUS_EMOJIER_TYPE_EPADDED_LABEL (ibus_emojier_epadded_label_get_type ()) #define IBUS_EMOJIER_EPADDED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL, IBusEmojierEPaddedLabel)) #define IBUS_EMOJIER_EPADDED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL, IBusEmojierEPaddedLabelClass)) #define IBUS_EMOJIER_IS_EPADDED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL)) #define IBUS_EMOJIER_IS_EPADDED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL)) #define IBUS_EMOJIER_EPADDED_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL, IBusEmojierEPaddedLabelClass)) typedef struct _IBusEmojierEPaddedLabel IBusEmojierEPaddedLabel; typedef struct _IBusEmojierEPaddedLabelClass IBusEmojierEPaddedLabelClass; typedef struct _IBusEmojierEPaddedLabelPrivate IBusEmojierEPaddedLabelPrivate; enum { IBUS_EMOJIER_EPADDED_LABEL_0_PROPERTY, IBUS_EMOJIER_EPADDED_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_epadded_label_properties[IBUS_EMOJIER_EPADDED_LABEL_NUM_PROPERTIES]; typedef struct _IBusEmojierEPaddedLabelBoxPrivate IBusEmojierEPaddedLabelBoxPrivate; enum { IBUS_EMOJIER_EPADDED_LABEL_BOX_0_PROPERTY, IBUS_EMOJIER_EPADDED_LABEL_BOX_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_epadded_label_box_properties[IBUS_EMOJIER_EPADDED_LABEL_BOX_NUM_PROPERTIES]; #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 _IBusEmojierLoadProgressObjectPrivate IBusEmojierLoadProgressObjectPrivate; enum { IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_0_PROPERTY, IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_load_progress_object_properties[IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_PROPERTIES]; enum { IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_DESERIALIZE_UNICODE_SIGNAL, IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_SIGNALS }; static guint ibus_emojier_load_progress_object_signals[IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_SIGNALS] = {0}; enum { IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL, IBUS_EMOJIER_COMMIT_TEXT_SIGNAL, IBUS_EMOJIER_CANCEL_SIGNAL, IBUS_EMOJIER_NUM_SIGNALS }; static guint ibus_emojier_signals[IBUS_EMOJIER_NUM_SIGNALS] = {0}; #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 _IBusEmojier { GtkApplicationWindow parent_instance; IBusEmojierPrivate * priv; }; struct _IBusEmojierClass { GtkApplicationWindowClass parent_class; }; struct _IBusEmojierPrivate { ThemedRGBA* m_rgba; GtkBox* m_vbox; gchar* m_annotation; gchar* m_backward; gint m_backward_index; IBusEmojierEScrolledWindow* m_scrolled_window; IBusEmojierEListBox* m_list_box; gboolean m_is_running; gchar* m_input_context_path; GMainLoop* m_loop; gchar* m_result; gboolean m_candidate_panel_is_visible; gboolean m_candidate_panel_mode; gint m_category_active_index; IBusLookupTable* m_lookup_table; GtkLabel** m_candidates; gint m_candidates_length1; gint _m_candidates_size_; gboolean m_enter_notify_enable; guint m_entry_notify_show_id; guint m_entry_notify_disable_id; GtkProgressBar* m_unicode_progress_bar; guint m_unicode_progress_id; GtkLabel* m_unicode_percent_label; gdouble m_unicode_percent; GdkRectangle m_cursor_location; gboolean m_is_up_side_down; guint m_redraw_window_id; }; struct _Block4Data { int _ref_count_; IBusEmojier* self; GtkButton* warning_button; }; struct _Block5Data { int _ref_count_; IBusEmojier* self; guint index; }; struct _IBusEmojierEListBox { GtkListBox parent_instance; IBusEmojierEListBoxPrivate * priv; }; struct _IBusEmojierEListBoxClass { GtkListBoxClass parent_class; }; struct _IBusEmojierEBoxRow { GtkListBoxRow parent_instance; IBusEmojierEBoxRowPrivate * priv; }; struct _IBusEmojierEBoxRowClass { GtkListBoxRowClass parent_class; }; struct _IBusEmojierEBoxRowPrivate { gchar* _text; }; struct _IBusEmojierEScrolledWindow { GtkScrolledWindow parent_instance; IBusEmojierEScrolledWindowPrivate * priv; }; struct _IBusEmojierEScrolledWindowClass { GtkScrolledWindowClass parent_class; }; struct _IBusEmojierEGrid { GtkGrid parent_instance; IBusEmojierEGridPrivate * priv; }; struct _IBusEmojierEGridClass { GtkGridClass parent_class; }; struct _IBusEmojierEWhiteLabel { GtkLabel parent_instance; IBusEmojierEWhiteLabelPrivate * priv; }; struct _IBusEmojierEWhiteLabelClass { GtkLabelClass parent_class; }; struct _IBusEmojierEWhiteLabelPrivate { gint m_minimum_width; gint m_natural_width; gint m_minimum_height; gint m_natural_height; }; struct _IBusEmojierESelectedLabel { IBusEmojierEWhiteLabel parent_instance; IBusEmojierESelectedLabelPrivate * priv; }; struct _IBusEmojierESelectedLabelClass { IBusEmojierEWhiteLabelClass parent_class; }; struct _IBusEmojierEGoldLabel { IBusEmojierEWhiteLabel parent_instance; IBusEmojierEGoldLabelPrivate * priv; }; struct _IBusEmojierEGoldLabelClass { IBusEmojierEWhiteLabelClass parent_class; }; struct _IBusEmojierEPaddedLabel { GtkLabel parent_instance; IBusEmojierEPaddedLabelPrivate * priv; }; struct _IBusEmojierEPaddedLabelClass { GtkLabelClass parent_class; }; struct _IBusEmojierEPaddedLabelBox { GtkBox parent_instance; IBusEmojierEPaddedLabelBoxPrivate * priv; }; struct _IBusEmojierEPaddedLabelBoxClass { GtkBoxClass parent_class; }; struct _IBusEmojierLoadProgressObject { GObject parent_instance; IBusEmojierLoadProgressObjectPrivate * priv; }; struct _IBusEmojierLoadProgressObjectClass { GObjectClass parent_class; }; static gint IBusEmojier_private_offset; static gpointer ibus_emojier_parent_class = NULL; static gchar* ibus_emojier_m_current_lang_id; static gchar* ibus_emojier_m_current_lang_id = NULL; static gchar* ibus_emojier_m_emoji_font_family; static gchar* ibus_emojier_m_emoji_font_family = NULL; static gint ibus_emojier_m_emoji_font_size; static gint ibus_emojier_m_emoji_font_size = 0; static gboolean ibus_emojier_m_emoji_font_changed; static gboolean ibus_emojier_m_emoji_font_changed = FALSE; static gchar** ibus_emojier_m_favorites; static gint ibus_emojier_m_favorites_length1; static gchar** ibus_emojier_m_favorites = NULL; static gint ibus_emojier_m_favorites_length1 = 0; static gint _ibus_emojier_m_favorites_size_ = 0; static gchar** ibus_emojier_m_favorite_annotations; static gint ibus_emojier_m_favorite_annotations_length1; static gchar** ibus_emojier_m_favorite_annotations = NULL; static gint ibus_emojier_m_favorite_annotations_length1 = 0; static gint _ibus_emojier_m_favorite_annotations_size_ = 0; static gint ibus_emojier_m_emoji_max_seq_len; static gint ibus_emojier_m_emoji_max_seq_len = 0; static gboolean ibus_emojier_m_has_partial_match; static gboolean ibus_emojier_m_has_partial_match = FALSE; static guint ibus_emojier_m_partial_match_length; static guint ibus_emojier_m_partial_match_length = 0U; static guint ibus_emojier_m_partial_match_condition; static guint ibus_emojier_m_partial_match_condition = 0U; static gboolean ibus_emojier_m_show_emoji_variant; static gboolean ibus_emojier_m_show_emoji_variant = FALSE; static gint ibus_emojier_m_default_window_width; static gint ibus_emojier_m_default_window_width = 0; static gint ibus_emojier_m_default_window_height; static gint ibus_emojier_m_default_window_height = 0; static GHashTable* ibus_emojier_m_annotation_to_emojis_dict; static GHashTable* ibus_emojier_m_annotation_to_emojis_dict = NULL; static GHashTable* ibus_emojier_m_emoji_to_data_dict; static GHashTable* ibus_emojier_m_emoji_to_data_dict = NULL; static GHashTable* ibus_emojier_m_category_to_emojis_dict; static GHashTable* ibus_emojier_m_category_to_emojis_dict = NULL; static GHashTable* ibus_emojier_m_emoji_to_emoji_variants_dict; static GHashTable* ibus_emojier_m_emoji_to_emoji_variants_dict = NULL; static GHashTable* ibus_emojier_m_unicode_to_data_dict; static GHashTable* ibus_emojier_m_unicode_to_data_dict = NULL; static GHashTable* ibus_emojier_m_name_to_unicodes_dict; static GHashTable* ibus_emojier_m_name_to_unicodes_dict = NULL; static GSList* ibus_emojier_m_unicode_block_list; static GSList* ibus_emojier_m_unicode_block_list = NULL; static gboolean ibus_emojier_m_show_unicode; static gboolean ibus_emojier_m_show_unicode = FALSE; static IBusEmojierLoadProgressObject* ibus_emojier_m_unicode_progress_object; static IBusEmojierLoadProgressObject* ibus_emojier_m_unicode_progress_object = NULL; static gboolean ibus_emojier_m_loaded_unicode; static gboolean ibus_emojier_m_loaded_unicode = FALSE; static gchar* ibus_emojier_m_warning_message; static gchar* ibus_emojier_m_warning_message = NULL; extern gdouble ibus_emojier_m_mouse_x; gdouble ibus_emojier_m_mouse_x = 0.0; extern gdouble ibus_emojier_m_mouse_y; gdouble ibus_emojier_m_mouse_y = 0.0; static gpointer ibus_emojier_elist_box_parent_class = NULL; static gint IBusEmojierEBoxRow_private_offset; static gpointer ibus_emojier_ebox_row_parent_class = NULL; static gpointer ibus_emojier_escrolled_window_parent_class = NULL; static gpointer ibus_emojier_egrid_parent_class = NULL; static gint IBusEmojierEWhiteLabel_private_offset; static gpointer ibus_emojier_ewhite_label_parent_class = NULL; static gpointer ibus_emojier_eselected_label_parent_class = NULL; static gpointer ibus_emojier_egold_label_parent_class = NULL; static gpointer ibus_emojier_epadded_label_parent_class = NULL; static gpointer ibus_emojier_epadded_label_box_parent_class = NULL; static gpointer ibus_emojier_load_progress_object_parent_class = NULL; GType ibus_emojier_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojier, g_object_unref) gpointer themed_rgba_ref (gpointer instance); void themed_rgba_unref (gpointer instance); GParamSpec* param_spec_themed_rgba (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_themed_rgba (GValue* value, gpointer v_object); void value_take_themed_rgba (GValue* value, gpointer v_object); gpointer value_get_themed_rgba (const GValue* value); GType themed_rgba_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (ThemedRGBA, themed_rgba_unref) static GType ibus_emojier_escrolled_window_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEScrolledWindow, g_object_unref) static GType ibus_emojier_elist_box_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEListBox, g_object_unref) static GType ibus_emojier_travel_direction_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; #define IBUS_EMOJIER_BUTTON_CLOSE_BUTTON ((guint) 1000) #define IBUS_EMOJIER_EMOJI_GRID_PAGE ((guint) 10) #define IBUS_EMOJIER_EMOJI_CATEGORY_FAVORITES N_ ("Favorites") #define IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS N_ ("Others") #define IBUS_EMOJIER_EMOJI_CATEGORY_UNICODE N_ ("Open Unicode choice") static GType ibus_emojier_load_progress_object_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierLoadProgressObject, g_object_unref) IBusEmojier* ibus_emojier_new (void); IBusEmojier* ibus_emojier_construct (GType object_type); static void ibus_emojier_check_action_variant_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter); static void _ibus_emojier_check_action_variant_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self); static void ibus_emojier_action_close_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter); static void _ibus_emojier_action_close_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self); static void ibus_emojier_set_css_data (IBusEmojier* self); static void __lambda12_ (IBusEmojier* self); static void ___lambda12__gtk_widget_hide (GtkWidget* _sender, gpointer self); static void __lambda13_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a); static void ibus_emojier_adjust_window_position (IBusEmojier* self); static void ___lambda13__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self); static void ibus_emojier_reload_emoji_dict (void); static GObject* ibus_emojier_get_load_progress_object (void); static void ibus_emojier_init_emoji_dict (void); static void ibus_emojier_make_emoji_dict (const gchar* lang); static void ibus_emojier_add_variants_to_component (void); void ibus_emojier_update_favorite_emoji_dict (void); static void _g_free0_ (gpointer var); static inline void _g_slist_free__g_free0_ (GSList* self); static void __g_slist_free__g_free0_0_ (gpointer var); static void _g_object_unref0_ (gpointer var); static void _g_slist_free0_ (gpointer var); static inline void _g_slist_free__g_object_unref0_ (GSList* self); static void ibus_emojier_update_emoji_to_data_dict (IBusEmojiData* data, const gchar* lang); static void ibus_emojier_update_annotation_to_emojis_dict (IBusEmojiData* data); static void ibus_emojier_update_category_to_emojis_dict (IBusEmojiData* data, const gchar* lang); static gpointer _g_strdup_gcopy_func (gconstpointer src, gpointer self); static gchar* ibus_emojier_utf8_code_point (const gchar* str); static gchar* ibus_emojier_utf8_entity (const gchar* str); static void ibus_emojier_update_annotations_with_description (IBusEmojiData* data, const gchar* description); static void ibus_emojier_make_unicode_block_dict (void); static void ibus_emojier_make_unicode_name_dict (GObject* source_object); static void ibus_emojier_make_unicode_name_dict_finish (GSList* unicode_list); static void ibus_emojier_update_unicode_to_data_dict (IBusUnicodeData* data); static void ibus_emojier_update_name_to_unicodes_dict (IBusUnicodeData* data); ThemedRGBA* themed_rgba_new (GtkWidget* widget); ThemedRGBA* themed_rgba_construct (GType object_type, GtkWidget* widget); GdkRGBA* themed_rgba_get_normal_bg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_fg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_bg (ThemedRGBA* self); static void ibus_emojier_set_fixed_size (IBusEmojier* self); static void ibus_emojier_remove_all_children (IBusEmojier* self); static void ibus_emojier_clamp_page (IBusEmojier* self); static void ibus_emojier_show_category_list (IBusEmojier* self); static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_new (GtkAdjustment* hadjustment, GtkAdjustment* vadjustment); static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_construct (GType object_type, GtkAdjustment* hadjustment, GtkAdjustment* vadjustment); static IBusEmojierEListBox* ibus_emojier_elist_box_new (void); static IBusEmojierEListBox* ibus_emojier_elist_box_construct (GType object_type); static void __lambda28_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow); static GType ibus_emojier_ebox_row_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEBoxRow, g_object_unref) static void ibus_emojier_show_emoji_for_category (IBusEmojier* self, const gchar* category); static const gchar* ibus_emojier_ebox_row_get_text (IBusEmojierEBoxRow* self); static void ___lambda28__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self); static IBusEmojierEBoxRow* ibus_emojier_ebox_row_new (const gchar* text); static IBusEmojierEBoxRow* ibus_emojier_ebox_row_construct (GType object_type, const gchar* text); static GType ibus_emojier_epadded_label_box_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEPaddedLabelBox, g_object_unref) static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_new (const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption); static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_construct (GType object_type, const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption); static void ibus_emojier_update_unicode_blocks (IBusEmojier* self); static void ibus_emojier_show_emoji_variants (IBusEmojier* self, GSList* emojis); static void ibus_emojier_show_unicode_blocks (IBusEmojier* self); static gboolean __lambda25_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e); static void ibus_emojier_hide_candidate_panel (IBusEmojier* self); static gboolean ___lambda25__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void __lambda26_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow); static void ibus_emojier_show_unicode_for_block (IBusEmojier* self, const gchar* block_name); static void ibus_emojier_show_candidate_panel (IBusEmojier* self); static void ___lambda26__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self); static void __lambda27_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a); static void ___lambda27__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self); static void ibus_emojier_show_arrow_buttons (IBusEmojier* self); static Block4Data* block4_data_ref (Block4Data* _data4_); static void block4_data_unref (void * _userdata_); static void __lambda20_ (IBusEmojier* self); static void ___lambda20__gtk_button_clicked (GtkButton* _sender, gpointer self); static void __lambda21_ (IBusEmojier* self); static void ___lambda21__gtk_button_clicked (GtkButton* _sender, gpointer self); IBusText* ibus_emojier_get_title_text (IBusEmojier* self); PangoAttrList* get_pango_attr_list_from_ibus_text (IBusText* text); static void ___lambda22_ (Block4Data* _data4_); static void ____lambda22__gtk_button_clicked (GtkButton* _sender, gpointer self); static void ibus_emojier_show_unicode_progress_bar (IBusEmojier* self); static void __lambda23_ (IBusEmojier* self, guint i, guint n); static void ___lambda23__ibus_emojier_load_progress_object_deserialize_unicode (IBusEmojierLoadProgressObject* _sender, guint done, guint total, gpointer self); static gboolean __lambda24_ (IBusEmojier* self); static gboolean ___lambda24__gsource_func (gpointer self); static gchar* ibus_emojier_check_unicode_point (const gchar* annotation); static GSList* ibus_emojier_lookup_emojis_from_annotation (const gchar* annotation); static void ibus_emojier_update_candidate_window (IBusEmojier* self); static void ibus_emojier_update_category_list (IBusEmojier* self); static void ibus_emojier_reset_window_mode (IBusEmojier* self); static gint __lambda16_ (const gchar* a, const gchar* b); static gint ___lambda16__gcompare_func (gconstpointer a, gconstpointer b); static void ibus_emojier_show_code_point_description (IBusEmojier* self, const gchar* text); static gboolean ___lambda15_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e); static gboolean ____lambda15__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static GType ibus_emojier_egrid_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEGrid, g_object_unref) static IBusEmojierEGrid* ibus_emojier_egrid_new (void); static IBusEmojierEGrid* ibus_emojier_egrid_construct (GType object_type); static Block5Data* block5_data_ref (Block5Data* _data5_); static void block5_data_unref (void * _userdata_); static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_new (const gchar* text); static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_construct (GType object_type, const gchar* text); static GType ibus_emojier_ewhite_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEWhiteLabel, g_object_unref) static GType ibus_emojier_eselected_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierESelectedLabel, g_object_unref) static IBusEmojierEGoldLabel* ibus_emojier_egold_label_new (const gchar* text); static IBusEmojierEGoldLabel* ibus_emojier_egold_label_construct (GType object_type, const gchar* text); static GType ibus_emojier_egold_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEGoldLabel, g_object_unref) static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_new (const gchar* text); static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_construct (GType object_type, const gchar* text); static gboolean _____lambda17_ (Block5Data* _data5_, GtkWidget* w, GdkEventButton* e); static gboolean ______lambda17__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static gboolean _____lambda18_ (Block5Data* _data5_, GdkEventMotion* e); static GdkEventMotion* _vala_GdkEventMotion_copy (GdkEventMotion* self); static void _vala_GdkEventMotion_free (GdkEventMotion* self); static gboolean __lambda19_ (IBusEmojier* self); static gboolean ___lambda19__gsource_func (gpointer self); static gboolean ______lambda18__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self); static void _vala_array_add8 (GtkLabel** * array, gint* length, gint* size, GtkLabel* value); static void ibus_emojier_show_description (IBusEmojier* self); static void ibus_emojier_show_emoji_description (IBusEmojier* self, IBusEmojiData* data, const gchar* text); static void ibus_emojier_show_unicode_description (IBusEmojier* self, IBusUnicodeData* data, const gchar* text); static void ibus_emojier_enter_notify_disable_with_timer (IBusEmojier* self); static gboolean __lambda29_ (IBusEmojier* self); static gboolean ___lambda29__gsource_func (gpointer self); static void ibus_emojier_candidate_panel_cursor_down (IBusEmojier* self); static void ibus_emojier_candidate_panel_cursor_up (IBusEmojier* self); static gint ibus_emojier_get_page_num (IBusEmojier* self); static gboolean ibus_emojier_category_list_cursor_move (IBusEmojier* self, guint keyval); gboolean ibus_emojier_has_variants (IBusEmojier* self, guint index, gboolean need_commit_signal); gboolean ibus_emojier_key_press_cursor_horizontal (IBusEmojier* self, guint keyval, guint modifiers); gboolean ibus_emojier_key_press_cursor_vertical (IBusEmojier* self, guint keyval, guint modifiers); gboolean ibus_emojier_key_press_cursor_home_end (IBusEmojier* self, guint keyval, guint modifiers); gboolean ibus_emojier_key_press_escape (IBusEmojier* self); gboolean ibus_emojier_key_press_enter (IBusEmojier* self, gboolean need_commit_signal); static void ibus_emojier_get_monitor_geometry (IBusEmojier* self, GdkRectangle* result); static gboolean ___lambda14_ (IBusEmojier* self); static gboolean ____lambda14__gsource_func (gpointer self); void ibus_emojier_set_annotation (IBusEmojier* self, const gchar* annotation); IBusLookupTable* ibus_emojier_get_one_dimension_lookup_table (IBusEmojier* self); guint ibus_emojier_get_number_of_candidates (IBusEmojier* self); guint ibus_emojier_get_cursor_pos (IBusEmojier* self); void ibus_emojier_set_cursor_pos (IBusEmojier* self, guint cursor_pos); gchar* ibus_emojier_get_current_candidate (IBusEmojier* self); static void ibus_emojier_real_show_all (GtkWidget* base); static void ibus_emojier_real_hide (GtkWidget* base); static gboolean ibus_emojier_real_key_press_event (GtkWidget* base, GdkEventKey* event); gboolean ibus_emojier_is_running (IBusEmojier* self); gchar* ibus_emojier_get_input_context_path (IBusEmojier* self); void ibus_emojier_set_input_context_path (IBusEmojier* self, const gchar* input_context_path); gchar* ibus_emojier_get_selected_string (IBusEmojier* self); void ibus_emojier_reset (IBusEmojier* self); void ibus_emojier_present_centralize (IBusEmojier* self, GdkEvent* event); void ibus_emojier_set_cursor_location (IBusEmojier* 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); gboolean ibus_emojier_is_candidate_panel_mode (IBusEmojier* self); gboolean ibus_emojier_has_loaded_emoji_dict (void); void ibus_emojier_set_annotation_lang (const gchar* lang); gchar* ibus_emojier_get_annotation_lang (void); void ibus_emojier_set_emoji_font (const gchar* emoji_font); static void _vala_PangoFontDescription_free (PangoFontDescription* self); void ibus_emojier_set_partial_match (gboolean has_partial_match); void ibus_emojier_set_partial_match_length (gint length); void ibus_emojier_set_partial_match_condition (gint condition); void ibus_emojier_set_favorites (gchar** unowned_favorites, gint unowned_favorites_length1, gchar** unowned_favorite_annotations, gint unowned_favorite_annotations_length1); static void _vala_array_add9 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add10 (gchar** * array, gint* length, gint* size, gchar* value); static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_new (void); static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_construct (GType object_type); void ibus_emojier_load_unicode_dict (void); 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 gboolean __lambda10_ (IBusEmojierEListBox* self, GdkEventMotion* e); static gboolean ___lambda10__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self); static gboolean __lambda11_ (IBusEmojierEListBox* self, GdkEventCrossing* e); static gboolean ___lambda11__gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self); static GType ibus_emojier_elist_box_get_type_once (void); static void ibus_emojier_ebox_row_set_text (IBusEmojierEBoxRow* self, const gchar* value); static void ibus_emojier_ebox_row_finalize (GObject * obj); static GType ibus_emojier_ebox_row_get_type_once (void); static void _vala_ibus_emojier_ebox_row_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); static void _vala_ibus_emojier_ebox_row_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); static GType ibus_emojier_escrolled_window_get_type_once (void); static GType ibus_emojier_egrid_get_type_once (void); static void ibus_emojier_ewhite_label_real_get_preferred_width (GtkWidget* base, gint* minimum_width, gint* natural_width); static void ibus_emojier_ewhite_label_real_get_preferred_height (GtkWidget* base, gint* minimum_height, gint* natural_height); static void ibus_emojier_ewhite_label_finalize (GObject * obj); static GType ibus_emojier_ewhite_label_get_type_once (void); static GType ibus_emojier_eselected_label_get_type_once (void); static GType ibus_emojier_egold_label_get_type_once (void); static GType ibus_emojier_epadded_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEPaddedLabel, g_object_unref) static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_new (const gchar* text, GtkAlign align); static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_construct (GType object_type, const gchar* text, GtkAlign align); static GType ibus_emojier_epadded_label_get_type_once (void); GType icon_widget_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IconWidget, g_object_unref) 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 GType ibus_emojier_epadded_label_box_get_type_once (void); 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 GType ibus_emojier_load_progress_object_get_type_once (void); static void ibus_emojier_finalize (GObject * obj); static GType ibus_emojier_get_type_once (void); 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 gunichar IBUS_EMOJIER_EMOJI_VARIANT_LIST[6] = {(gunichar) 0x1f3fb, (gunichar) 0x1f3fc, (gunichar) 0x1f3fd, (gunichar) 0x1f3fe, (gunichar) 0x1f3ff, (gunichar) 0x200d}; static inline gpointer ibus_emojier_get_instance_private (IBusEmojier* self) { return G_STRUCT_MEMBER_P (self, IBusEmojier_private_offset); } static GType ibus_emojier_travel_direction_get_type_once (void) { static const GEnumValue values[] = {{IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, "IBUS_EMOJIER_TRAVEL_DIRECTION_NONE", "none"}, {IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD, "IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD", "backward"}, {0, NULL, NULL}}; GType ibus_emojier_travel_direction_type_id; ibus_emojier_travel_direction_type_id = g_enum_register_static ("IBusEmojierTravelDirection", values); return ibus_emojier_travel_direction_type_id; } static GType ibus_emojier_travel_direction_get_type (void) { static volatile gsize ibus_emojier_travel_direction_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_travel_direction_type_id__volatile)) { GType ibus_emojier_travel_direction_type_id; ibus_emojier_travel_direction_type_id = ibus_emojier_travel_direction_get_type_once (); g_once_init_leave (&ibus_emojier_travel_direction_type_id__volatile, ibus_emojier_travel_direction_type_id); } return ibus_emojier_travel_direction_type_id__volatile; } static void _ibus_emojier_check_action_variant_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self) { ibus_emojier_check_action_variant_cb ((IBusEmojier*) self, _sender, parameter); } static void _ibus_emojier_action_close_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self) { ibus_emojier_action_close_cb ((IBusEmojier*) self, _sender, parameter); } static void __lambda12_ (IBusEmojier* self) { gboolean _tmp0_ = FALSE; GMainLoop* _tmp1_; _tmp1_ = self->priv->m_loop; if (_tmp1_ != NULL) { GMainLoop* _tmp2_; _tmp2_ = self->priv->m_loop; _tmp0_ = g_main_loop_is_running (_tmp2_); } else { _tmp0_ = FALSE; } if (_tmp0_) { GMainLoop* _tmp3_; _tmp3_ = self->priv->m_loop; g_main_loop_quit (_tmp3_); } } static void ___lambda12__gtk_widget_hide (GtkWidget* _sender, gpointer self) { __lambda12_ ((IBusEmojier*) self); } static void __lambda13_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a) { g_return_if_fail (w != NULL); g_return_if_fail (a != NULL); ibus_emojier_adjust_window_position (self); } static void ___lambda13__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self) { __lambda13_ ((IBusEmojier*) self, _sender, allocation); } IBusEmojier* ibus_emojier_construct (GType object_type) { IBusEmojier * self = NULL; GSimpleAction* action = NULL; GVariant* _tmp0_; GVariant* _tmp1_; GSimpleAction* _tmp2_; GSimpleAction* _tmp3_; GSimpleAction* _tmp4_; GSimpleAction* _tmp5_; GSimpleAction* _tmp6_; GSimpleAction* _tmp7_; GSimpleAction* _tmp8_; const gchar* _tmp9_; const gchar* _tmp11_; gchar** _tmp13_; gint _tmp13__length1; gchar** _tmp15_; gint _tmp15__length1; GtkBox* _tmp17_; GtkBox* _tmp18_; IBusLookupTable* _tmp19_; IBusLookupTable* _tmp20_; GHashTable* _tmp21_; GObject* _tmp22_; GObject* _tmp23_; self = (IBusEmojier*) g_object_new (object_type, "type", GTK_WINDOW_POPUP, NULL); _tmp0_ = g_variant_new_boolean (ibus_emojier_m_show_emoji_variant); g_variant_ref_sink (_tmp0_); _tmp1_ = _tmp0_; _tmp2_ = g_simple_action_new_stateful ("variant", NULL, _tmp1_); _tmp3_ = _tmp2_; _g_variant_unref0 (_tmp1_); action = _tmp3_; _tmp4_ = action; g_signal_connect_object (_tmp4_, "activate", (GCallback) _ibus_emojier_check_action_variant_cb_g_simple_action_activate, self, 0); _tmp5_ = action; g_action_map_add_action ((GActionMap*) self, (GAction*) _tmp5_); _tmp6_ = g_simple_action_new ("close", NULL); _g_object_unref0 (action); action = _tmp6_; _tmp7_ = action; g_signal_connect_object (_tmp7_, "activate", (GCallback) _ibus_emojier_action_close_cb_g_simple_action_activate, self, 0); _tmp8_ = action; g_action_map_add_action ((GActionMap*) self, (GAction*) _tmp8_); _tmp9_ = ibus_emojier_m_current_lang_id; if (_tmp9_ == NULL) { gchar* _tmp10_; _tmp10_ = g_strdup ("en"); _g_free0 (ibus_emojier_m_current_lang_id); ibus_emojier_m_current_lang_id = _tmp10_; } _tmp11_ = ibus_emojier_m_emoji_font_family; if (_tmp11_ == NULL) { gchar* _tmp12_; _tmp12_ = g_strdup ("Monospace"); _g_free0 (ibus_emojier_m_emoji_font_family); ibus_emojier_m_emoji_font_family = _tmp12_; ibus_emojier_m_emoji_font_changed = TRUE; } if (ibus_emojier_m_emoji_font_size == 0) { ibus_emojier_m_emoji_font_size = 16; ibus_emojier_m_emoji_font_changed = TRUE; } _tmp13_ = ibus_emojier_m_favorites; _tmp13__length1 = ibus_emojier_m_favorites_length1; if (_tmp13_ == NULL) { gchar** _tmp14_; _tmp14_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorites = (_vala_array_free (ibus_emojier_m_favorites, ibus_emojier_m_favorites_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorites = _tmp14_; ibus_emojier_m_favorites_length1 = 0; _ibus_emojier_m_favorites_size_ = ibus_emojier_m_favorites_length1; } _tmp15_ = ibus_emojier_m_favorite_annotations; _tmp15__length1 = ibus_emojier_m_favorite_annotations_length1; if (_tmp15_ == NULL) { gchar** _tmp16_; _tmp16_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorite_annotations = (_vala_array_free (ibus_emojier_m_favorite_annotations, ibus_emojier_m_favorite_annotations_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorite_annotations = _tmp16_; ibus_emojier_m_favorite_annotations_length1 = 0; _ibus_emojier_m_favorite_annotations_size_ = ibus_emojier_m_favorite_annotations_length1; } ibus_emojier_set_css_data (self); _tmp17_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp17_); _g_object_unref0 (self->priv->m_vbox); self->priv->m_vbox = _tmp17_; _tmp18_ = self->priv->m_vbox; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp18_); _tmp19_ = ibus_lookup_table_new ((guint) 1, (guint) 0, TRUE, TRUE); g_object_ref_sink (_tmp19_); _g_object_unref0 (self->priv->m_lookup_table); self->priv->m_lookup_table = _tmp19_; _tmp20_ = self->priv->m_lookup_table; ibus_lookup_table_set_page_size (_tmp20_, IBUS_EMOJIER_EMOJI_GRID_PAGE * IBUS_EMOJIER_EMOJI_GRID_PAGE); g_signal_connect_object ((GtkWidget*) self, "hide", (GCallback) ___lambda12__gtk_widget_hide, self, 0); g_signal_connect_object ((GtkWidget*) self, "size-allocate", (GCallback) ___lambda13__gtk_widget_size_allocate, self, 0); _tmp21_ = ibus_emojier_m_annotation_to_emojis_dict; if (_tmp21_ == NULL) { ibus_emojier_reload_emoji_dict (); } _tmp22_ = ibus_emojier_get_load_progress_object (); _tmp23_ = _tmp22_; _g_object_unref0 (_tmp23_); _g_object_unref0 (action); return self; } IBusEmojier* ibus_emojier_new (void) { return ibus_emojier_construct (TYPE_IBUS_EMOJIER); } static void ibus_emojier_reload_emoji_dict (void) { const gchar* _tmp0_; GList* annotations = NULL; GHashTable* _tmp10_; GList* _tmp11_; GList* _tmp12_; ibus_emojier_init_emoji_dict (); ibus_emojier_make_emoji_dict ("en"); _tmp0_ = ibus_emojier_m_current_lang_id; if (g_strcmp0 (_tmp0_, "en") != 0) { gchar** lang_ids = NULL; const gchar* _tmp1_; gchar** _tmp2_; gchar** _tmp3_; gint lang_ids_length1; gint _lang_ids_size_; gchar** _tmp4_; gint _tmp4__length1; const gchar* _tmp9_; _tmp1_ = ibus_emojier_m_current_lang_id; _tmp3_ = _tmp2_ = g_strsplit (_tmp1_, "_", 0); lang_ids = _tmp3_; lang_ids_length1 = _vala_array_length (_tmp2_); _lang_ids_size_ = lang_ids_length1; _tmp4_ = lang_ids; _tmp4__length1 = lang_ids_length1; if (_tmp4__length1 > 1) { gchar* sub_id = NULL; gchar** _tmp5_; gint _tmp5__length1; const gchar* _tmp6_; gchar* _tmp7_; const gchar* _tmp8_; _tmp5_ = lang_ids; _tmp5__length1 = lang_ids_length1; _tmp6_ = _tmp5_[0]; _tmp7_ = g_strdup (_tmp6_); sub_id = _tmp7_; _tmp8_ = sub_id; ibus_emojier_make_emoji_dict (_tmp8_); _g_free0 (sub_id); } _tmp9_ = ibus_emojier_m_current_lang_id; ibus_emojier_make_emoji_dict (_tmp9_); lang_ids = (_vala_array_free (lang_ids, lang_ids_length1, (GDestroyNotify) g_free), NULL); } ibus_emojier_add_variants_to_component (); _tmp10_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp11_ = g_hash_table_get_keys (_tmp10_); annotations = _tmp11_; _tmp12_ = annotations; { GList* annotation_collection = NULL; GList* annotation_it = NULL; annotation_collection = _tmp12_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { const gchar* annotation = NULL; annotation = (const gchar*) annotation_it->data; { const gchar* _tmp13_; gint _tmp14_; gint _tmp15_; _tmp13_ = annotation; _tmp14_ = strlen (_tmp13_); _tmp15_ = _tmp14_; if (ibus_emojier_m_emoji_max_seq_len < _tmp15_) { const gchar* _tmp16_; gint _tmp17_; gint _tmp18_; _tmp16_ = annotation; _tmp17_ = strlen (_tmp16_); _tmp18_ = _tmp17_; ibus_emojier_m_emoji_max_seq_len = _tmp18_; } } } } ibus_emojier_update_favorite_emoji_dict (); (annotations == NULL) ? NULL : (annotations = (g_list_free (annotations), NULL)); } static void _g_free0_ (gpointer var) { var = (g_free (var), NULL); } static inline void _g_slist_free__g_free0_ (GSList* self) { g_slist_free_full (self, (GDestroyNotify) _g_free0_); } static void __g_slist_free__g_free0_0_ (gpointer var) { (var == NULL) ? NULL : (var = (_g_slist_free__g_free0_ (var), NULL)); } static void _g_object_unref0_ (gpointer var) { (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); } static void _g_slist_free0_ (gpointer var) { (var == NULL) ? NULL : (var = (g_slist_free (var), NULL)); } static void ibus_emojier_init_emoji_dict (void) { GHashFunc _tmp0_; GEqualFunc _tmp1_; GHashTable* _tmp2_; GHashFunc _tmp3_; GEqualFunc _tmp4_; GHashTable* _tmp5_; GHashFunc _tmp6_; GEqualFunc _tmp7_; GHashTable* _tmp8_; GHashFunc _tmp9_; GEqualFunc _tmp10_; GHashTable* _tmp11_; GHashTable* _tmp12_; GHashTable* _tmp16_; _tmp0_ = g_str_hash; _tmp1_ = g_str_equal; _tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _g_free0_, __g_slist_free__g_free0_0_); _g_hash_table_unref0 (ibus_emojier_m_annotation_to_emojis_dict); ibus_emojier_m_annotation_to_emojis_dict = _tmp2_; _tmp3_ = g_str_hash; _tmp4_ = g_str_equal; _tmp5_ = g_hash_table_new_full (_tmp3_, _tmp4_, _g_free0_, _g_object_unref0_); _g_hash_table_unref0 (ibus_emojier_m_emoji_to_data_dict); ibus_emojier_m_emoji_to_data_dict = _tmp5_; _tmp6_ = g_str_hash; _tmp7_ = g_str_equal; _tmp8_ = g_hash_table_new_full (_tmp6_, _tmp7_, _g_free0_, __g_slist_free__g_free0_0_); _g_hash_table_unref0 (ibus_emojier_m_category_to_emojis_dict); ibus_emojier_m_category_to_emojis_dict = _tmp8_; _tmp9_ = g_str_hash; _tmp10_ = g_str_equal; _tmp11_ = g_hash_table_new_full (_tmp9_, _tmp10_, _g_free0_, __g_slist_free__g_free0_0_); _g_hash_table_unref0 (ibus_emojier_m_emoji_to_emoji_variants_dict); ibus_emojier_m_emoji_to_emoji_variants_dict = _tmp11_; _tmp12_ = ibus_emojier_m_unicode_to_data_dict; if (_tmp12_ == NULL) { GHashFunc _tmp13_; GEqualFunc _tmp14_; GHashTable* _tmp15_; _tmp13_ = g_direct_hash; _tmp14_ = g_direct_equal; _tmp15_ = g_hash_table_new_full (_tmp13_, _tmp14_, NULL, _g_object_unref0_); _g_hash_table_unref0 (ibus_emojier_m_unicode_to_data_dict); ibus_emojier_m_unicode_to_data_dict = _tmp15_; } _tmp16_ = ibus_emojier_m_name_to_unicodes_dict; if (_tmp16_ == NULL) { GHashFunc _tmp17_; GEqualFunc _tmp18_; GHashTable* _tmp19_; _tmp17_ = g_str_hash; _tmp18_ = g_str_equal; _tmp19_ = g_hash_table_new_full (_tmp17_, _tmp18_, _g_free0_, _g_slist_free0_); _g_hash_table_unref0 (ibus_emojier_m_name_to_unicodes_dict); ibus_emojier_m_name_to_unicodes_dict = _tmp19_; } } static inline void _g_slist_free__g_object_unref0_ (GSList* self) { g_slist_free_full (self, (GDestroyNotify) _g_object_unref0_); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void ibus_emojier_make_emoji_dict (const gchar* lang) { GSList* emoji_list = NULL; gchar* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; GSList* _tmp4_; GSList* _tmp5_; GSList* _tmp6_; GSList* _tmp7_; g_return_if_fail (lang != NULL); _tmp0_ = g_strconcat (PKGDATADIR "/dicts/emoji-", lang, NULL); _tmp1_ = _tmp0_; _tmp2_ = g_strconcat (_tmp1_, ".dict", NULL); _tmp3_ = _tmp2_; _tmp4_ = ibus_emoji_data_load (_tmp3_); _tmp5_ = _tmp4_; _g_free0 (_tmp3_); _g_free0 (_tmp1_); emoji_list = _tmp5_; _tmp6_ = emoji_list; if (_tmp6_ == NULL) { (emoji_list == NULL) ? NULL : (emoji_list = (_g_slist_free__g_object_unref0_ (emoji_list), NULL)); return; } _tmp7_ = emoji_list; { GSList* data_collection = NULL; GSList* data_it = NULL; data_collection = _tmp7_; for (data_it = data_collection; data_it != NULL; data_it = data_it->next) { IBusEmojiData* _tmp8_; IBusEmojiData* data = NULL; _tmp8_ = _g_object_ref0 ((IBusEmojiData*) data_it->data); data = _tmp8_; { IBusEmojiData* _tmp9_; IBusEmojiData* _tmp10_; IBusEmojiData* _tmp11_; _tmp9_ = data; ibus_emojier_update_emoji_to_data_dict (_tmp9_, lang); _tmp10_ = data; ibus_emojier_update_annotation_to_emojis_dict (_tmp10_); _tmp11_ = data; ibus_emojier_update_category_to_emojis_dict (_tmp11_, lang); _g_object_unref0 (data); } } } (emoji_list == NULL) ? NULL : (emoji_list = (_g_slist_free__g_object_unref0_ (emoji_list), NULL)); } static void ibus_emojier_add_variants_to_component (void) { gchar* category = NULL; gchar* _tmp0_; GSList* hits = NULL; GHashTable* _tmp1_; const gchar* _tmp2_; gconstpointer _tmp3_; GSList* _tmp4_; GSList* _tmp9_; GSList* emoji_list = NULL; GSList* annotations = NULL; gchar* _tmp10_; IBusEmojiData* _data = NULL; GSList* _tmp11_; const gchar* _tmp12_; IBusEmojiData* _tmp13_; IBusEmojiData* _tmp14_; IBusEmojiData* _tmp15_; gchar* _tmp16_; gchar* _tmp17_; gchar* _tmp18_; GSList* _tmp19_; const gchar* _tmp20_; IBusEmojiData* _tmp21_; IBusEmojiData* _tmp22_; IBusEmojiData* _tmp23_; gchar* _tmp24_; gchar* _tmp25_; gchar* _tmp26_; GSList* _tmp27_; const gchar* _tmp28_; IBusEmojiData* _tmp29_; IBusEmojiData* _tmp30_; IBusEmojiData* _tmp31_; GSList* _tmp32_; _tmp0_ = g_strdup ("Component"); category = _tmp0_; _tmp1_ = ibus_emojier_m_category_to_emojis_dict; _tmp2_ = category; _tmp3_ = g_hash_table_lookup (_tmp1_, _tmp2_); hits = (GSList*) _tmp3_; _tmp4_ = hits; if (_tmp4_ == NULL) { gchar* _tmp5_; GHashTable* _tmp6_; const gchar* _tmp7_; gconstpointer _tmp8_; _tmp5_ = g_strdup ("component"); _g_free0 (category); category = _tmp5_; _tmp6_ = ibus_emojier_m_category_to_emojis_dict; _tmp7_ = category; _tmp8_ = g_hash_table_lookup (_tmp6_, _tmp7_); hits = (GSList*) _tmp8_; } _tmp9_ = hits; if (_tmp9_ == NULL) { _g_free0 (category); return; } emoji_list = NULL; annotations = NULL; _tmp10_ = g_strdup ("zero"); annotations = g_slist_append (annotations, _tmp10_); _tmp11_ = annotations; _tmp12_ = category; _tmp13_ = ibus_emoji_data_new ("emoji", "\u200d", "annotations", _tmp11_, "description", "ZERO WIDTH JOINER", "category", _tmp12_, NULL); g_object_ref_sink (_tmp13_); _g_object_unref0 (_data); _data = _tmp13_; _tmp14_ = _data; _tmp15_ = _g_object_ref0 (_tmp14_); emoji_list = g_slist_append (emoji_list, _tmp15_); (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); annotations = NULL; _tmp16_ = g_strdup ("text"); annotations = g_slist_append (annotations, _tmp16_); _tmp17_ = g_strdup ("variation"); annotations = g_slist_append (annotations, _tmp17_); _tmp18_ = g_strdup ("selector"); annotations = g_slist_append (annotations, _tmp18_); _tmp19_ = annotations; _tmp20_ = category; _tmp21_ = ibus_emoji_data_new ("emoji", "\ufe0e", "annotations", _tmp19_, "description", "VARIATION SELECTOR-15", "category", _tmp20_, NULL); g_object_ref_sink (_tmp21_); _g_object_unref0 (_data); _data = _tmp21_; _tmp22_ = _data; _tmp23_ = _g_object_ref0 (_tmp22_); emoji_list = g_slist_append (emoji_list, _tmp23_); (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); annotations = NULL; _tmp24_ = g_strdup ("emoji"); annotations = g_slist_append (annotations, _tmp24_); _tmp25_ = g_strdup ("variation"); annotations = g_slist_append (annotations, _tmp25_); _tmp26_ = g_strdup ("selector"); annotations = g_slist_append (annotations, _tmp26_); _tmp27_ = annotations; _tmp28_ = category; _tmp29_ = ibus_emoji_data_new ("emoji", "\ufe0f", "annotations", _tmp27_, "description", "VARIATION SELECTOR-16", "category", _tmp28_, NULL); g_object_ref_sink (_tmp29_); _g_object_unref0 (_data); _data = _tmp29_; _tmp30_ = _data; _tmp31_ = _g_object_ref0 (_tmp30_); emoji_list = g_slist_append (emoji_list, _tmp31_); _tmp32_ = emoji_list; { GSList* data_collection = NULL; GSList* data_it = NULL; data_collection = _tmp32_; for (data_it = data_collection; data_it != NULL; data_it = data_it->next) { IBusEmojiData* _tmp33_; IBusEmojiData* data = NULL; _tmp33_ = _g_object_ref0 ((IBusEmojiData*) data_it->data); data = _tmp33_; { IBusEmojiData* _tmp34_; IBusEmojiData* _tmp35_; IBusEmojiData* _tmp36_; _tmp34_ = data; ibus_emojier_update_emoji_to_data_dict (_tmp34_, "en"); _tmp35_ = data; ibus_emojier_update_annotation_to_emojis_dict (_tmp35_); _tmp36_ = data; ibus_emojier_update_category_to_emojis_dict (_tmp36_, "en"); _g_object_unref0 (data); } } } _g_object_unref0 (_data); (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); (emoji_list == NULL) ? NULL : (emoji_list = (_g_slist_free__g_object_unref0_ (emoji_list), NULL)); _g_free0 (category); } static gpointer _g_strdup_gcopy_func (gconstpointer src, gpointer self) { gpointer result; result = g_strdup ((const gchar*) src); return result; } static void ibus_emojier_update_annotation_to_emojis_dict (IBusEmojiData* data) { gchar* emoji = NULL; const gchar* _tmp0_; gchar* _tmp1_; GSList* annotations = NULL; GSList* _tmp2_; GSList* _tmp3_; g_return_if_fail (data != NULL); _tmp0_ = ibus_emoji_data_get_emoji (data); _tmp1_ = g_strdup (_tmp0_); emoji = _tmp1_; _tmp2_ = ibus_emoji_data_get_annotations (data); annotations = _tmp2_; _tmp3_ = annotations; { GSList* annotation_collection = NULL; GSList* annotation_it = NULL; annotation_collection = _tmp3_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { gchar* _tmp4_; gchar* annotation = NULL; _tmp4_ = g_strdup ((const gchar*) annotation_it->data); annotation = _tmp4_; { gboolean has_emoji = FALSE; GSList* hits = NULL; GHashTable* _tmp5_; const gchar* _tmp6_; gconstpointer _tmp7_; GSList* _tmp8_; GSList* _tmp9_; has_emoji = FALSE; _tmp5_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp6_ = annotation; _tmp7_ = g_hash_table_lookup (_tmp5_, _tmp6_); _tmp8_ = g_slist_copy_deep ((GSList*) _tmp7_, _g_strdup_gcopy_func, NULL); hits = _tmp8_; _tmp9_ = hits; { GSList* hit_emoji_collection = NULL; GSList* hit_emoji_it = NULL; hit_emoji_collection = _tmp9_; for (hit_emoji_it = hit_emoji_collection; hit_emoji_it != NULL; hit_emoji_it = hit_emoji_it->next) { gchar* _tmp10_; gchar* hit_emoji = NULL; _tmp10_ = g_strdup ((const gchar*) hit_emoji_it->data); hit_emoji = _tmp10_; { const gchar* _tmp11_; const gchar* _tmp12_; _tmp11_ = hit_emoji; _tmp12_ = emoji; if (g_strcmp0 (_tmp11_, _tmp12_) == 0) { has_emoji = TRUE; _g_free0 (hit_emoji); break; } _g_free0 (hit_emoji); } } } if (!has_emoji) { const gchar* _tmp13_; gchar* _tmp14_; GHashTable* _tmp15_; const gchar* _tmp16_; gchar* _tmp17_; GSList* _tmp18_; GSList* _tmp19_; _tmp13_ = emoji; _tmp14_ = g_strdup (_tmp13_); hits = g_slist_append (hits, _tmp14_); _tmp15_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp16_ = annotation; _tmp17_ = g_strdup (_tmp16_); _tmp18_ = hits; _tmp19_ = g_slist_copy_deep (_tmp18_, _g_strdup_gcopy_func, NULL); g_hash_table_replace (_tmp15_, _tmp17_, _tmp19_); } (hits == NULL) ? NULL : (hits = (_g_slist_free__g_free0_ (hits), NULL)); _g_free0 (annotation); } } } _g_free0 (emoji); } static gunichar string_get_char (const gchar* self, glong index) { gunichar result = 0U; g_return_val_if_fail (self != NULL, 0U); result = g_utf8_get_char (((gchar*) self) + index); return result; } static gchar* ibus_emojier_utf8_code_point (const gchar* str) { GString* buff = NULL; GString* _tmp0_; gint length = 0; GString* _tmp16_; const gchar* _tmp17_; gchar* _tmp18_; gchar* result = NULL; g_return_val_if_fail (str != NULL, NULL); _tmp0_ = g_string_new (""); buff = _tmp0_; length = g_utf8_strlen (str, (gssize) -1); if (length == 0) { GString* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; GString* _tmp4_; const gchar* _tmp5_; gchar* _tmp6_; _tmp1_ = buff; _tmp2_ = g_strdup_printf ("U+%04X", (guint) 0); _tmp3_ = _tmp2_; g_string_append (_tmp1_, _tmp3_); _g_free0 (_tmp3_); _tmp4_ = buff; _tmp5_ = _tmp4_->str; _tmp6_ = g_strdup (_tmp5_); result = _tmp6_; _g_string_free0 (buff); return result; } { gint i = 0; i = 0; { gboolean _tmp7_ = FALSE; _tmp7_ = TRUE; while (TRUE) { gunichar ch = 0U; const gchar* _tmp15_; if (!_tmp7_) { gint _tmp8_; _tmp8_ = i; i = _tmp8_ + 1; } _tmp7_ = FALSE; if (!(i < length)) { break; } ch = string_get_char (str, (glong) 0); if (i == 0) { GString* _tmp9_; gchar* _tmp10_; gchar* _tmp11_; _tmp9_ = buff; _tmp10_ = g_strdup_printf ("U+%04X", (guint) ch); _tmp11_ = _tmp10_; g_string_append (_tmp9_, _tmp11_); _g_free0 (_tmp11_); } else { GString* _tmp12_; gchar* _tmp13_; gchar* _tmp14_; _tmp12_ = buff; _tmp13_ = g_strdup_printf (" %04X", (guint) ch); _tmp14_ = _tmp13_; g_string_append (_tmp12_, _tmp14_); _g_free0 (_tmp14_); } _tmp15_ = g_utf8_next_char (str); str = _tmp15_; } } } _tmp16_ = buff; _tmp17_ = _tmp16_->str; _tmp18_ = g_strdup (_tmp17_); result = _tmp18_; _g_string_free0 (buff); return result; } static gchar* ibus_emojier_utf8_entity (const gchar* str) { GString* buff = NULL; GString* _tmp0_; gint length = 0; GString* _tmp8_; const gchar* _tmp9_; gchar* _tmp10_; gchar* result = NULL; g_return_val_if_fail (str != NULL, NULL); _tmp0_ = g_string_new (""); buff = _tmp0_; length = g_utf8_strlen (str, (gssize) -1); { gint i = 0; i = 0; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { gunichar ch = 0U; const gchar* _tmp7_; if (!_tmp1_) { gint _tmp2_; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; if (!(i < length)) { break; } ch = string_get_char (str, (glong) 0); switch (ch) { case '<': { GString* _tmp3_; _tmp3_ = buff; g_string_append (_tmp3_, "<"); break; } case '>': { GString* _tmp4_; _tmp4_ = buff; g_string_append (_tmp4_, ">"); break; } case '&': { GString* _tmp5_; _tmp5_ = buff; g_string_append (_tmp5_, "&"); break; } default: { GString* _tmp6_; _tmp6_ = buff; g_string_append_unichar (_tmp6_, ch); break; } } _tmp7_ = g_utf8_next_char (str); str = _tmp7_; } } } _tmp8_ = buff; _tmp9_ = _tmp8_->str; _tmp10_ = g_strdup (_tmp9_); result = _tmp10_; _g_string_free0 (buff); return result; } static gint string_index_of (const gchar* self, const gchar* needle, gint start_index) { gchar* _result_ = NULL; gchar* _tmp0_; gchar* _tmp1_; gint result = 0; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (needle != NULL, 0); _tmp0_ = strstr (((gchar*) self) + start_index, (gchar*) needle); _result_ = _tmp0_; _tmp1_ = _result_; if (_tmp1_ != NULL) { gchar* _tmp2_; _tmp2_ = _result_; result = (gint) (_tmp2_ - ((gchar*) self)); return result; } else { result = -1; return result; } } static glong string_strnlen (gchar* str, glong maxlen) { gchar* end = NULL; gchar* _tmp0_; gchar* _tmp1_; glong result = 0L; _tmp0_ = memchr (str, 0, (gsize) maxlen); end = _tmp0_; _tmp1_ = end; if (_tmp1_ == NULL) { result = maxlen; return result; } else { gchar* _tmp2_; _tmp2_ = end; result = (glong) (_tmp2_ - str); return result; } } static gchar* string_substring (const gchar* self, glong offset, glong len) { glong string_length = 0L; gboolean _tmp0_ = FALSE; gchar* _tmp3_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); if (offset >= ((glong) 0)) { _tmp0_ = len >= ((glong) 0); } else { _tmp0_ = FALSE; } if (_tmp0_) { string_length = string_strnlen ((gchar*) self, offset + len); } else { gint _tmp1_; gint _tmp2_; _tmp1_ = strlen (self); _tmp2_ = _tmp1_; string_length = (glong) _tmp2_; } if (offset < ((glong) 0)) { offset = string_length + offset; g_return_val_if_fail (offset >= ((glong) 0), NULL); } else { g_return_val_if_fail (offset <= string_length, NULL); } if (len < ((glong) 0)) { len = string_length - offset; } g_return_val_if_fail ((offset + len) <= string_length, NULL); _tmp3_ = g_strndup (((gchar*) self) + offset, (gsize) len); result = _tmp3_; return result; } static void ibus_emojier_update_annotations_with_description (IBusEmojiData* data, const gchar* description) { GSList* annotations = NULL; GSList* _tmp0_; GSList* _tmp1_; gboolean update_annotations = FALSE; gchar* former = NULL; gchar* later = NULL; gint index = 0; gchar** words = NULL; const gchar* _tmp11_; gchar** _tmp12_; gchar** _tmp13_; gint words_length1; gint _words_size_; gboolean _tmp14_ = FALSE; gchar** _tmp15_; gint _tmp15__length1; g_return_if_fail (data != NULL); g_return_if_fail (description != NULL); _tmp0_ = ibus_emoji_data_get_annotations (data); _tmp1_ = g_slist_copy_deep (_tmp0_, _g_strdup_gcopy_func, NULL); annotations = _tmp1_; update_annotations = FALSE; former = NULL; later = NULL; index = string_index_of (description, ": ", 0); if (index > 0) { gchar* _tmp2_; GSList* _tmp3_; const gchar* _tmp4_; GCompareFunc _tmp5_; GSList* _tmp6_; gchar* _tmp9_; _tmp2_ = string_substring (description, (glong) 0, (glong) index); _g_free0 (former); former = _tmp2_; _tmp3_ = annotations; _tmp4_ = former; _tmp5_ = ((GCompareFunc) g_strcmp0); _tmp6_ = g_slist_find_custom (_tmp3_, _tmp4_, _tmp5_); if (_tmp6_ == NULL) { const gchar* _tmp7_; gchar* _tmp8_; _tmp7_ = former; _tmp8_ = g_strdup (_tmp7_); annotations = g_slist_append (annotations, _tmp8_); update_annotations = TRUE; } _tmp9_ = string_substring (description, (glong) (index + 2), (glong) -1); _g_free0 (later); later = _tmp9_; } else { gchar* _tmp10_; _tmp10_ = g_strdup (description); _g_free0 (later); later = _tmp10_; } _tmp11_ = later; _tmp13_ = _tmp12_ = g_strsplit (_tmp11_, " ", 0); words = _tmp13_; words_length1 = _vala_array_length (_tmp12_); _words_size_ = words_length1; _tmp15_ = words; _tmp15__length1 = words_length1; if (_tmp15__length1 < 3) { GSList* _tmp16_; const gchar* _tmp17_; GCompareFunc _tmp18_; GSList* _tmp19_; _tmp16_ = annotations; _tmp17_ = later; _tmp18_ = ((GCompareFunc) g_strcmp0); _tmp19_ = g_slist_find_custom (_tmp16_, _tmp17_, _tmp18_); _tmp14_ = _tmp19_ == NULL; } else { _tmp14_ = FALSE; } if (_tmp14_) { const gchar* _tmp20_; gchar* _tmp21_; _tmp20_ = later; _tmp21_ = g_strdup (_tmp20_); annotations = g_slist_append (annotations, _tmp21_); update_annotations = TRUE; } if (update_annotations) { GSList* _tmp22_; GSList* _tmp23_; _tmp22_ = annotations; _tmp23_ = g_slist_copy_deep (_tmp22_, _g_strdup_gcopy_func, NULL); ibus_emoji_data_set_annotations (data, _tmp23_); } words = (_vala_array_free (words, words_length1, (GDestroyNotify) g_free), NULL); _g_free0 (later); _g_free0 (former); (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); } static void ibus_emojier_update_emoji_to_data_dict (IBusEmojiData* data, const gchar* lang) { gchar* emoji = NULL; const gchar* _tmp0_; gchar* _tmp1_; g_return_if_fail (data != NULL); g_return_if_fail (lang != NULL); _tmp0_ = ibus_emoji_data_get_emoji (data); _tmp1_ = g_strdup (_tmp0_); emoji = _tmp1_; if (g_strcmp0 (lang, "en") == 0) { gchar* description = NULL; const gchar* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; GHashTable* _tmp5_; const gchar* _tmp6_; gchar* _tmp7_; IBusEmojiData* _tmp8_; _tmp2_ = ibus_emoji_data_get_description (data); _tmp3_ = g_utf8_strdown (_tmp2_, (gssize) -1); description = _tmp3_; _tmp4_ = description; ibus_emojier_update_annotations_with_description (data, _tmp4_); _tmp5_ = ibus_emojier_m_emoji_to_data_dict; _tmp6_ = emoji; _tmp7_ = g_strdup (_tmp6_); _tmp8_ = _g_object_ref0 (data); g_hash_table_replace (_tmp5_, _tmp7_, _tmp8_); _g_free0 (description); } else { IBusEmojiData* en_data = NULL; GHashTable* _tmp9_; const gchar* _tmp10_; gconstpointer _tmp11_; IBusEmojiData* _tmp12_; gchar* trans_description = NULL; const gchar* _tmp17_; gchar* _tmp18_; IBusEmojiData* _tmp19_; const gchar* _tmp20_; const gchar* _tmp21_; gchar* _tmp22_; const gchar* _tmp23_; GSList* annotations = NULL; GSList* _tmp24_; GSList* en_annotations = NULL; IBusEmojiData* _tmp25_; GSList* _tmp26_; GSList* _tmp27_; IBusEmojiData* _tmp35_; GSList* _tmp36_; GSList* _tmp37_; en_data = NULL; _tmp9_ = ibus_emojier_m_emoji_to_data_dict; _tmp10_ = emoji; _tmp11_ = g_hash_table_lookup (_tmp9_, _tmp10_); en_data = (IBusEmojiData*) _tmp11_; _tmp12_ = en_data; if (_tmp12_ == NULL) { GHashTable* _tmp13_; const gchar* _tmp14_; gchar* _tmp15_; IBusEmojiData* _tmp16_; _tmp13_ = ibus_emojier_m_emoji_to_data_dict; _tmp14_ = emoji; _tmp15_ = g_strdup (_tmp14_); _tmp16_ = _g_object_ref0 (data); g_hash_table_insert (_tmp13_, _tmp15_, _tmp16_); _g_free0 (emoji); return; } _tmp17_ = ibus_emoji_data_get_description (data); _tmp18_ = g_strdup (_tmp17_); trans_description = _tmp18_; _tmp19_ = en_data; _tmp20_ = trans_description; ibus_emoji_data_set_description (_tmp19_, _tmp20_); _tmp21_ = trans_description; _tmp22_ = g_utf8_strdown (_tmp21_, (gssize) -1); _g_free0 (trans_description); trans_description = _tmp22_; _tmp23_ = trans_description; ibus_emojier_update_annotations_with_description (data, _tmp23_); _tmp24_ = ibus_emoji_data_get_annotations (data); annotations = _tmp24_; _tmp25_ = en_data; _tmp26_ = ibus_emoji_data_get_annotations (_tmp25_); en_annotations = _tmp26_; _tmp27_ = en_annotations; { GSList* annotation_collection = NULL; GSList* annotation_it = NULL; annotation_collection = _tmp27_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { gchar* _tmp28_; gchar* annotation = NULL; _tmp28_ = g_strdup ((const gchar*) annotation_it->data); annotation = _tmp28_; { GSList* _tmp29_; const gchar* _tmp30_; GCompareFunc _tmp31_; GSList* _tmp32_; _tmp29_ = annotations; _tmp30_ = annotation; _tmp31_ = ((GCompareFunc) g_strcmp0); _tmp32_ = g_slist_find_custom (_tmp29_, _tmp30_, _tmp31_); if (_tmp32_ == NULL) { const gchar* _tmp33_; gchar* _tmp34_; _tmp33_ = annotation; _tmp34_ = g_strdup (_tmp33_); annotations = g_slist_append (annotations, _tmp34_); } _g_free0 (annotation); } } } _tmp35_ = en_data; _tmp36_ = annotations; _tmp37_ = g_slist_copy_deep (_tmp36_, _g_strdup_gcopy_func, NULL); ibus_emoji_data_set_annotations (_tmp35_, _tmp37_); _g_free0 (trans_description); } _g_free0 (emoji); } static gint string_index_of_char (const gchar* self, gunichar c, gint start_index) { gchar* _result_ = NULL; gchar* _tmp0_; gchar* _tmp1_; gint result = 0; g_return_val_if_fail (self != NULL, 0); _tmp0_ = g_utf8_strchr (((gchar*) self) + start_index, (gssize) -1, c); _result_ = _tmp0_; _tmp1_ = _result_; if (_tmp1_ != NULL) { gchar* _tmp2_; _tmp2_ = _result_; result = (gint) (_tmp2_ - ((gchar*) self)); return result; } else { result = -1; return result; } } static gchar* g_unichar_to_string (gunichar self) { gchar* str = NULL; gchar* _tmp0_; gchar* result = NULL; _tmp0_ = g_new0 (gchar, 7); str = (gchar*) _tmp0_; g_unichar_to_utf8 (self, str); result = str; return result; } static void ibus_emojier_update_category_to_emojis_dict (IBusEmojiData* data, const gchar* lang) { gchar* emoji = NULL; const gchar* _tmp0_; gchar* _tmp1_; gchar* category = NULL; const gchar* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; g_return_if_fail (data != NULL); g_return_if_fail (lang != NULL); _tmp0_ = ibus_emoji_data_get_emoji (data); _tmp1_ = g_strdup (_tmp0_); emoji = _tmp1_; _tmp2_ = ibus_emoji_data_get_category (data); _tmp3_ = g_strdup (_tmp2_); category = _tmp3_; _tmp4_ = category; if (g_strcmp0 (_tmp4_, "") == 0) { gchar* _tmp5_; _tmp5_ = g_strdup (IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS); _g_free0 (category); category = _tmp5_; } if (g_strcmp0 (lang, "en") == 0) { gboolean has_variant = FALSE; const gchar* _tmp6_; gboolean has_emoji = FALSE; GSList* hits = NULL; GHashTable* _tmp40_; const gchar* _tmp41_; gconstpointer _tmp42_; GSList* _tmp43_; GSList* _tmp44_; has_variant = FALSE; _tmp6_ = category; if (g_ascii_strcasecmp (_tmp6_, "component") != 0) { { gunichar* ch_collection = NULL; gint ch_collection_length1 = 0; gint _ch_collection_size_ = 0; gint ch_it = 0; ch_collection = IBUS_EMOJIER_EMOJI_VARIANT_LIST; ch_collection_length1 = G_N_ELEMENTS (IBUS_EMOJIER_EMOJI_VARIANT_LIST); for (ch_it = 0; ch_it < ch_collection_length1; ch_it = ch_it + 1) { gunichar ch = 0U; ch = ch_collection[ch_it]; { const gchar* _tmp7_; _tmp7_ = emoji; if (string_index_of_char (_tmp7_, ch, 0) >= 0) { has_variant = TRUE; break; } } } } } if (has_variant) { gunichar base_ch = 0U; const gchar* _tmp8_; gchar* base_emoji = NULL; gchar* _tmp9_; GString* buff = NULL; GString* _tmp10_; GString* _tmp11_; GString* _tmp12_; GHashTable* _tmp13_; GString* _tmp14_; const gchar* _tmp15_; gconstpointer _tmp16_; GSList* variants = NULL; GHashTable* _tmp20_; const gchar* _tmp21_; gconstpointer _tmp22_; GSList* _tmp23_; GSList* _tmp24_; const gchar* _tmp25_; GCompareFunc _tmp26_; GSList* _tmp27_; _tmp8_ = emoji; base_ch = string_get_char (_tmp8_, (glong) 0); _tmp9_ = g_unichar_to_string (base_ch); base_emoji = _tmp9_; _tmp10_ = g_string_new (""); buff = _tmp10_; _tmp11_ = buff; g_string_append_unichar (_tmp11_, base_ch); _tmp12_ = buff; g_string_append_unichar (_tmp12_, (gunichar) 0xfe0f); _tmp13_ = ibus_emojier_m_emoji_to_data_dict; _tmp14_ = buff; _tmp15_ = _tmp14_->str; _tmp16_ = g_hash_table_lookup (_tmp13_, _tmp15_); if (((IBusEmojiData*) _tmp16_) != NULL) { GString* _tmp17_; const gchar* _tmp18_; gchar* _tmp19_; _tmp17_ = buff; _tmp18_ = _tmp17_->str; _tmp19_ = g_strdup (_tmp18_); _g_free0 (base_emoji); base_emoji = _tmp19_; } _tmp20_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp21_ = base_emoji; _tmp22_ = g_hash_table_lookup (_tmp20_, _tmp21_); _tmp23_ = g_slist_copy_deep ((GSList*) _tmp22_, _g_strdup_gcopy_func, NULL); variants = _tmp23_; _tmp24_ = variants; _tmp25_ = emoji; _tmp26_ = ((GCompareFunc) g_strcmp0); _tmp27_ = g_slist_find_custom (_tmp24_, _tmp25_, _tmp26_); if (_tmp27_ == NULL) { GSList* _tmp28_; const gchar* _tmp31_; const gchar* _tmp32_; GHashTable* _tmp35_; const gchar* _tmp36_; gchar* _tmp37_; GSList* _tmp38_; GSList* _tmp39_; _tmp28_ = variants; if (_tmp28_ == NULL) { const gchar* _tmp29_; gchar* _tmp30_; _tmp29_ = base_emoji; _tmp30_ = g_strdup (_tmp29_); variants = g_slist_append (variants, _tmp30_); } _tmp31_ = base_emoji; _tmp32_ = emoji; if (g_strcmp0 (_tmp31_, _tmp32_) != 0) { const gchar* _tmp33_; gchar* _tmp34_; _tmp33_ = emoji; _tmp34_ = g_strdup (_tmp33_); variants = g_slist_append (variants, _tmp34_); } _tmp35_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp36_ = base_emoji; _tmp37_ = g_strdup (_tmp36_); _tmp38_ = variants; _tmp39_ = g_slist_copy_deep (_tmp38_, _g_strdup_gcopy_func, NULL); g_hash_table_replace (_tmp35_, _tmp37_, _tmp39_); } (variants == NULL) ? NULL : (variants = (_g_slist_free__g_free0_ (variants), NULL)); _g_string_free0 (buff); _g_free0 (base_emoji); _g_free0 (category); _g_free0 (emoji); return; } has_emoji = FALSE; _tmp40_ = ibus_emojier_m_category_to_emojis_dict; _tmp41_ = category; _tmp42_ = g_hash_table_lookup (_tmp40_, _tmp41_); _tmp43_ = g_slist_copy_deep ((GSList*) _tmp42_, _g_strdup_gcopy_func, NULL); hits = _tmp43_; _tmp44_ = hits; { GSList* hit_emoji_collection = NULL; GSList* hit_emoji_it = NULL; hit_emoji_collection = _tmp44_; for (hit_emoji_it = hit_emoji_collection; hit_emoji_it != NULL; hit_emoji_it = hit_emoji_it->next) { gchar* _tmp45_; gchar* hit_emoji = NULL; _tmp45_ = g_strdup ((const gchar*) hit_emoji_it->data); hit_emoji = _tmp45_; { const gchar* _tmp46_; const gchar* _tmp47_; _tmp46_ = hit_emoji; _tmp47_ = emoji; if (g_strcmp0 (_tmp46_, _tmp47_) == 0) { has_emoji = TRUE; _g_free0 (hit_emoji); break; } _g_free0 (hit_emoji); } } } if (!has_emoji) { const gchar* _tmp48_; gchar* _tmp49_; GHashTable* _tmp50_; const gchar* _tmp51_; gchar* _tmp52_; GSList* _tmp53_; GSList* _tmp54_; _tmp48_ = emoji; _tmp49_ = g_strdup (_tmp48_); hits = g_slist_append (hits, _tmp49_); _tmp50_ = ibus_emojier_m_category_to_emojis_dict; _tmp51_ = category; _tmp52_ = g_strdup (_tmp51_); _tmp53_ = hits; _tmp54_ = g_slist_copy_deep (_tmp53_, _g_strdup_gcopy_func, NULL); g_hash_table_replace (_tmp50_, _tmp52_, _tmp54_); } (hits == NULL) ? NULL : (hits = (_g_slist_free__g_free0_ (hits), NULL)); } _g_free0 (category); _g_free0 (emoji); } static void ibus_emojier_make_unicode_block_dict (void) { GSList* _tmp0_; GSList* _tmp1_; _tmp0_ = ibus_unicode_block_load (PKGDATADIR "/dicts/unicode-blocks.dict"); (ibus_emojier_m_unicode_block_list == NULL) ? NULL : (ibus_emojier_m_unicode_block_list = (_g_slist_free__g_object_unref0_ (ibus_emojier_m_unicode_block_list), NULL)); ibus_emojier_m_unicode_block_list = _tmp0_; _tmp1_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp1_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { const gchar* name = NULL; IBusUnicodeBlock* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gint _tmp5_; gint _tmp6_; _tmp2_ = block; _tmp3_ = ibus_unicode_block_get_name (_tmp2_); name = _tmp3_; _tmp4_ = name; _tmp5_ = strlen (_tmp4_); _tmp6_ = _tmp5_; if (ibus_emojier_m_emoji_max_seq_len < _tmp6_) { const gchar* _tmp7_; gint _tmp8_; gint _tmp9_; _tmp7_ = name; _tmp8_ = strlen (_tmp7_); _tmp9_ = _tmp8_; ibus_emojier_m_emoji_max_seq_len = _tmp9_; } } } } } static void ibus_emojier_make_unicode_name_dict (GObject* source_object) { g_return_if_fail (source_object != NULL); ibus_unicode_data_load_async (PKGDATADIR "/dicts/unicode-names.dict", source_object, NULL, (IBusUnicodeDataLoadAsyncFinish) ibus_emojier_make_unicode_name_dict_finish, NULL); } static void ibus_emojier_make_unicode_name_dict_finish (GSList* unicode_list) { GList* names = NULL; GHashTable* _tmp3_; GList* _tmp4_; GList* _tmp5_; if (unicode_list == NULL) { return; } { GSList* data_collection = NULL; GSList* data_it = NULL; data_collection = unicode_list; for (data_it = data_collection; data_it != NULL; data_it = data_it->next) { IBusUnicodeData* _tmp0_; IBusUnicodeData* data = NULL; _tmp0_ = _g_object_ref0 ((IBusUnicodeData*) data_it->data); data = _tmp0_; { IBusUnicodeData* _tmp1_; IBusUnicodeData* _tmp2_; _tmp1_ = data; ibus_emojier_update_unicode_to_data_dict (_tmp1_); _tmp2_ = data; ibus_emojier_update_name_to_unicodes_dict (_tmp2_); _g_object_unref0 (data); } } } _tmp3_ = ibus_emojier_m_name_to_unicodes_dict; _tmp4_ = g_hash_table_get_keys (_tmp3_); names = _tmp4_; _tmp5_ = names; { GList* name_collection = NULL; GList* name_it = NULL; name_collection = _tmp5_; for (name_it = name_collection; name_it != NULL; name_it = name_it->next) { const gchar* name = NULL; name = (const gchar*) name_it->data; { const gchar* _tmp6_; gint _tmp7_; gint _tmp8_; _tmp6_ = name; _tmp7_ = strlen (_tmp6_); _tmp8_ = _tmp7_; if (ibus_emojier_m_emoji_max_seq_len < _tmp8_) { const gchar* _tmp9_; gint _tmp10_; gint _tmp11_; _tmp9_ = name; _tmp10_ = strlen (_tmp9_); _tmp11_ = _tmp10_; ibus_emojier_m_emoji_max_seq_len = _tmp11_; } } } } ibus_emojier_m_loaded_unicode = TRUE; (names == NULL) ? NULL : (names = (g_list_free (names), NULL)); } static void ibus_emojier_update_unicode_to_data_dict (IBusUnicodeData* data) { gunichar code = 0U; GHashTable* _tmp0_; IBusUnicodeData* _tmp1_; g_return_if_fail (data != NULL); code = ibus_unicode_data_get_code (data); _tmp0_ = ibus_emojier_m_unicode_to_data_dict; _tmp1_ = _g_object_ref0 (data); g_hash_table_replace (_tmp0_, (gpointer) ((gintptr) code), _tmp1_); } static void ibus_emojier_update_name_to_unicodes_dict (IBusUnicodeData* data) { gunichar code = 0U; gchar** names = NULL; const gchar* _tmp0_; gchar* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_; gchar** _tmp4_; gint names_length1; gint _names_size_; gchar** _tmp5_; gint _tmp5__length1; g_return_if_fail (data != NULL); code = ibus_unicode_data_get_code (data); _tmp0_ = ibus_unicode_data_get_name (data); _tmp1_ = g_utf8_strdown (_tmp0_, (gssize) -1); _tmp2_ = ibus_unicode_data_get_alias (data); _tmp3_ = g_utf8_strdown (_tmp2_, (gssize) -1); _tmp4_ = g_new0 (gchar*, 2 + 1); _tmp4_[0] = _tmp1_; _tmp4_[1] = _tmp3_; names = _tmp4_; names_length1 = 2; _names_size_ = names_length1; _tmp5_ = names; _tmp5__length1 = names_length1; { gchar** name_collection = NULL; gint name_collection_length1 = 0; gint _name_collection_size_ = 0; gint name_it = 0; name_collection = _tmp5_; name_collection_length1 = _tmp5__length1; for (name_it = 0; name_it < name_collection_length1; name_it = name_it + 1) { const gchar* name = NULL; name = name_collection[name_it]; { const gchar* _tmp6_; gboolean has_code = FALSE; GSList* hits = NULL; GHashTable* _tmp7_; const gchar* _tmp8_; gconstpointer _tmp9_; GSList* _tmp10_; GSList* _tmp11_; _tmp6_ = name; if (g_strcmp0 (_tmp6_, "") == 0) { continue; } has_code = FALSE; _tmp7_ = ibus_emojier_m_name_to_unicodes_dict; _tmp8_ = name; _tmp9_ = g_hash_table_lookup (_tmp7_, _tmp8_); _tmp10_ = g_slist_copy ((GSList*) _tmp9_); hits = _tmp10_; _tmp11_ = hits; { GSList* hit_code_collection = NULL; GSList* hit_code_it = NULL; hit_code_collection = _tmp11_; for (hit_code_it = hit_code_collection; hit_code_it != NULL; hit_code_it = hit_code_it->next) { gunichar hit_code = 0U; hit_code = (gunichar) ((gintptr) hit_code_it->data); { if (hit_code == code) { has_code = TRUE; break; } } } } if (!has_code) { GHashTable* _tmp12_; const gchar* _tmp13_; gchar* _tmp14_; GSList* _tmp15_; GSList* _tmp16_; hits = g_slist_append (hits, (gpointer) ((gintptr) code)); _tmp12_ = ibus_emojier_m_name_to_unicodes_dict; _tmp13_ = name; _tmp14_ = g_strdup (_tmp13_); _tmp15_ = hits; _tmp16_ = g_slist_copy (_tmp15_); g_hash_table_replace (_tmp12_, _tmp14_, _tmp16_); } (hits == NULL) ? NULL : (hits = (g_slist_free (hits), NULL)); } } } names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); } static void ibus_emojier_set_css_data (IBusEmojier* self) { GdkDisplay* display = NULL; GdkDisplay* _tmp0_; GdkDisplay* _tmp1_; GdkScreen* _tmp2_ = NULL; GdkDisplay* _tmp3_; GdkScreen* screen = NULL; GdkScreen* _tmp6_; GdkScreen* _tmp7_; gchar* backup_locale = NULL; const gchar* _tmp8_; gchar* _tmp9_; const gchar* _tmp10_; ThemedRGBA* _tmp13_; guint bg_red = 0U; ThemedRGBA* _tmp15_; GdkRGBA* _tmp16_; GdkRGBA* _tmp17_; guint bg_green = 0U; ThemedRGBA* _tmp18_; GdkRGBA* _tmp19_; GdkRGBA* _tmp20_; guint bg_blue = 0U; ThemedRGBA* _tmp21_; GdkRGBA* _tmp22_; GdkRGBA* _tmp23_; gdouble bg_alpha = 0.0; ThemedRGBA* _tmp24_; GdkRGBA* _tmp25_; GdkRGBA* _tmp26_; gchar* data = NULL; gchar* _tmp27_; gchar* _tmp28_; gchar* _tmp29_; gchar* _tmp30_; const gchar* _tmp31_; gchar* _tmp32_; gchar* _tmp33_; gchar* _tmp34_; gchar* _tmp35_; gchar* _tmp36_; gchar* _tmp37_; guint fg_red = 0U; ThemedRGBA* _tmp38_; GdkRGBA* _tmp39_; GdkRGBA* _tmp40_; guint fg_green = 0U; ThemedRGBA* _tmp41_; GdkRGBA* _tmp42_; GdkRGBA* _tmp43_; guint fg_blue = 0U; ThemedRGBA* _tmp44_; GdkRGBA* _tmp45_; GdkRGBA* _tmp46_; gdouble fg_alpha = 0.0; ThemedRGBA* _tmp47_; GdkRGBA* _tmp48_; GdkRGBA* _tmp49_; ThemedRGBA* _tmp50_; GdkRGBA* _tmp51_; GdkRGBA* _tmp52_; ThemedRGBA* _tmp53_; GdkRGBA* _tmp54_; GdkRGBA* _tmp55_; ThemedRGBA* _tmp56_; GdkRGBA* _tmp57_; GdkRGBA* _tmp58_; ThemedRGBA* _tmp59_; GdkRGBA* _tmp60_; GdkRGBA* _tmp61_; const gchar* _tmp62_; gchar* _tmp63_; gchar* _tmp64_; gchar* _tmp65_; gchar* _tmp66_; const gchar* _tmp67_; gchar* _tmp68_; gchar* _tmp69_; gchar* _tmp70_; gchar* _tmp71_; gchar* _tmp72_; gchar* _tmp73_; gchar* _tmp74_; gchar* _tmp75_; gchar* _tmp76_; gchar* _tmp77_; gchar* _tmp78_; gchar* _tmp79_; gchar* _tmp80_; const gchar* _tmp81_; gchar* _tmp82_; gchar* _tmp83_; gchar* _tmp84_; gchar* _tmp85_; const gchar* _tmp86_; gchar* _tmp87_; gchar* _tmp88_; gchar* _tmp89_; gchar* _tmp90_; gchar* _tmp91_; gchar* _tmp92_; gchar* _tmp93_; gchar* _tmp94_; gchar* _tmp95_; GtkCssProvider* css_provider = NULL; GtkCssProvider* _tmp96_; const gchar* _tmp101_; GdkScreen* _tmp103_; GtkCssProvider* _tmp104_; GError* _inner_error0_ = 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_; GdkScreen* _tmp5_; _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 ("emojier.vala:762: Could not open display."); _g_object_unref0 (screen); _g_object_unref0 (display); return; } _tmp8_ = setlocale (LC_NUMERIC, NULL); _tmp9_ = g_strdup (_tmp8_); backup_locale = _tmp9_; _tmp10_ = setlocale (LC_NUMERIC, "en_US.UTF-8"); if (_tmp10_ == NULL) { const gchar* _tmp11_; _tmp11_ = setlocale (LC_NUMERIC, "C.UTF-8"); if (_tmp11_ == NULL) { const gchar* _tmp12_; _tmp12_ = setlocale (LC_NUMERIC, "C"); if (_tmp12_ == NULL) { g_warning ("emojier.vala:771: %s", "You don't install either en_US.UTF-8 or C.UTF-8 " "or C locale"); } } } _tmp13_ = self->priv->m_rgba; if (_tmp13_ == NULL) { ThemedRGBA* _tmp14_; _tmp14_ = themed_rgba_new ((GtkWidget*) self); _themed_rgba_unref0 (self->priv->m_rgba); self->priv->m_rgba = _tmp14_; } _tmp15_ = self->priv->m_rgba; _tmp16_ = themed_rgba_get_normal_bg (_tmp15_); _tmp17_ = _tmp16_; bg_red = (guint) ((*_tmp17_).red * 255); _tmp18_ = self->priv->m_rgba; _tmp19_ = themed_rgba_get_normal_bg (_tmp18_); _tmp20_ = _tmp19_; bg_green = (guint) ((*_tmp20_).green * 255); _tmp21_ = self->priv->m_rgba; _tmp22_ = themed_rgba_get_normal_bg (_tmp21_); _tmp23_ = _tmp22_; bg_blue = (guint) ((*_tmp23_).blue * 255); _tmp24_ = self->priv->m_rgba; _tmp25_ = themed_rgba_get_normal_bg (_tmp24_); _tmp26_ = _tmp25_; bg_alpha = (*_tmp26_).alpha; _tmp27_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", bg_red, bg_green, bg_blue, bg_alpha); _tmp28_ = _tmp27_; _tmp29_ = g_strconcat ("#IBusEmojierWhiteLabel { background-color: ", _tmp28_, NULL); _tmp30_ = _tmp29_; _tmp31_ = ibus_emojier_m_emoji_font_family; _tmp32_ = g_strdup_printf ("font-family: %s; font-size: %dpt; ", _tmp31_, ibus_emojier_m_emoji_font_size); _tmp33_ = _tmp32_; _tmp34_ = g_strconcat (_tmp30_, _tmp33_, NULL); _tmp35_ = _tmp34_; _tmp36_ = g_strconcat (_tmp35_, "border-width: 4px; border-radius: 3px; } ", NULL); _tmp37_ = _tmp36_; _g_free0 (_tmp35_); _g_free0 (_tmp33_); _g_free0 (_tmp30_); _g_free0 (_tmp28_); data = _tmp37_; _tmp38_ = self->priv->m_rgba; _tmp39_ = themed_rgba_get_selected_fg (_tmp38_); _tmp40_ = _tmp39_; fg_red = (guint) ((*_tmp40_).red * 255); _tmp41_ = self->priv->m_rgba; _tmp42_ = themed_rgba_get_selected_fg (_tmp41_); _tmp43_ = _tmp42_; fg_green = (guint) ((*_tmp43_).green * 255); _tmp44_ = self->priv->m_rgba; _tmp45_ = themed_rgba_get_selected_fg (_tmp44_); _tmp46_ = _tmp45_; fg_blue = (guint) ((*_tmp46_).blue * 255); _tmp47_ = self->priv->m_rgba; _tmp48_ = themed_rgba_get_selected_fg (_tmp47_); _tmp49_ = _tmp48_; fg_alpha = (*_tmp49_).alpha; _tmp50_ = self->priv->m_rgba; _tmp51_ = themed_rgba_get_selected_bg (_tmp50_); _tmp52_ = _tmp51_; bg_red = (guint) ((*_tmp52_).red * 255); _tmp53_ = self->priv->m_rgba; _tmp54_ = themed_rgba_get_selected_bg (_tmp53_); _tmp55_ = _tmp54_; bg_green = (guint) ((*_tmp55_).green * 255); _tmp56_ = self->priv->m_rgba; _tmp57_ = themed_rgba_get_selected_bg (_tmp56_); _tmp58_ = _tmp57_; bg_blue = (guint) ((*_tmp58_).blue * 255); _tmp59_ = self->priv->m_rgba; _tmp60_ = themed_rgba_get_selected_bg (_tmp59_); _tmp61_ = _tmp60_; bg_alpha = (*_tmp61_).alpha; _tmp62_ = data; _tmp63_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", fg_red, fg_green, fg_blue, fg_alpha); _tmp64_ = _tmp63_; _tmp65_ = g_strconcat ("#IBusEmojierSelectedLabel { color: ", _tmp64_, NULL); _tmp66_ = _tmp65_; _tmp67_ = ibus_emojier_m_emoji_font_family; _tmp68_ = g_strdup_printf ("font-family: %s; font-size: %dpt; ", _tmp67_, ibus_emojier_m_emoji_font_size); _tmp69_ = _tmp68_; _tmp70_ = g_strconcat (_tmp66_, _tmp69_, NULL); _tmp71_ = _tmp70_; _tmp72_ = g_strconcat (_tmp71_, "background-color: ", NULL); _tmp73_ = _tmp72_; _tmp74_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", bg_red, bg_green, bg_blue, bg_alpha); _tmp75_ = _tmp74_; _tmp76_ = g_strconcat (_tmp73_, _tmp75_, NULL); _tmp77_ = _tmp76_; _tmp78_ = g_strconcat (_tmp77_, "border-width: 4px; border-radius: 3px; }", NULL); _tmp79_ = _tmp78_; _tmp80_ = g_strconcat (_tmp62_, _tmp79_, NULL); _g_free0 (data); data = _tmp80_; _g_free0 (_tmp79_); _g_free0 (_tmp77_); _g_free0 (_tmp75_); _g_free0 (_tmp73_); _g_free0 (_tmp71_); _g_free0 (_tmp69_); _g_free0 (_tmp66_); _g_free0 (_tmp64_); _tmp81_ = data; _tmp82_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", fg_red, fg_green, fg_blue, fg_alpha); _tmp83_ = _tmp82_; _tmp84_ = g_strconcat ("#IBusEmojierGoldLabel { color: ", _tmp83_, NULL); _tmp85_ = _tmp84_; _tmp86_ = ibus_emojier_m_emoji_font_family; _tmp87_ = g_strdup_printf ("font-family: %s; font-size: %dpt; ", _tmp86_, ibus_emojier_m_emoji_font_size); _tmp88_ = _tmp87_; _tmp89_ = g_strconcat (_tmp85_, _tmp88_, NULL); _tmp90_ = _tmp89_; _tmp91_ = g_strconcat (_tmp90_, "background-color: #b09c5f; ", NULL); _tmp92_ = _tmp91_; _tmp93_ = g_strconcat (_tmp92_, "border-width: 4px; border-radius: 3px; }", NULL); _tmp94_ = _tmp93_; _tmp95_ = g_strconcat (_tmp81_, _tmp94_, NULL); _g_free0 (data); data = _tmp95_; _g_free0 (_tmp94_); _g_free0 (_tmp92_); _g_free0 (_tmp90_); _g_free0 (_tmp88_); _g_free0 (_tmp85_); _g_free0 (_tmp83_); _tmp96_ = gtk_css_provider_new (); css_provider = _tmp96_; { GtkCssProvider* _tmp97_; const gchar* _tmp98_; _tmp97_ = css_provider; _tmp98_ = data; gtk_css_provider_load_from_data (_tmp97_, _tmp98_, (gssize) -1, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch0_g_error; } } goto __finally0; __catch0_g_error: { GError* e = NULL; GError* _tmp99_; const gchar* _tmp100_; e = _inner_error0_; _inner_error0_ = NULL; _tmp99_ = e; _tmp100_ = _tmp99_->message; g_warning ("emojier.vala:819: Failed css_provider_from_data: %s", _tmp100_); _g_error_free0 (e); _g_object_unref0 (css_provider); _g_free0 (data); _g_free0 (backup_locale); _g_object_unref0 (screen); _g_object_unref0 (display); return; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_object_unref0 (css_provider); _g_free0 (data); _g_free0 (backup_locale); _g_object_unref0 (screen); _g_object_unref0 (display); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } _tmp101_ = backup_locale; if (_tmp101_ != NULL) { const gchar* _tmp102_; _tmp102_ = backup_locale; setlocale (LC_NUMERIC, _tmp102_); } else { setlocale (LC_NUMERIC, ""); } _tmp103_ = screen; _tmp104_ = css_provider; gtk_style_context_add_provider_for_screen (_tmp103_, (GtkStyleProvider*) _tmp104_, (guint) GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); _g_object_unref0 (css_provider); _g_free0 (data); _g_free0 (backup_locale); _g_object_unref0 (screen); _g_object_unref0 (display); } static void ibus_emojier_set_fixed_size (IBusEmojier* self) { g_return_if_fail (self != NULL); gtk_window_resize ((GtkWindow*) self, 20, 1); } static void ibus_emojier_remove_all_children (IBusEmojier* self) { IBusEmojierEListBox* _tmp0_; GtkBox* _tmp5_; GList* _tmp6_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_list_box; if (_tmp0_ != NULL) { IBusEmojierEListBox* _tmp1_; GList* _tmp2_; _tmp1_ = self->priv->m_list_box; _tmp2_ = gtk_container_get_children ((GtkContainer*) _tmp1_); { GList* w_collection = NULL; GList* w_it = NULL; w_collection = _tmp2_; for (w_it = w_collection; w_it != NULL; w_it = w_it->next) { GtkWidget* _tmp3_; GtkWidget* w = NULL; _tmp3_ = _g_object_ref0 ((GtkWidget*) w_it->data); w = _tmp3_; { GtkWidget* _tmp4_; _tmp4_ = w; gtk_widget_destroy (_tmp4_); _g_object_unref0 (w); } } (w_collection == NULL) ? NULL : (w_collection = (g_list_free (w_collection), NULL)); } _g_object_unref0 (self->priv->m_list_box); self->priv->m_list_box = NULL; } _tmp5_ = self->priv->m_vbox; _tmp6_ = gtk_container_get_children ((GtkContainer*) _tmp5_); { GList* w_collection = NULL; GList* w_it = NULL; w_collection = _tmp6_; for (w_it = w_collection; w_it != NULL; w_it = w_it->next) { GtkWidget* _tmp7_; GtkWidget* w = NULL; _tmp7_ = _g_object_ref0 ((GtkWidget*) w_it->data); w = _tmp7_; { gboolean _tmp8_ = FALSE; GtkWidget* _tmp9_; const gchar* _tmp10_; const gchar* _tmp11_; GtkWidget* _tmp15_; _tmp9_ = w; _tmp10_ = gtk_widget_get_name (_tmp9_); _tmp11_ = _tmp10_; if (g_strcmp0 (_tmp11_, "IBusEmojierEntry") == 0) { _tmp8_ = TRUE; } else { GtkWidget* _tmp12_; const gchar* _tmp13_; const gchar* _tmp14_; _tmp12_ = w; _tmp13_ = gtk_widget_get_name (_tmp12_); _tmp14_ = _tmp13_; _tmp8_ = g_strcmp0 (_tmp14_, "IBusEmojierTitleLabelBox") == 0; } if (_tmp8_) { _g_object_unref0 (w); continue; } _tmp15_ = w; gtk_widget_destroy (_tmp15_); _g_object_unref0 (w); } } (w_collection == NULL) ? NULL : (w_collection = (g_list_free (w_collection), NULL)); } } static void ibus_emojier_clamp_page (IBusEmojier* self) { GtkListBoxRow* row = NULL; GtkAllocation alloc = {0}; GtkAllocation _tmp8_ = {0}; GtkListBoxRow* _tmp9_; GtkAllocation _tmp10_ = {0}; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp11_; GtkAdjustment* _tmp12_; GtkAdjustment* _tmp13_; GtkAllocation _tmp14_; GtkAllocation _tmp15_; GtkAllocation _tmp16_; IBusLookupTable* _tmp17_; g_return_if_fail (self != NULL); if (self->priv->m_category_active_index >= 0) { IBusEmojierEListBox* _tmp0_; GtkListBoxRow* _tmp1_; GtkListBoxRow* _tmp2_; IBusEmojierEListBox* _tmp3_; GtkListBoxRow* _tmp4_; _tmp0_ = self->priv->m_list_box; _tmp1_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp0_, self->priv->m_category_active_index); _tmp2_ = _g_object_ref0 (_tmp1_); _g_object_unref0 (row); row = _tmp2_; _tmp3_ = self->priv->m_list_box; _tmp4_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp3_, _tmp4_); } else { IBusEmojierEListBox* _tmp5_; GtkListBoxRow* _tmp6_; GtkListBoxRow* _tmp7_; _tmp5_ = self->priv->m_list_box; _tmp6_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp5_, 0); _tmp7_ = _g_object_ref0 (_tmp6_); _g_object_unref0 (row); row = _tmp7_; } _tmp8_.x = 0; _tmp8_.y = 0; _tmp8_.width = 0; _tmp8_.height = 0; alloc = _tmp8_; _tmp9_ = row; gtk_widget_get_allocation ((GtkWidget*) _tmp9_, &_tmp10_); alloc = _tmp10_; _tmp11_ = self->priv->m_scrolled_window; _tmp12_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp11_); _tmp13_ = _g_object_ref0 (_tmp12_); adjustment = _tmp13_; _tmp14_ = alloc; _tmp15_ = alloc; _tmp16_ = alloc; gtk_adjustment_clamp_page (adjustment, (gdouble) _tmp14_.y, (gdouble) (_tmp15_.y + _tmp16_.height)); g_return_if_fail (self->priv->m_category_active_index >= 0); _tmp17_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp17_, (guint) self->priv->m_category_active_index); _g_object_unref0 (adjustment); _g_object_unref0 (row); } static void __lambda28_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow) { IBusEmojierEBoxRow* row = NULL; IBusEmojierEBoxRow* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; g_return_if_fail (box != NULL); g_return_if_fail (gtkrow != NULL); self->priv->m_category_active_index = gtk_list_box_row_get_index (gtkrow); _tmp0_ = _g_object_ref0 (IBUS_EMOJIER_IS_EBOX_ROW (gtkrow) ? ((IBusEmojierEBoxRow*) gtkrow) : NULL); row = _tmp0_; _tmp1_ = ibus_emojier_ebox_row_get_text (row); _tmp2_ = _tmp1_; ibus_emojier_show_emoji_for_category (self, _tmp2_); gtk_widget_show_all ((GtkWidget*) self); _g_object_unref0 (row); } static void ___lambda28__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self) { __lambda28_ ((IBusEmojier*) self, _sender, row); } static void ibus_emojier_show_category_list (IBusEmojier* self) { gboolean _tmp0_ = FALSE; IBusEmojierEScrolledWindow* _tmp7_; GtkBox* _tmp8_; IBusEmojierEScrolledWindow* _tmp9_; GtkViewport* viewport = NULL; GtkViewport* _tmp10_; IBusEmojierEScrolledWindow* _tmp11_; GtkViewport* _tmp12_; IBusEmojierEListBox* _tmp13_; GtkViewport* _tmp14_; IBusEmojierEListBox* _tmp15_; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp16_; GtkAdjustment* _tmp17_; GtkAdjustment* _tmp18_; IBusEmojierEListBox* _tmp19_; GtkAdjustment* _tmp20_; IBusEmojierEListBox* _tmp21_; guint ncandidates = 0U; IBusLookupTable* _tmp22_; IBusEmojierEScrolledWindow* _tmp39_; IBusEmojierEListBox* _tmp41_; IBusEmojierEListBox* _tmp42_; g_return_if_fail (self != NULL); if (self->priv->m_category_active_index >= 0) { IBusEmojierEListBox* _tmp1_; _tmp1_ = self->priv->m_list_box; _tmp0_ = _tmp1_ != NULL; } else { _tmp0_ = FALSE; } if (_tmp0_) { GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp2_; GtkListBoxRow* _tmp3_; GtkListBoxRow* _tmp4_; IBusEmojierEListBox* _tmp5_; GtkListBoxRow* _tmp6_; _tmp2_ = self->priv->m_list_box; _tmp3_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp2_, self->priv->m_category_active_index); _tmp4_ = _g_object_ref0 (_tmp3_); row = _tmp4_; _tmp5_ = self->priv->m_list_box; _tmp6_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp5_, _tmp6_); _g_object_unref0 (row); return; } if (self->priv->m_category_active_index < 0) { self->priv->m_category_active_index = 0; } ibus_emojier_remove_all_children (self); _tmp7_ = ibus_emojier_escrolled_window_new (NULL, NULL); g_object_ref_sink (_tmp7_); _g_object_unref0 (self->priv->m_scrolled_window); self->priv->m_scrolled_window = _tmp7_; ibus_emojier_set_fixed_size (self); _tmp8_ = self->priv->m_vbox; _tmp9_ = self->priv->m_scrolled_window; gtk_container_add ((GtkContainer*) _tmp8_, (GtkWidget*) _tmp9_); _tmp10_ = (GtkViewport*) gtk_viewport_new (NULL, NULL); g_object_ref_sink (_tmp10_); viewport = _tmp10_; _tmp11_ = self->priv->m_scrolled_window; _tmp12_ = viewport; gtk_container_add ((GtkContainer*) _tmp11_, (GtkWidget*) _tmp12_); _tmp13_ = ibus_emojier_elist_box_new (); g_object_ref_sink (_tmp13_); _g_object_unref0 (self->priv->m_list_box); self->priv->m_list_box = _tmp13_; _tmp14_ = viewport; _tmp15_ = self->priv->m_list_box; gtk_container_add ((GtkContainer*) _tmp14_, (GtkWidget*) _tmp15_); _tmp16_ = self->priv->m_scrolled_window; _tmp17_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp16_); _tmp18_ = _g_object_ref0 (_tmp17_); adjustment = _tmp18_; _tmp19_ = self->priv->m_list_box; _tmp20_ = adjustment; gtk_list_box_set_adjustment ((GtkListBox*) _tmp19_, _tmp20_); _tmp21_ = self->priv->m_list_box; g_signal_connect_object ((GtkListBox*) _tmp21_, "row-activated", (GCallback) ___lambda28__gtk_list_box_row_activated, self, 0); _tmp22_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp22_); { guint i = 0U; i = (guint) 0; { gboolean _tmp23_ = FALSE; _tmp23_ = TRUE; while (TRUE) { gchar* category = NULL; IBusLookupTable* _tmp25_; IBusText* _tmp26_; const gchar* _tmp27_; gchar* _tmp28_; IBusEmojierEBoxRow* row = NULL; const gchar* _tmp29_; IBusEmojierEBoxRow* _tmp30_; IBusEmojierEPaddedLabelBox* widget = NULL; const gchar* _tmp31_; IBusEmojierEPaddedLabelBox* _tmp32_; IBusEmojierEBoxRow* _tmp33_; IBusEmojierEPaddedLabelBox* _tmp34_; IBusEmojierEListBox* _tmp35_; IBusEmojierEBoxRow* _tmp36_; if (!_tmp23_) { guint _tmp24_; _tmp24_ = i; i = _tmp24_ + 1; } _tmp23_ = FALSE; if (!(i < ncandidates)) { break; } _tmp25_ = self->priv->m_lookup_table; _tmp26_ = ibus_lookup_table_get_candidate (_tmp25_, i); _tmp27_ = _tmp26_->text; _tmp28_ = g_strdup (_tmp27_); category = _tmp28_; _tmp29_ = category; _tmp30_ = ibus_emojier_ebox_row_new (_tmp29_); g_object_ref_sink (_tmp30_); row = _tmp30_; _tmp31_ = category; _tmp32_ = ibus_emojier_epadded_label_box_new (_ (_tmp31_), GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp32_); widget = _tmp32_; _tmp33_ = row; _tmp34_ = widget; gtk_container_add ((GtkContainer*) _tmp33_, (GtkWidget*) _tmp34_); _tmp35_ = self->priv->m_list_box; _tmp36_ = row; gtk_container_add ((GtkContainer*) _tmp35_, (GtkWidget*) _tmp36_); if (i == ((guint) self->priv->m_category_active_index)) { IBusEmojierEListBox* _tmp37_; IBusEmojierEBoxRow* _tmp38_; _tmp37_ = self->priv->m_list_box; _tmp38_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp37_, (GtkListBoxRow*) _tmp38_); } _g_object_unref0 (widget); _g_object_unref0 (row); _g_free0 (category); } } } _tmp39_ = self->priv->m_scrolled_window; gtk_widget_show_all ((GtkWidget*) _tmp39_); if (self->priv->m_category_active_index == -1) { IBusEmojierEListBox* _tmp40_; _tmp40_ = self->priv->m_list_box; gtk_list_box_unselect_all ((GtkListBox*) _tmp40_); } _tmp41_ = self->priv->m_list_box; gtk_list_box_invalidate_filter ((GtkListBox*) _tmp41_); _tmp42_ = self->priv->m_list_box; gtk_list_box_set_selection_mode ((GtkListBox*) _tmp42_, GTK_SELECTION_SINGLE); _g_object_unref0 (adjustment); _g_object_unref0 (viewport); } static void ibus_emojier_show_emoji_for_category (IBusEmojier* self, const gchar* category) { IBusLookupTable* _tmp17_; IBusText* _tmp18_; const gchar* _tmp19_; gchar* _tmp20_; g_return_if_fail (self != NULL); g_return_if_fail (category != NULL); if (g_strcmp0 (category, IBUS_EMOJIER_EMOJI_CATEGORY_FAVORITES) == 0) { IBusLookupTable* _tmp0_; gchar** _tmp1_; gint _tmp1__length1; gchar* _tmp6_; _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp0_); self->priv->m_candidate_panel_mode = TRUE; _tmp1_ = ibus_emojier_m_favorites; _tmp1__length1 = ibus_emojier_m_favorites_length1; { gchar** favorate_collection = NULL; gint favorate_collection_length1 = 0; gint _favorate_collection_size_ = 0; gint favorate_it = 0; favorate_collection = _tmp1_; favorate_collection_length1 = _tmp1__length1; for (favorate_it = 0; favorate_it < favorate_collection_length1; favorate_it = favorate_it + 1) { const gchar* favorate = NULL; favorate = favorate_collection[favorate_it]; { IBusText* text = NULL; const gchar* _tmp2_; IBusText* _tmp3_; IBusLookupTable* _tmp4_; IBusText* _tmp5_; _tmp2_ = favorate; _tmp3_ = ibus_text_new_from_string (_tmp2_); g_object_ref_sink (_tmp3_); text = _tmp3_; _tmp4_ = self->priv->m_lookup_table; _tmp5_ = text; ibus_lookup_table_append_candidate (_tmp4_, _tmp5_); _g_object_unref0 (text); } } } _tmp6_ = g_strdup (category); _g_free0 (self->priv->m_backward); self->priv->m_backward = _tmp6_; } else { if (g_strcmp0 (category, IBUS_EMOJIER_EMOJI_CATEGORY_UNICODE) == 0) { self->priv->m_category_active_index = -1; ibus_emojier_m_show_unicode = TRUE; ibus_emojier_update_unicode_blocks (self); return; } else { GSList* emojis = NULL; GHashTable* _tmp7_; gconstpointer _tmp8_; GSList* _tmp9_; IBusLookupTable* _tmp10_; GSList* _tmp11_; gchar* _tmp16_; _tmp7_ = ibus_emojier_m_category_to_emojis_dict; _tmp8_ = g_hash_table_lookup (_tmp7_, category); _tmp9_ = g_slist_copy_deep ((GSList*) _tmp8_, _g_strdup_gcopy_func, NULL); emojis = _tmp9_; _tmp10_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp10_); self->priv->m_candidate_panel_mode = TRUE; _tmp11_ = emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp11_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { IBusText* text = NULL; const gchar* _tmp12_; IBusText* _tmp13_; IBusLookupTable* _tmp14_; IBusText* _tmp15_; _tmp12_ = emoji; _tmp13_ = ibus_text_new_from_string (_tmp12_); g_object_ref_sink (_tmp13_); text = _tmp13_; _tmp14_ = self->priv->m_lookup_table; _tmp15_ = text; ibus_lookup_table_append_candidate (_tmp14_, _tmp15_); _g_object_unref0 (text); } } } _tmp16_ = g_strdup (category); _g_free0 (self->priv->m_backward); self->priv->m_backward = _tmp16_; (emojis == NULL) ? NULL : (emojis = (_g_slist_free__g_free0_ (emojis), NULL)); } } _tmp17_ = self->priv->m_lookup_table; _tmp18_ = ibus_lookup_table_get_candidate (_tmp17_, (guint) 0); _tmp19_ = _tmp18_->text; _tmp20_ = g_strdup (_tmp19_); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp20_; if (self->priv->m_backward_index >= 0) { IBusLookupTable* _tmp21_; _tmp21_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp21_, (guint) self->priv->m_backward_index); self->priv->m_backward_index = -1; } } static void ibus_emojier_show_emoji_variants (IBusEmojier* self, GSList* emojis) { IBusLookupTable* _tmp0_; IBusLookupTable* _tmp1_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_lookup_table; self->priv->m_backward_index = (gint) ibus_lookup_table_get_cursor_pos (_tmp0_); _tmp1_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp1_); { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = emojis; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { IBusText* text = NULL; const gchar* _tmp2_; IBusText* _tmp3_; IBusLookupTable* _tmp4_; IBusText* _tmp5_; _tmp2_ = emoji; _tmp3_ = ibus_text_new_from_string (_tmp2_); g_object_ref_sink (_tmp3_); text = _tmp3_; _tmp4_ = self->priv->m_lookup_table; _tmp5_ = text; ibus_lookup_table_append_candidate (_tmp4_, _tmp5_); _g_object_unref0 (text); } } } } static gboolean __lambda25_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e) { gboolean result = FALSE; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); self->priv->m_category_active_index = -1; ibus_emojier_m_show_unicode = FALSE; ibus_emojier_hide_candidate_panel (self); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } static gboolean ___lambda25__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = __lambda25_ ((IBusEmojier*) self, _sender, event); return result; } static void __lambda26_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow) { IBusEmojierEBoxRow* row = NULL; IBusEmojierEBoxRow* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; g_return_if_fail (box != NULL); g_return_if_fail (gtkrow != NULL); self->priv->m_category_active_index = gtk_list_box_row_get_index (gtkrow); _tmp0_ = _g_object_ref0 (IBUS_EMOJIER_IS_EBOX_ROW (gtkrow) ? ((IBusEmojierEBoxRow*) gtkrow) : NULL); row = _tmp0_; _tmp1_ = ibus_emojier_ebox_row_get_text (row); _tmp2_ = _tmp1_; ibus_emojier_show_unicode_for_block (self, _tmp2_); ibus_emojier_show_candidate_panel (self); _g_object_unref0 (row); } static void ___lambda26__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self) { __lambda26_ ((IBusEmojier*) self, _sender, row); } static void __lambda27_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a) { g_return_if_fail (w != NULL); g_return_if_fail (a != NULL); ibus_emojier_clamp_page (self); } static void ___lambda27__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self) { __lambda27_ ((IBusEmojier*) self, _sender, allocation); } static void ibus_emojier_show_unicode_blocks (IBusEmojier* self) { gboolean _tmp0_ = FALSE; gboolean _tmp7_ = FALSE; IBusEmojierEPaddedLabelBox* label = NULL; IBusEmojierEPaddedLabelBox* _tmp10_; GtkButton* button = NULL; GtkButton* _tmp11_; GtkButton* _tmp12_; IBusEmojierEPaddedLabelBox* _tmp13_; GtkBox* _tmp14_; GtkButton* _tmp15_; GtkButton* _tmp16_; GtkButton* _tmp17_; IBusEmojierEScrolledWindow* _tmp18_; GtkBox* _tmp19_; IBusEmojierEScrolledWindow* _tmp20_; GtkViewport* viewport = NULL; GtkViewport* _tmp21_; IBusEmojierEScrolledWindow* _tmp22_; GtkViewport* _tmp23_; IBusEmojierEListBox* _tmp24_; GtkViewport* _tmp25_; IBusEmojierEListBox* _tmp26_; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp27_; GtkAdjustment* _tmp28_; GtkAdjustment* _tmp29_; IBusEmojierEListBox* _tmp30_; GtkAdjustment* _tmp31_; IBusEmojierEListBox* _tmp32_; guint n = 0U; GSList* _tmp33_; IBusEmojierEScrolledWindow* _tmp51_; IBusEmojierEScrolledWindow* _tmp52_; IBusEmojierEListBox* _tmp54_; IBusEmojierEListBox* _tmp55_; GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp56_; GtkListBoxRow* _tmp57_; GtkListBoxRow* _tmp58_; GtkListBoxRow* _tmp59_; g_return_if_fail (self != NULL); if (self->priv->m_category_active_index >= 0) { IBusEmojierEListBox* _tmp1_; _tmp1_ = self->priv->m_list_box; _tmp0_ = _tmp1_ != NULL; } else { _tmp0_ = FALSE; } if (_tmp0_) { GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp2_; GtkListBoxRow* _tmp3_; GtkListBoxRow* _tmp4_; IBusEmojierEListBox* _tmp5_; GtkListBoxRow* _tmp6_; _tmp2_ = self->priv->m_list_box; _tmp3_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp2_, self->priv->m_category_active_index); _tmp4_ = _g_object_ref0 (_tmp3_); row = _tmp4_; _tmp5_ = self->priv->m_list_box; _tmp6_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp5_, _tmp6_); _g_object_unref0 (row); return; } if (self->priv->m_category_active_index < 0) { self->priv->m_category_active_index = 0; } ibus_emojier_m_show_unicode = TRUE; if (ibus_emojier_m_default_window_width == 0) { _tmp7_ = ibus_emojier_m_default_window_height == 0; } else { _tmp7_ = FALSE; } if (_tmp7_) { gint _tmp8_ = 0; gint _tmp9_ = 0; gtk_window_get_size ((GtkWindow*) self, &_tmp8_, &_tmp9_); ibus_emojier_m_default_window_width = _tmp8_; ibus_emojier_m_default_window_height = _tmp9_; } ibus_emojier_remove_all_children (self); ibus_emojier_set_fixed_size (self); _tmp10_ = ibus_emojier_epadded_label_box_new (_ ("Bring back emoji choice"), GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD, NULL); g_object_ref_sink (_tmp10_); label = _tmp10_; _tmp11_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp11_); button = _tmp11_; _tmp12_ = button; _tmp13_ = label; gtk_container_add ((GtkContainer*) _tmp12_, (GtkWidget*) _tmp13_); _tmp14_ = self->priv->m_vbox; _tmp15_ = button; gtk_container_add ((GtkContainer*) _tmp14_, (GtkWidget*) _tmp15_); _tmp16_ = button; gtk_widget_show_all ((GtkWidget*) _tmp16_); _tmp17_ = button; g_signal_connect_object ((GtkWidget*) _tmp17_, "button-press-event", (GCallback) ___lambda25__gtk_widget_button_press_event, self, 0); _tmp18_ = ibus_emojier_escrolled_window_new (NULL, NULL); g_object_ref_sink (_tmp18_); _g_object_unref0 (self->priv->m_scrolled_window); self->priv->m_scrolled_window = _tmp18_; _tmp19_ = self->priv->m_vbox; _tmp20_ = self->priv->m_scrolled_window; gtk_container_add ((GtkContainer*) _tmp19_, (GtkWidget*) _tmp20_); _tmp21_ = (GtkViewport*) gtk_viewport_new (NULL, NULL); g_object_ref_sink (_tmp21_); viewport = _tmp21_; _tmp22_ = self->priv->m_scrolled_window; _tmp23_ = viewport; gtk_container_add ((GtkContainer*) _tmp22_, (GtkWidget*) _tmp23_); _tmp24_ = ibus_emojier_elist_box_new (); g_object_ref_sink (_tmp24_); _g_object_unref0 (self->priv->m_list_box); self->priv->m_list_box = _tmp24_; _tmp25_ = viewport; _tmp26_ = self->priv->m_list_box; gtk_container_add ((GtkContainer*) _tmp25_, (GtkWidget*) _tmp26_); _tmp27_ = self->priv->m_scrolled_window; _tmp28_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp27_); _tmp29_ = _g_object_ref0 (_tmp28_); adjustment = _tmp29_; _tmp30_ = self->priv->m_list_box; _tmp31_ = adjustment; gtk_list_box_set_adjustment ((GtkListBox*) _tmp30_, _tmp31_); _tmp32_ = self->priv->m_list_box; g_signal_connect_object ((GtkListBox*) _tmp32_, "row-activated", (GCallback) ___lambda26__gtk_list_box_row_activated, self, 0); n = (guint) 0; _tmp33_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp33_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { gchar* name = NULL; IBusUnicodeBlock* _tmp34_; const gchar* _tmp35_; gchar* _tmp36_; gchar* caption = NULL; IBusUnicodeBlock* _tmp37_; gchar* _tmp38_; IBusEmojierEBoxRow* row = NULL; const gchar* _tmp39_; IBusEmojierEBoxRow* _tmp40_; IBusEmojierEPaddedLabelBox* widget = NULL; const gchar* _tmp41_; const gchar* _tmp42_; IBusEmojierEPaddedLabelBox* _tmp43_; IBusEmojierEBoxRow* _tmp44_; IBusEmojierEPaddedLabelBox* _tmp45_; IBusEmojierEListBox* _tmp46_; IBusEmojierEBoxRow* _tmp47_; guint _tmp48_; _tmp34_ = block; _tmp35_ = ibus_unicode_block_get_name (_tmp34_); _tmp36_ = g_strdup (_tmp35_); name = _tmp36_; _tmp37_ = block; _tmp38_ = g_strdup_printf ("U+%08X", (guint) ibus_unicode_block_get_start (_tmp37_)); caption = _tmp38_; _tmp39_ = name; _tmp40_ = ibus_emojier_ebox_row_new (_tmp39_); g_object_ref_sink (_tmp40_); row = _tmp40_; _tmp41_ = name; _tmp42_ = caption; _tmp43_ = ibus_emojier_epadded_label_box_new (_ (_tmp41_), GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, _tmp42_); g_object_ref_sink (_tmp43_); widget = _tmp43_; _tmp44_ = row; _tmp45_ = widget; gtk_container_add ((GtkContainer*) _tmp44_, (GtkWidget*) _tmp45_); _tmp46_ = self->priv->m_list_box; _tmp47_ = row; gtk_container_add ((GtkContainer*) _tmp46_, (GtkWidget*) _tmp47_); _tmp48_ = n; n = _tmp48_ + 1; if (_tmp48_ == ((guint) self->priv->m_category_active_index)) { IBusEmojierEListBox* _tmp49_; IBusEmojierEBoxRow* _tmp50_; _tmp49_ = self->priv->m_list_box; _tmp50_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp49_, (GtkListBoxRow*) _tmp50_); } _g_object_unref0 (widget); _g_object_unref0 (row); _g_free0 (caption); _g_free0 (name); } } } gtk_widget_set_size_request ((GtkWidget*) self, -1, ibus_emojier_m_default_window_height + 100); _tmp51_ = self->priv->m_scrolled_window; gtk_scrolled_window_set_policy ((GtkScrolledWindow*) _tmp51_, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); _tmp52_ = self->priv->m_scrolled_window; gtk_widget_show_all ((GtkWidget*) _tmp52_); if (self->priv->m_category_active_index == -1) { IBusEmojierEListBox* _tmp53_; _tmp53_ = self->priv->m_list_box; gtk_list_box_unselect_all ((GtkListBox*) _tmp53_); } _tmp54_ = self->priv->m_list_box; gtk_list_box_invalidate_filter ((GtkListBox*) _tmp54_); _tmp55_ = self->priv->m_list_box; gtk_list_box_set_selection_mode ((GtkListBox*) _tmp55_, GTK_SELECTION_SINGLE); _tmp56_ = self->priv->m_list_box; _tmp57_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp56_, ((gint) n) - 1); _tmp58_ = _g_object_ref0 (_tmp57_); row = _tmp58_; _tmp59_ = row; g_signal_connect_object ((GtkWidget*) _tmp59_, "size-allocate", (GCallback) ___lambda27__gtk_widget_size_allocate, self, 0); _g_object_unref0 (row); _g_object_unref0 (adjustment); _g_object_unref0 (viewport); _g_object_unref0 (button); _g_object_unref0 (label); } static void ibus_emojier_show_unicode_for_block (IBusEmojier* self, const gchar* block_name) { gunichar start = 0U; gunichar end = 0U; GSList* _tmp0_; IBusLookupTable* _tmp7_; gchar* _tmp16_; IBusLookupTable* _tmp17_; g_return_if_fail (self != NULL); g_return_if_fail (block_name != NULL); start = (gunichar) 0; end = (gunichar) 0; _tmp0_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp0_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { gchar* name = NULL; IBusUnicodeBlock* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; _tmp1_ = block; _tmp2_ = ibus_unicode_block_get_name (_tmp1_); _tmp3_ = g_strdup (_tmp2_); name = _tmp3_; _tmp4_ = name; if (g_strcmp0 (block_name, _tmp4_) == 0) { IBusUnicodeBlock* _tmp5_; IBusUnicodeBlock* _tmp6_; _tmp5_ = block; start = ibus_unicode_block_get_start (_tmp5_); _tmp6_ = block; end = ibus_unicode_block_get_end (_tmp6_); } _g_free0 (name); } } } _tmp7_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp7_); self->priv->m_candidate_panel_mode = TRUE; { gunichar ch = 0U; ch = start; { gboolean _tmp8_ = FALSE; _tmp8_ = TRUE; while (TRUE) { IBusUnicodeData* data = NULL; GHashTable* _tmp10_; gconstpointer _tmp11_; IBusUnicodeData* _tmp12_; IBusText* text = NULL; IBusText* _tmp13_; IBusLookupTable* _tmp14_; IBusText* _tmp15_; if (!_tmp8_) { gunichar _tmp9_; _tmp9_ = ch; ch = _tmp9_ + 1; } _tmp8_ = FALSE; if (!(ch < end)) { break; } _tmp10_ = ibus_emojier_m_unicode_to_data_dict; _tmp11_ = g_hash_table_lookup (_tmp10_, (gpointer) ((gintptr) ch)); data = (IBusUnicodeData*) _tmp11_; _tmp12_ = data; if (_tmp12_ == NULL) { continue; } _tmp13_ = ibus_text_new_from_unichar (ch); g_object_ref_sink (_tmp13_); text = _tmp13_; _tmp14_ = self->priv->m_lookup_table; _tmp15_ = text; ibus_lookup_table_append_candidate (_tmp14_, _tmp15_); _g_object_unref0 (text); } } } _tmp16_ = g_strdup (block_name); _g_free0 (self->priv->m_backward); self->priv->m_backward = _tmp16_; _tmp17_ = self->priv->m_lookup_table; if (ibus_lookup_table_get_number_of_candidates (_tmp17_) > ((guint) 0)) { IBusLookupTable* _tmp18_; IBusText* _tmp19_; const gchar* _tmp20_; gchar* _tmp21_; _tmp18_ = self->priv->m_lookup_table; _tmp19_ = ibus_lookup_table_get_candidate (_tmp18_, (guint) 0); _tmp20_ = _tmp19_->text; _tmp21_ = g_strdup (_tmp20_); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp21_; } } 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_)) { IBusEmojier* self; self = _data4_->self; _g_object_unref0 (_data4_->warning_button); _g_object_unref0 (self); g_slice_free (Block4Data, _data4_); } } static void __lambda20_ (IBusEmojier* self) { IBusLookupTable* _tmp0_; _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_page_down (_tmp0_); ibus_emojier_show_candidate_panel (self); } static void ___lambda20__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda20_ ((IBusEmojier*) self); } static void __lambda21_ (IBusEmojier* self) { IBusLookupTable* _tmp0_; _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_page_up (_tmp0_); ibus_emojier_show_candidate_panel (self); } static void ___lambda21__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda21_ ((IBusEmojier*) self); } static void ___lambda22_ (Block4Data* _data4_) { IBusEmojier* self; GtkLabel* warning_label = NULL; const gchar* _tmp0_; GtkLabel* _tmp1_; GtkPopover* popover = NULL; GtkButton* _tmp2_; GtkPopover* _tmp3_; self = _data4_->self; _tmp0_ = ibus_emojier_m_warning_message; _tmp1_ = (GtkLabel*) gtk_label_new (_tmp0_); g_object_ref_sink (_tmp1_); warning_label = _tmp1_; gtk_label_set_line_wrap (warning_label, TRUE); gtk_label_set_max_width_chars (warning_label, 40); _tmp2_ = _data4_->warning_button; _tmp3_ = (GtkPopover*) gtk_popover_new ((GtkWidget*) _tmp2_); g_object_ref_sink (_tmp3_); popover = _tmp3_; gtk_container_add ((GtkContainer*) popover, (GtkWidget*) warning_label); gtk_widget_show_all ((GtkWidget*) popover); gtk_popover_popup (popover); _g_object_unref0 (popover); _g_object_unref0 (warning_label); } static void ____lambda22__gtk_button_clicked (GtkButton* _sender, gpointer self) { ___lambda22_ (self); } static void ibus_emojier_show_arrow_buttons (IBusEmojier* self) { Block4Data* _data4_; GtkButton* next_button = NULL; GtkButton* _tmp0_; GtkButton* _tmp1_; GtkButton* _tmp2_; GtkImage* _tmp3_; GtkImage* _tmp4_; GtkButton* _tmp5_; GtkButton* _tmp6_; GtkButton* prev_button = NULL; GtkButton* _tmp7_; GtkButton* _tmp8_; GtkButton* _tmp9_; GtkImage* _tmp10_; GtkImage* _tmp11_; GtkButton* _tmp12_; GtkButton* _tmp13_; GMenu* menu = NULL; GMenu* _tmp14_; GMenu* _tmp15_; GMenu* _tmp16_; GtkMenuButton* menu_button = NULL; GtkMenuButton* _tmp17_; GtkMenuButton* _tmp18_; GtkMenuButton* _tmp19_; GtkMenuButton* _tmp20_; GMenu* _tmp21_; GtkMenuButton* _tmp22_; GtkMenuButton* _tmp23_; IBusText* text = NULL; IBusText* _tmp24_; PangoAttrList* attrs = NULL; IBusText* _tmp25_; PangoAttrList* _tmp26_; GtkLabel* title_label = NULL; IBusText* _tmp27_; const gchar* _tmp28_; GtkLabel* _tmp29_; GtkLabel* _tmp30_; PangoAttrList* _tmp31_; const gchar* _tmp32_; GtkBox* buttons_hbox = NULL; GtkBox* _tmp40_; GtkLabel* state_label = NULL; GtkLabel* _tmp41_; GtkLabel* _tmp42_; GtkLabel* _tmp43_; GtkLabel* _tmp44_; GtkBox* _tmp45_; GtkLabel* _tmp46_; GtkBox* _tmp47_; GtkButton* _tmp48_; GtkBox* _tmp49_; GtkButton* _tmp50_; GtkBox* _tmp51_; GtkLabel* _tmp52_; GtkButton* _tmp53_; GtkBox* _tmp56_; GtkMenuButton* _tmp57_; GtkBox* _tmp58_; GtkBox* _tmp59_; GtkBox* _tmp60_; g_return_if_fail (self != NULL); _data4_ = g_slice_new0 (Block4Data); _data4_->_ref_count_ = 1; _data4_->self = g_object_ref (self); _tmp0_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp0_); next_button = _tmp0_; _tmp1_ = next_button; g_signal_connect_object (_tmp1_, "clicked", (GCallback) ___lambda20__gtk_button_clicked, self, 0); _tmp2_ = next_button; _tmp3_ = (GtkImage*) gtk_image_new_from_icon_name ("go-down", (GtkIconSize) GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp3_); _tmp4_ = _tmp3_; gtk_button_set_image (_tmp2_, (GtkWidget*) _tmp4_); _g_object_unref0 (_tmp4_); _tmp5_ = next_button; gtk_button_set_relief (_tmp5_, GTK_RELIEF_NONE); _tmp6_ = next_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp6_, _ ("Page Down")); _tmp7_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp7_); prev_button = _tmp7_; _tmp8_ = prev_button; g_signal_connect_object (_tmp8_, "clicked", (GCallback) ___lambda21__gtk_button_clicked, self, 0); _tmp9_ = prev_button; _tmp10_ = (GtkImage*) gtk_image_new_from_icon_name ("go-up", (GtkIconSize) GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp10_); _tmp11_ = _tmp10_; gtk_button_set_image (_tmp9_, (GtkWidget*) _tmp11_); _g_object_unref0 (_tmp11_); _tmp12_ = prev_button; gtk_button_set_relief (_tmp12_, GTK_RELIEF_NONE); _tmp13_ = prev_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp13_, _ ("Page Up")); _tmp14_ = g_menu_new (); menu = _tmp14_; _tmp15_ = menu; g_menu_append (_tmp15_, _ ("Show emoji variants"), "win.variant"); _tmp16_ = menu; g_menu_append (_tmp16_, _ ("Close"), "win.close"); _tmp17_ = (GtkMenuButton*) gtk_menu_button_new (); g_object_ref_sink (_tmp17_); menu_button = _tmp17_; _tmp18_ = menu_button; gtk_menu_button_set_direction (_tmp18_, GTK_ARROW_NONE); _tmp19_ = menu_button; gtk_widget_set_valign ((GtkWidget*) _tmp19_, GTK_ALIGN_CENTER); _tmp20_ = menu_button; _tmp21_ = menu; gtk_menu_button_set_menu_model (_tmp20_, (GMenuModel*) _tmp21_); _tmp22_ = menu_button; gtk_button_set_relief ((GtkButton*) _tmp22_, GTK_RELIEF_NONE); _tmp23_ = menu_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp23_, _ ("Menu")); _tmp24_ = ibus_emojier_get_title_text (self); text = _tmp24_; _tmp25_ = text; _tmp26_ = get_pango_attr_list_from_ibus_text (_tmp25_); attrs = _tmp26_; _tmp27_ = text; _tmp28_ = ibus_text_get_text (_tmp27_); _tmp29_ = (GtkLabel*) gtk_label_new (_tmp28_); g_object_ref_sink (_tmp29_); title_label = _tmp29_; _tmp30_ = title_label; _tmp31_ = attrs; gtk_label_set_attributes (_tmp30_, _tmp31_); _data4_->warning_button = NULL; _tmp32_ = ibus_emojier_m_warning_message; if (g_strcmp0 (_tmp32_, "") != 0) { GtkButton* _tmp33_; GtkButton* _tmp34_; GtkButton* _tmp35_; GtkImage* _tmp36_; GtkImage* _tmp37_; GtkButton* _tmp38_; GtkButton* _tmp39_; _tmp33_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp33_); _g_object_unref0 (_data4_->warning_button); _data4_->warning_button = _tmp33_; _tmp34_ = _data4_->warning_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp34_, _ ("Click to view a warning message")); _tmp35_ = _data4_->warning_button; _tmp36_ = (GtkImage*) gtk_image_new_from_icon_name ("dialog-warning", (GtkIconSize) GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp36_); _tmp37_ = _tmp36_; gtk_button_set_image (_tmp35_, (GtkWidget*) _tmp37_); _g_object_unref0 (_tmp37_); _tmp38_ = _data4_->warning_button; gtk_button_set_relief (_tmp38_, GTK_RELIEF_NONE); _tmp39_ = _data4_->warning_button; g_signal_connect_data (_tmp39_, "clicked", (GCallback) ____lambda22__gtk_button_clicked, block4_data_ref (_data4_), (GClosureNotify) block4_data_unref, 0); } _tmp40_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp40_); buttons_hbox = _tmp40_; _tmp41_ = (GtkLabel*) gtk_label_new (NULL); g_object_ref_sink (_tmp41_); state_label = _tmp41_; _tmp42_ = state_label; gtk_widget_set_size_request ((GtkWidget*) _tmp42_, 10, -1); _tmp43_ = state_label; gtk_widget_set_halign ((GtkWidget*) _tmp43_, GTK_ALIGN_CENTER); _tmp44_ = state_label; gtk_widget_set_valign ((GtkWidget*) _tmp44_, GTK_ALIGN_CENTER); _tmp45_ = buttons_hbox; _tmp46_ = state_label; gtk_box_pack_start (_tmp45_, (GtkWidget*) _tmp46_, FALSE, TRUE, (guint) 0); _tmp47_ = buttons_hbox; _tmp48_ = prev_button; gtk_box_pack_start (_tmp47_, (GtkWidget*) _tmp48_, FALSE, FALSE, (guint) 0); _tmp49_ = buttons_hbox; _tmp50_ = next_button; gtk_box_pack_start (_tmp49_, (GtkWidget*) _tmp50_, FALSE, FALSE, (guint) 0); _tmp51_ = buttons_hbox; _tmp52_ = title_label; gtk_box_pack_start (_tmp51_, (GtkWidget*) _tmp52_, FALSE, FALSE, (guint) 0); _tmp53_ = _data4_->warning_button; if (_tmp53_ != NULL) { GtkBox* _tmp54_; GtkButton* _tmp55_; _tmp54_ = buttons_hbox; _tmp55_ = _data4_->warning_button; gtk_box_pack_start (_tmp54_, (GtkWidget*) _tmp55_, FALSE, FALSE, (guint) 0); } _tmp56_ = buttons_hbox; _tmp57_ = menu_button; gtk_box_pack_end (_tmp56_, (GtkWidget*) _tmp57_, FALSE, FALSE, (guint) 0); _tmp58_ = self->priv->m_vbox; _tmp59_ = buttons_hbox; gtk_box_pack_start (_tmp58_, (GtkWidget*) _tmp59_, FALSE, FALSE, (guint) 0); _tmp60_ = buttons_hbox; gtk_widget_show_all ((GtkWidget*) _tmp60_); _g_object_unref0 (state_label); _g_object_unref0 (buttons_hbox); _g_object_unref0 (title_label); _pango_attr_list_unref0 (attrs); _g_object_unref0 (text); _g_object_unref0 (menu_button); _g_object_unref0 (menu); _g_object_unref0 (prev_button); _g_object_unref0 (next_button); block4_data_unref (_data4_); _data4_ = NULL; } static void __lambda23_ (IBusEmojier* self, guint i, guint n) { self->priv->m_unicode_percent = ((gdouble) i) / n; } static void ___lambda23__ibus_emojier_load_progress_object_deserialize_unicode (IBusEmojierLoadProgressObject* _sender, guint done, guint total, gpointer self) { __lambda23_ ((IBusEmojier*) self, done, total); } static gboolean __lambda24_ (IBusEmojier* self) { GtkProgressBar* _tmp0_; GtkLabel* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; GtkProgressBar* _tmp4_; GtkLabel* _tmp5_; gboolean result = FALSE; self->priv->m_unicode_progress_id = (guint) 0; _tmp0_ = self->priv->m_unicode_progress_bar; gtk_progress_bar_set_fraction (_tmp0_, self->priv->m_unicode_percent); _tmp1_ = self->priv->m_unicode_percent_label; _tmp2_ = g_strdup_printf ("%.0f%%\n", self->priv->m_unicode_percent * 100); _tmp3_ = _tmp2_; gtk_label_set_text (_tmp1_, _tmp3_); _g_free0 (_tmp3_); _tmp4_ = self->priv->m_unicode_progress_bar; gtk_widget_show ((GtkWidget*) _tmp4_); _tmp5_ = self->priv->m_unicode_percent_label; gtk_widget_show ((GtkWidget*) _tmp5_); if (ibus_emojier_m_loaded_unicode) { ibus_emojier_show_candidate_panel (self); } result = !ibus_emojier_m_loaded_unicode; return result; } static gboolean ___lambda24__gsource_func (gpointer self) { gboolean result; result = __lambda24_ ((IBusEmojier*) self); return result; } static void ibus_emojier_show_unicode_progress_bar (IBusEmojier* self) { GtkProgressBar* _tmp0_; GtkProgressBar* _tmp1_; GtkProgressBar* _tmp2_; GtkProgressBar* _tmp3_; GtkBox* _tmp4_; GtkProgressBar* _tmp5_; GtkProgressBar* _tmp6_; GtkBox* hbox = NULL; GtkBox* _tmp7_; GtkBox* _tmp8_; GtkBox* _tmp9_; GtkBox* _tmp10_; GtkBox* _tmp11_; GtkLabel* label = NULL; GtkLabel* _tmp12_; GtkBox* _tmp13_; GtkLabel* _tmp14_; GtkLabel* _tmp15_; GtkBox* _tmp16_; GtkLabel* _tmp17_; GtkBox* _tmp18_; IBusEmojierLoadProgressObject* _tmp19_; g_return_if_fail (self != NULL); _tmp0_ = (GtkProgressBar*) gtk_progress_bar_new (); g_object_ref_sink (_tmp0_); _g_object_unref0 (self->priv->m_unicode_progress_bar); self->priv->m_unicode_progress_bar = _tmp0_; _tmp1_ = self->priv->m_unicode_progress_bar; gtk_progress_bar_set_ellipsize (_tmp1_, PANGO_ELLIPSIZE_MIDDLE); _tmp2_ = self->priv->m_unicode_progress_bar; gtk_widget_set_halign ((GtkWidget*) _tmp2_, GTK_ALIGN_CENTER); _tmp3_ = self->priv->m_unicode_progress_bar; gtk_widget_set_valign ((GtkWidget*) _tmp3_, GTK_ALIGN_CENTER); _tmp4_ = self->priv->m_vbox; _tmp5_ = self->priv->m_unicode_progress_bar; gtk_container_add ((GtkContainer*) _tmp4_, (GtkWidget*) _tmp5_); _tmp6_ = self->priv->m_unicode_progress_bar; gtk_widget_show ((GtkWidget*) _tmp6_); _tmp7_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5); g_object_ref_sink (_tmp7_); hbox = _tmp7_; _tmp8_ = hbox; gtk_widget_set_halign ((GtkWidget*) _tmp8_, GTK_ALIGN_CENTER); _tmp9_ = hbox; gtk_widget_set_valign ((GtkWidget*) _tmp9_, GTK_ALIGN_CENTER); _tmp10_ = self->priv->m_vbox; _tmp11_ = hbox; gtk_container_add ((GtkContainer*) _tmp10_, (GtkWidget*) _tmp11_); _tmp12_ = (GtkLabel*) gtk_label_new (_ ("Loading a Unicode dictionary:")); g_object_ref_sink (_tmp12_); label = _tmp12_; _tmp13_ = hbox; _tmp14_ = label; gtk_box_pack_start (_tmp13_, (GtkWidget*) _tmp14_, FALSE, TRUE, (guint) 0); _tmp15_ = (GtkLabel*) gtk_label_new (""); g_object_ref_sink (_tmp15_); _g_object_unref0 (self->priv->m_unicode_percent_label); self->priv->m_unicode_percent_label = _tmp15_; _tmp16_ = hbox; _tmp17_ = self->priv->m_unicode_percent_label; gtk_box_pack_start (_tmp16_, (GtkWidget*) _tmp17_, FALSE, TRUE, (guint) 0); _tmp18_ = hbox; gtk_widget_show_all ((GtkWidget*) _tmp18_); _tmp19_ = ibus_emojier_m_unicode_progress_object; g_signal_connect_object (_tmp19_, "deserialize-unicode", (GCallback) ___lambda23__ibus_emojier_load_progress_object_deserialize_unicode, self, 0); if (self->priv->m_unicode_progress_id > ((guint) 0)) { g_source_remove (self->priv->m_unicode_progress_id); } self->priv->m_unicode_progress_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ___lambda24__gsource_func, g_object_ref (self), g_object_unref); _g_object_unref0 (label); _g_object_unref0 (hbox); } static guint64 uint64_parse (const gchar* str, guint _base) { guint64 result = 0ULL; g_return_val_if_fail (str != NULL, 0ULL); result = g_ascii_strtoull (str, NULL, _base); return result; } static gchar* ibus_emojier_check_unicode_point (const gchar* annotation) { gchar* unicode_point = NULL; GString* buff = NULL; GString* _tmp0_; GString* retval = NULL; GString* _tmp1_; gunichar code = 0U; GString* _tmp11_; const gchar* _tmp12_; GString* _tmp13_; gchar* _tmp14_; gchar* _tmp15_; GString* _tmp16_; const gchar* _tmp17_; gchar* _tmp18_; const gchar* _tmp19_; gchar* result = NULL; g_return_val_if_fail (annotation != NULL, NULL); unicode_point = NULL; _tmp0_ = g_string_new ("0x"); buff = _tmp0_; _tmp1_ = g_string_new (""); retval = _tmp1_; { gint i = 0; i = 0; { gboolean _tmp2_ = FALSE; _tmp2_ = TRUE; while (TRUE) { gunichar ch = 0U; GString* _tmp10_; if (!_tmp2_) { gint _tmp3_; _tmp3_ = i; i = _tmp3_ + 1; } _tmp2_ = FALSE; if (!(i < g_utf8_strlen (annotation, (gssize) -1))) { break; } ch = string_get_char (annotation, (glong) i); if (ch == ((gunichar) 0)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } if (g_unichar_isspace (ch)) { gunichar code = 0U; GString* _tmp4_; const gchar* _tmp5_; GString* _tmp6_; GString* _tmp7_; gchar* _tmp8_; gchar* _tmp9_; _tmp4_ = buff; _tmp5_ = _tmp4_->str; code = (gunichar) uint64_parse (_tmp5_, (guint) 0); _tmp6_ = buff; g_string_assign (_tmp6_, "0x"); if (!g_unichar_validate (code)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } _tmp7_ = retval; _tmp8_ = g_unichar_to_string (code); _tmp9_ = _tmp8_; g_string_append (_tmp7_, _tmp9_); _g_free0 (_tmp9_); continue; } if (!g_unichar_isxdigit (ch)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } _tmp10_ = buff; g_string_append_unichar (_tmp10_, ch); } } } _tmp11_ = buff; _tmp12_ = _tmp11_->str; code = (gunichar) uint64_parse (_tmp12_, (guint) 0); if (!g_unichar_validate (code)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } _tmp13_ = retval; _tmp14_ = g_unichar_to_string (code); _tmp15_ = _tmp14_; g_string_append (_tmp13_, _tmp15_); _g_free0 (_tmp15_); _tmp16_ = retval; _tmp17_ = _tmp16_->str; _tmp18_ = g_strdup (_tmp17_); _g_free0 (unicode_point); unicode_point = _tmp18_; _tmp19_ = unicode_point; if (_tmp19_ == NULL) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } result = unicode_point; _g_string_free0 (retval); _g_string_free0 (buff); return result; } static GSList* ibus_emojier_lookup_emojis_from_annotation (const gchar* annotation) { GSList* total_emojis = NULL; GSList* sub_emojis = NULL; GSList* sub_exact_unicodes = NULL; GSList* sub_unicodes = NULL; gint length = 0; gint _tmp0_; gint _tmp1_; gboolean _tmp2_ = FALSE; GHashTable* _tmp35_; gconstpointer _tmp36_; GSList* _tmp37_; GSList* result = NULL; g_return_val_if_fail (annotation != NULL, NULL); total_emojis = NULL; sub_emojis = NULL; sub_exact_unicodes = NULL; sub_unicodes = NULL; _tmp0_ = strlen (annotation); _tmp1_ = _tmp0_; length = _tmp1_; if (ibus_emojier_m_has_partial_match) { _tmp2_ = ((guint) length) >= ibus_emojier_m_partial_match_length; } else { _tmp2_ = FALSE; } if (_tmp2_) { GSList* sorted_emojis = NULL; GHashTable* _tmp3_; GList* _tmp4_; GSList* _tmp22_; sorted_emojis = NULL; _tmp3_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp4_ = g_hash_table_get_keys (_tmp3_); { GList* key_collection = NULL; GList* key_it = NULL; key_collection = _tmp4_; for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { const gchar* key = NULL; key = (const gchar*) key_it->data; { const gchar* _tmp5_; gint _tmp6_; gint _tmp7_; gboolean matched = FALSE; GHashTable* _tmp11_; const gchar* _tmp12_; gconstpointer _tmp13_; GSList* _tmp14_; _tmp5_ = key; _tmp6_ = strlen (_tmp5_); _tmp7_ = _tmp6_; if (_tmp7_ < length) { continue; } matched = FALSE; switch (ibus_emojier_m_partial_match_condition) { case 0: { const gchar* _tmp8_; _tmp8_ = key; if (g_str_has_prefix (_tmp8_, annotation)) { matched = TRUE; } break; } case 1: { const gchar* _tmp9_; _tmp9_ = key; if (g_str_has_suffix (_tmp9_, annotation)) { matched = TRUE; } break; } case 2: { const gchar* _tmp10_; _tmp10_ = key; if (string_index_of (_tmp10_, annotation, 0) >= 0) { matched = TRUE; } break; } default: { break; } } if (!matched) { continue; } _tmp11_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp12_ = key; _tmp13_ = g_hash_table_lookup (_tmp11_, _tmp12_); sub_emojis = (GSList*) _tmp13_; _tmp14_ = sub_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp14_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { GSList* _tmp15_; const gchar* _tmp16_; GCompareFunc _tmp17_; GSList* _tmp18_; _tmp15_ = total_emojis; _tmp16_ = emoji; _tmp17_ = ((GCompareFunc) g_strcmp0); _tmp18_ = g_slist_find_custom (_tmp15_, _tmp16_, _tmp17_); if (_tmp18_ == NULL) { const gchar* _tmp19_; gchar* _tmp20_; GCompareFunc _tmp21_; _tmp19_ = emoji; _tmp20_ = g_strdup (_tmp19_); _tmp21_ = ((GCompareFunc) g_strcmp0); sorted_emojis = g_slist_insert_sorted (sorted_emojis, _tmp20_, _tmp21_); } } } } } } (key_collection == NULL) ? NULL : (key_collection = (g_list_free (key_collection), NULL)); } _tmp22_ = sorted_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp22_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { gchar* _tmp23_; gchar* emoji = NULL; _tmp23_ = g_strdup ((const gchar*) emoji_it->data); emoji = _tmp23_; { GSList* _tmp24_; const gchar* _tmp25_; GCompareFunc _tmp26_; GSList* _tmp27_; _tmp24_ = total_emojis; _tmp25_ = emoji; _tmp26_ = ((GCompareFunc) g_strcmp0); _tmp27_ = g_slist_find_custom (_tmp24_, _tmp25_, _tmp26_); if (_tmp27_ == NULL) { const gchar* _tmp28_; gchar* _tmp29_; _tmp28_ = emoji; _tmp29_ = g_strdup (_tmp28_); total_emojis = g_slist_append (total_emojis, _tmp29_); } _g_free0 (emoji); } } } (sorted_emojis == NULL) ? NULL : (sorted_emojis = (_g_slist_free__g_free0_ (sorted_emojis), NULL)); } else { GHashTable* _tmp30_; gconstpointer _tmp31_; GSList* _tmp32_; _tmp30_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp31_ = g_hash_table_lookup (_tmp30_, annotation); sub_emojis = (GSList*) _tmp31_; _tmp32_ = sub_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp32_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { const gchar* _tmp33_; gchar* _tmp34_; _tmp33_ = emoji; _tmp34_ = g_strdup (_tmp33_); total_emojis = g_slist_append (total_emojis, _tmp34_); } } } } _tmp35_ = ibus_emojier_m_name_to_unicodes_dict; _tmp36_ = g_hash_table_lookup (_tmp35_, annotation); sub_exact_unicodes = (GSList*) _tmp36_; _tmp37_ = sub_exact_unicodes; { GSList* code_collection = NULL; GSList* code_it = NULL; code_collection = _tmp37_; for (code_it = code_collection; code_it != NULL; code_it = code_it->next) { gunichar code = 0U; code = (gunichar) ((gintptr) code_it->data); { gchar* ch = NULL; gchar* _tmp38_; GSList* _tmp39_; const gchar* _tmp40_; GCompareFunc _tmp41_; GSList* _tmp42_; _tmp38_ = g_unichar_to_string (code); ch = _tmp38_; _tmp39_ = total_emojis; _tmp40_ = ch; _tmp41_ = ((GCompareFunc) g_strcmp0); _tmp42_ = g_slist_find_custom (_tmp39_, _tmp40_, _tmp41_); if (_tmp42_ == NULL) { const gchar* _tmp43_; gchar* _tmp44_; _tmp43_ = ch; _tmp44_ = g_strdup (_tmp43_); total_emojis = g_slist_append (total_emojis, _tmp44_); } _g_free0 (ch); } } } if (((guint) length) >= ibus_emojier_m_partial_match_length) { GSList* sorted_unicodes = NULL; GHashTable* _tmp45_; GList* _tmp46_; GSList* _tmp60_; sorted_unicodes = NULL; _tmp45_ = ibus_emojier_m_name_to_unicodes_dict; _tmp46_ = g_hash_table_get_keys (_tmp45_); { GList* key_collection = NULL; GList* key_it = NULL; key_collection = _tmp46_; for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { const gchar* key = NULL; key = (const gchar*) key_it->data; { gboolean matched = FALSE; const gchar* _tmp47_; GHashTable* _tmp48_; const gchar* _tmp49_; gconstpointer _tmp50_; GSList* _tmp51_; matched = FALSE; _tmp47_ = key; if (string_index_of (_tmp47_, annotation, 0) >= 0) { matched = TRUE; } if (!matched) { continue; } _tmp48_ = ibus_emojier_m_name_to_unicodes_dict; _tmp49_ = key; _tmp50_ = g_hash_table_lookup (_tmp48_, _tmp49_); sub_unicodes = (GSList*) _tmp50_; _tmp51_ = sub_unicodes; { GSList* code_collection = NULL; GSList* code_it = NULL; code_collection = _tmp51_; for (code_it = code_collection; code_it != NULL; code_it = code_it->next) { gunichar code = 0U; code = (gunichar) ((gintptr) code_it->data); { gchar* ch = NULL; gchar* _tmp52_; GSList* _tmp53_; const gchar* _tmp54_; GCompareFunc _tmp55_; GSList* _tmp56_; _tmp52_ = g_unichar_to_string (code); ch = _tmp52_; _tmp53_ = sorted_unicodes; _tmp54_ = ch; _tmp55_ = ((GCompareFunc) g_strcmp0); _tmp56_ = g_slist_find_custom (_tmp53_, _tmp54_, _tmp55_); if (_tmp56_ == NULL) { const gchar* _tmp57_; gchar* _tmp58_; GCompareFunc _tmp59_; _tmp57_ = ch; _tmp58_ = g_strdup (_tmp57_); _tmp59_ = ((GCompareFunc) g_strcmp0); sorted_unicodes = g_slist_insert_sorted (sorted_unicodes, _tmp58_, _tmp59_); } _g_free0 (ch); } } } } } (key_collection == NULL) ? NULL : (key_collection = (g_list_free (key_collection), NULL)); } _tmp60_ = sorted_unicodes; { GSList* ch_collection = NULL; GSList* ch_it = NULL; ch_collection = _tmp60_; for (ch_it = ch_collection; ch_it != NULL; ch_it = ch_it->next) { gchar* _tmp61_; gchar* ch = NULL; _tmp61_ = g_strdup ((const gchar*) ch_it->data); ch = _tmp61_; { GSList* _tmp62_; const gchar* _tmp63_; GCompareFunc _tmp64_; GSList* _tmp65_; _tmp62_ = total_emojis; _tmp63_ = ch; _tmp64_ = ((GCompareFunc) g_strcmp0); _tmp65_ = g_slist_find_custom (_tmp62_, _tmp63_, _tmp64_); if (_tmp65_ == NULL) { const gchar* _tmp66_; gchar* _tmp67_; _tmp66_ = ch; _tmp67_ = g_strdup (_tmp66_); total_emojis = g_slist_append (total_emojis, _tmp67_); } _g_free0 (ch); } } } (sorted_unicodes == NULL) ? NULL : (sorted_unicodes = (_g_slist_free__g_free0_ (sorted_unicodes), NULL)); } result = total_emojis; return result; } static void ibus_emojier_update_candidate_window (IBusEmojier* self) { gchar* annotation = NULL; const gchar* _tmp0_; gchar* _tmp1_; const gchar* _tmp2_; gint _tmp3_; gint _tmp4_; IBusLookupTable* _tmp5_; const gchar* _tmp6_; gint _tmp7_; gint _tmp8_; gchar* unicode_point = NULL; const gchar* _tmp9_; gchar* _tmp10_; GSList* total_emojis = NULL; const gchar* _tmp11_; GSList* _tmp18_; GSList* _tmp21_; gboolean _tmp26_ = FALSE; GSList* _tmp27_; const gchar* _tmp29_; GSList* _tmp34_; gboolean _tmp39_ = FALSE; IBusLookupTable* _tmp40_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_annotation; _tmp1_ = g_strdup (_tmp0_); annotation = _tmp1_; _tmp2_ = annotation; _tmp3_ = strlen (_tmp2_); _tmp4_ = _tmp3_; if (_tmp4_ == 0) { _g_free0 (self->priv->m_backward); self->priv->m_backward = NULL; _g_free0 (annotation); return; } _tmp5_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp5_); self->priv->m_category_active_index = -1; _tmp6_ = annotation; _tmp7_ = strlen (_tmp6_); _tmp8_ = _tmp7_; if (_tmp8_ > ibus_emojier_m_emoji_max_seq_len) { _g_free0 (annotation); return; } _tmp9_ = annotation; _tmp10_ = ibus_emojier_check_unicode_point (_tmp9_); unicode_point = _tmp10_; total_emojis = NULL; _tmp11_ = annotation; if (g_ascii_strcasecmp (_tmp11_, "history") == 0) { { gint i = 0; i = 0; { gboolean _tmp12_ = FALSE; _tmp12_ = TRUE; while (TRUE) { gchar** _tmp14_; gint _tmp14__length1; gchar** _tmp15_; gint _tmp15__length1; const gchar* _tmp16_; gchar* _tmp17_; if (!_tmp12_) { gint _tmp13_; _tmp13_ = i; i = _tmp13_ + 1; } _tmp12_ = FALSE; _tmp14_ = ibus_emojier_m_favorites; _tmp14__length1 = ibus_emojier_m_favorites_length1; if (!(i < _tmp14__length1)) { break; } _tmp15_ = ibus_emojier_m_favorites; _tmp15__length1 = ibus_emojier_m_favorites_length1; _tmp16_ = _tmp15_[i]; _tmp17_ = g_strdup (_tmp16_); total_emojis = g_slist_append (total_emojis, _tmp17_); } } } } _tmp18_ = total_emojis; if (_tmp18_ == NULL) { const gchar* _tmp19_; GSList* _tmp20_; _tmp19_ = annotation; _tmp20_ = ibus_emojier_lookup_emojis_from_annotation (_tmp19_); (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); total_emojis = _tmp20_; } _tmp21_ = total_emojis; if (_tmp21_ == NULL) { const gchar* _tmp22_; gchar* _tmp23_; const gchar* _tmp24_; GSList* _tmp25_; _tmp22_ = annotation; _tmp23_ = g_utf8_strdown (_tmp22_, (gssize) -1); _g_free0 (annotation); annotation = _tmp23_; _tmp24_ = annotation; _tmp25_ = ibus_emojier_lookup_emojis_from_annotation (_tmp24_); (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); total_emojis = _tmp25_; } _tmp27_ = total_emojis; if (_tmp27_ == NULL) { const gchar* _tmp28_; _tmp28_ = unicode_point; _tmp26_ = _tmp28_ == NULL; } else { _tmp26_ = FALSE; } if (_tmp26_) { (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); _g_free0 (unicode_point); _g_free0 (annotation); return; } _tmp29_ = unicode_point; if (_tmp29_ != NULL) { IBusText* text = NULL; const gchar* _tmp30_; IBusText* _tmp31_; IBusLookupTable* _tmp32_; IBusText* _tmp33_; _tmp30_ = unicode_point; _tmp31_ = ibus_text_new_from_string (_tmp30_); g_object_ref_sink (_tmp31_); text = _tmp31_; _tmp32_ = self->priv->m_lookup_table; _tmp33_ = text; ibus_lookup_table_append_candidate (_tmp32_, _tmp33_); _g_object_unref0 (text); } _tmp34_ = total_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp34_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { IBusText* text = NULL; const gchar* _tmp35_; IBusText* _tmp36_; IBusLookupTable* _tmp37_; IBusText* _tmp38_; _tmp35_ = emoji; _tmp36_ = ibus_text_new_from_string (_tmp35_); g_object_ref_sink (_tmp36_); text = _tmp36_; _tmp37_ = self->priv->m_lookup_table; _tmp38_ = text; ibus_lookup_table_append_candidate (_tmp37_, _tmp38_); _g_object_unref0 (text); } } } _tmp40_ = self->priv->m_lookup_table; if (ibus_lookup_table_get_number_of_candidates (_tmp40_) > ((guint) 0)) { _tmp39_ = TRUE; } else { _tmp39_ = FALSE; } self->priv->m_candidate_panel_is_visible = _tmp39_; self->priv->m_candidate_panel_mode = TRUE; (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); _g_free0 (unicode_point); _g_free0 (annotation); } static gint __lambda16_ (const gchar* a, const gchar* b) { gboolean _tmp0_ = FALSE; GCompareFunc _tmp2_; gint result = 0; g_return_val_if_fail (a != NULL, 0); g_return_val_if_fail (b != NULL, 0); if (g_strcmp0 (a, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) == 0) { _tmp0_ = g_strcmp0 (b, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) != 0; } else { _tmp0_ = FALSE; } if (_tmp0_) { result = 1; return result; } else { gboolean _tmp1_ = FALSE; if (g_strcmp0 (a, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) != 0) { _tmp1_ = g_strcmp0 (b, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) == 0; } else { _tmp1_ = FALSE; } if (_tmp1_) { result = -1; return result; } } _tmp2_ = ((GCompareFunc) g_strcmp0); result = _tmp2_ (_ (a), _ (b)); return result; } static gint ___lambda16__gcompare_func (gconstpointer a, gconstpointer b) { gint result; result = __lambda16_ ((const gchar*) a, (const gchar*) b); return result; } static void ibus_emojier_update_category_list (IBusEmojier* self) { IBusLookupTable* _tmp0_; IBusText* text = NULL; gchar** _tmp1_; gint _tmp1__length1; GList* categories = NULL; GHashTable* _tmp5_; GList* _tmp6_; GList* _tmp7_; GSList* _tmp13_; g_return_if_fail (self != NULL); ibus_emojier_reset_window_mode (self); _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp0_); _tmp1_ = ibus_emojier_m_favorites; _tmp1__length1 = ibus_emojier_m_favorites_length1; if (_tmp1__length1 > 0) { IBusText* _tmp2_; IBusLookupTable* _tmp3_; IBusText* _tmp4_; _tmp2_ = ibus_text_new_from_string (IBUS_EMOJIER_EMOJI_CATEGORY_FAVORITES); g_object_ref_sink (_tmp2_); _g_object_unref0 (text); text = _tmp2_; _tmp3_ = self->priv->m_lookup_table; _tmp4_ = text; ibus_lookup_table_append_candidate (_tmp3_, _tmp4_); } _tmp5_ = ibus_emojier_m_category_to_emojis_dict; _tmp6_ = g_hash_table_get_keys (_tmp5_); categories = _tmp6_; categories = g_list_sort (categories, ___lambda16__gcompare_func); _tmp7_ = categories; { GList* category_collection = NULL; GList* category_it = NULL; category_collection = _tmp7_; for (category_it = category_collection; category_it != NULL; category_it = category_it->next) { const gchar* category = NULL; category = (const gchar*) category_it->data; { const gchar* _tmp8_; const gchar* _tmp9_; IBusText* _tmp10_; IBusLookupTable* _tmp11_; IBusText* _tmp12_; _tmp8_ = category; if (g_strcmp0 (_tmp8_, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) == 0) { continue; } _tmp9_ = category; _tmp10_ = ibus_text_new_from_string (_tmp9_); g_object_ref_sink (_tmp10_); _g_object_unref0 (text); text = _tmp10_; _tmp11_ = self->priv->m_lookup_table; _tmp12_ = text; ibus_lookup_table_append_candidate (_tmp11_, _tmp12_); } } } _tmp13_ = ibus_emojier_m_unicode_block_list; if (g_slist_length (_tmp13_) > ((guint) 0)) { IBusText* _tmp14_; IBusLookupTable* _tmp15_; IBusText* _tmp16_; _tmp14_ = ibus_text_new_from_string (IBUS_EMOJIER_EMOJI_CATEGORY_UNICODE); g_object_ref_sink (_tmp14_); _g_object_unref0 (text); text = _tmp14_; _tmp15_ = self->priv->m_lookup_table; _tmp16_ = text; ibus_lookup_table_append_candidate (_tmp15_, _tmp16_); } (categories == NULL) ? NULL : (categories = (g_list_free (categories), NULL)); _g_object_unref0 (text); } static void ibus_emojier_update_unicode_blocks (IBusEmojier* self) { IBusLookupTable* _tmp0_; GSList* _tmp1_; g_return_if_fail (self != NULL); ibus_emojier_reset_window_mode (self); _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp0_); ibus_emojier_m_show_unicode = TRUE; _tmp1_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp1_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { gchar* name = NULL; IBusUnicodeBlock* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; IBusText* text = NULL; const gchar* _tmp5_; IBusText* _tmp6_; IBusLookupTable* _tmp7_; IBusText* _tmp8_; _tmp2_ = block; _tmp3_ = ibus_unicode_block_get_name (_tmp2_); _tmp4_ = g_strdup (_tmp3_); name = _tmp4_; _tmp5_ = name; _tmp6_ = ibus_text_new_from_string (_tmp5_); g_object_ref_sink (_tmp6_); text = _tmp6_; _tmp7_ = self->priv->m_lookup_table; _tmp8_ = text; ibus_lookup_table_append_candidate (_tmp7_, _tmp8_); _g_object_unref0 (text); _g_free0 (name); } } } } static void ibus_emojier_show_code_point_description (IBusEmojier* self, const gchar* text) { IBusEmojierEPaddedLabelBox* widget_code = NULL; gchar* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; IBusEmojierEPaddedLabelBox* _tmp4_; IBusEmojierEPaddedLabelBox* _tmp5_; GtkBox* _tmp6_; IBusEmojierEPaddedLabelBox* _tmp7_; IBusEmojierEPaddedLabelBox* _tmp8_; GHashTable* _tmp9_; gconstpointer _tmp10_; g_return_if_fail (self != NULL); g_return_if_fail (text != NULL); _tmp0_ = ibus_emojier_utf8_code_point (text); _tmp1_ = _tmp0_; _tmp2_ = g_strdup_printf (_ ("Code point: %s"), _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = ibus_emojier_epadded_label_box_new (_tmp3_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp4_); _tmp5_ = _tmp4_; _g_free0 (_tmp3_); _g_free0 (_tmp1_); widget_code = _tmp5_; _tmp6_ = self->priv->m_vbox; _tmp7_ = widget_code; gtk_container_add ((GtkContainer*) _tmp6_, (GtkWidget*) _tmp7_); _tmp8_ = widget_code; gtk_widget_show_all ((GtkWidget*) _tmp8_); _tmp9_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp10_ = g_hash_table_lookup (_tmp9_, text); if (((GSList*) _tmp10_) != NULL) { IBusEmojierEPaddedLabelBox* widget_has_variant = NULL; IBusEmojierEPaddedLabelBox* _tmp11_; GtkBox* _tmp12_; IBusEmojierEPaddedLabelBox* _tmp13_; IBusEmojierEPaddedLabelBox* _tmp14_; _tmp11_ = ibus_emojier_epadded_label_box_new (_ ("Has emoji variants"), GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp11_); widget_has_variant = _tmp11_; _tmp12_ = self->priv->m_vbox; _tmp13_ = widget_has_variant; gtk_container_add ((GtkContainer*) _tmp12_, (GtkWidget*) _tmp13_); _tmp14_ = widget_has_variant; gtk_widget_show_all ((GtkWidget*) _tmp14_); _g_object_unref0 (widget_has_variant); } _g_object_unref0 (widget_code); } static gboolean ___lambda15_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e) { gboolean _tmp0_ = FALSE; gboolean result = FALSE; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); if (self->priv->m_backward_index >= 0) { const gchar* _tmp1_; _tmp1_ = self->priv->m_backward; _tmp0_ = _tmp1_ != NULL; } else { _tmp0_ = FALSE; } if (_tmp0_) { const gchar* _tmp2_; _tmp2_ = self->priv->m_backward; ibus_emojier_show_emoji_for_category (self, _tmp2_); ibus_emojier_show_candidate_panel (self); } else { ibus_emojier_hide_candidate_panel (self); gtk_widget_show_all ((GtkWidget*) self); } result = TRUE; return result; } static gboolean ____lambda15__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = ___lambda15_ ((IBusEmojier*) self, _sender, event); 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_)) { IBusEmojier* self; self = _data5_->self; _g_object_unref0 (self); g_slice_free (Block5Data, _data5_); } } static gboolean _____lambda17_ (Block5Data* _data5_, GtkWidget* w, GdkEventButton* e) { IBusEmojier* self; GdkModifierType _tmp0_; gboolean result = FALSE; self = _data5_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = e->state; g_signal_emit (self, ibus_emojier_signals[IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL], 0, _data5_->index, e->button, (guint) _tmp0_); result = TRUE; return result; } static gboolean ______lambda17__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = _____lambda17_ (self, _sender, event); return result; } static GdkEventMotion* _vala_GdkEventMotion_copy (GdkEventMotion* self) { return g_boxed_copy (gdk_event_get_type (), self); } static gpointer __vala_GdkEventMotion_copy0 (gpointer self) { return self ? _vala_GdkEventMotion_copy (self) : NULL; } static void _vala_GdkEventMotion_free (GdkEventMotion* self) { g_boxed_free (gdk_event_get_type (), self); } static gboolean __lambda19_ (IBusEmojier* self) { gboolean result = FALSE; ibus_emojier_show_candidate_panel (self); result = FALSE; return result; } static gboolean ___lambda19__gsource_func (gpointer self) { gboolean result; result = __lambda19_ ((IBusEmojier*) self); return result; } static gboolean _____lambda18_ (Block5Data* _data5_, GdkEventMotion* e) { IBusEmojier* self; IBusLookupTable* _tmp0_; GdkEventMotion* pe = NULL; GdkEventMotion* _tmp1_; gboolean _tmp2_ = FALSE; GdkEventMotion* _tmp3_; GdkEventMotion* _tmp5_; GdkEventMotion* _tmp6_; IBusLookupTable* _tmp7_; gboolean _tmp8_ = FALSE; gboolean result = FALSE; self = _data5_->self; g_return_val_if_fail (e != NULL, FALSE); if (!self->priv->m_enter_notify_enable) { result = FALSE; return result; } _tmp0_ = self->priv->m_lookup_table; if (ibus_lookup_table_get_cursor_pos (_tmp0_) == _data5_->index) { result = FALSE; return result; } _tmp1_ = __vala_GdkEventMotion_copy0 (e); pe = _tmp1_; _tmp3_ = pe; if (ibus_emojier_m_mouse_x == _tmp3_->x_root) { GdkEventMotion* _tmp4_; _tmp4_ = pe; _tmp2_ = ibus_emojier_m_mouse_y == _tmp4_->y_root; } else { _tmp2_ = FALSE; } if (_tmp2_) { result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } _tmp5_ = pe; ibus_emojier_m_mouse_x = _tmp5_->x_root; _tmp6_ = pe; ibus_emojier_m_mouse_y = _tmp6_->y_root; _tmp7_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp7_, _data5_->index); if (self->priv->m_entry_notify_show_id > ((guint) 0)) { GMainContext* _tmp9_; GSource* _tmp10_; _tmp9_ = g_main_context_default (); _tmp10_ = g_main_context_find_source_by_id (_tmp9_, self->priv->m_entry_notify_show_id); _tmp8_ = _tmp10_ != NULL; } else { _tmp8_ = FALSE; } if (_tmp8_) { g_source_remove (self->priv->m_entry_notify_show_id); } self->priv->m_entry_notify_show_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ___lambda19__gsource_func, g_object_ref (self), g_object_unref); result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } static gboolean ______lambda18__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self) { gboolean result; result = _____lambda18_ (self, event); return result; } static void _vala_array_add8 (GtkLabel** * array, gint* length, gint* 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 ibus_emojier_show_candidate_panel (IBusEmojier* self) { guint page_size = 0U; IBusLookupTable* _tmp0_; guint ncandidates = 0U; IBusLookupTable* _tmp1_; guint cursor = 0U; IBusLookupTable* _tmp2_; guint page_start_pos = 0U; guint page_end_pos = 0U; GtkButton* backward_button = NULL; const gchar* _tmp3_; IBusEmojierEGrid* grid = NULL; IBusEmojierEGrid* _tmp12_; gint n = 0; g_return_if_fail (self != NULL); ibus_emojier_remove_all_children (self); ibus_emojier_set_fixed_size (self); if (ibus_emojier_m_emoji_font_changed) { ibus_emojier_set_css_data (self); ibus_emojier_m_emoji_font_changed = FALSE; } _tmp0_ = self->priv->m_lookup_table; page_size = ibus_lookup_table_get_page_size (_tmp0_); _tmp1_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp1_); _tmp2_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp2_); page_start_pos = (cursor / page_size) * page_size; page_end_pos = MIN (page_start_pos + page_size, ncandidates); backward_button = NULL; _tmp3_ = self->priv->m_backward; if (_tmp3_ != NULL) { gchar* backward_desc = NULL; const gchar* _tmp4_; gchar* _tmp5_; IBusEmojierEPaddedLabelBox* label = NULL; const gchar* _tmp6_; IBusEmojierEPaddedLabelBox* _tmp7_; GtkButton* _tmp8_; GtkButton* _tmp9_; IBusEmojierEPaddedLabelBox* _tmp10_; GtkButton* _tmp11_; _tmp4_ = self->priv->m_backward; _tmp5_ = g_strdup (_ (_tmp4_)); backward_desc = _tmp5_; _tmp6_ = backward_desc; _tmp7_ = ibus_emojier_epadded_label_box_new (_tmp6_, GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD, NULL); g_object_ref_sink (_tmp7_); label = _tmp7_; _tmp8_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp8_); _g_object_unref0 (backward_button); backward_button = _tmp8_; _tmp9_ = backward_button; _tmp10_ = label; gtk_container_add ((GtkContainer*) _tmp9_, (GtkWidget*) _tmp10_); _tmp11_ = backward_button; g_signal_connect_object ((GtkWidget*) _tmp11_, "button-press-event", (GCallback) ____lambda15__gtk_widget_button_press_event, self, 0); _g_object_unref0 (label); _g_free0 (backward_desc); } _tmp12_ = ibus_emojier_egrid_new (); g_object_ref_sink (_tmp12_); grid = _tmp12_; n = 0; { guint i = 0U; i = page_start_pos; { gboolean _tmp13_ = FALSE; _tmp13_ = TRUE; while (TRUE) { Block5Data* _data5_; gchar* text = NULL; IBusLookupTable* _tmp15_; IBusText* _tmp16_; const gchar* _tmp17_; gchar* _tmp18_; gboolean has_variant = FALSE; GHashTable* _tmp19_; const gchar* _tmp20_; gconstpointer _tmp21_; GtkLabel* label = NULL; const gchar* _tmp33_; GtkLabel* _tmp46_; GtkLabel* _tmp47_; GtkEventBox* candidate_ebox = NULL; GtkEventBox* _tmp48_; GtkEventBox* _tmp49_; GtkEventBox* _tmp50_; GtkLabel* _tmp51_; GtkEventBox* _tmp52_; GtkEventBox* _tmp53_; IBusEmojierEGrid* _tmp54_; GtkEventBox* _tmp55_; gint _tmp56_; GtkLabel** _tmp57_; gint _tmp57__length1; GtkLabel* _tmp58_; GtkLabel* _tmp59_; _data5_ = g_slice_new0 (Block5Data); _data5_->_ref_count_ = 1; _data5_->self = g_object_ref (self); if (!_tmp13_) { guint _tmp14_; _tmp14_ = i; i = _tmp14_ + 1; } _tmp13_ = FALSE; if (!(i < page_end_pos)) { block5_data_unref (_data5_); _data5_ = NULL; break; } _tmp15_ = self->priv->m_lookup_table; _tmp16_ = ibus_lookup_table_get_candidate (_tmp15_, i); _tmp17_ = _tmp16_->text; _tmp18_ = g_strdup (_tmp17_); text = _tmp18_; _tmp19_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp20_ = text; _tmp21_ = g_hash_table_lookup (_tmp19_, _tmp20_); has_variant = ((GSList*) _tmp21_) != NULL; if (i == cursor) { const gchar* _tmp22_; IBusEmojierESelectedLabel* _tmp23_; GtkLabel* _tmp24_; _tmp22_ = text; _tmp23_ = ibus_emojier_eselected_label_new (_tmp22_); _tmp24_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp23_, gtk_label_get_type ()) ? ((GtkLabel*) _tmp23_) : NULL; if (_tmp24_ == NULL) { _g_object_unref0 (_tmp23_); } if (_tmp24_ != NULL) { g_object_ref_sink (_tmp24_); } _g_object_unref0 (label); label = _tmp24_; } else { gboolean _tmp25_ = FALSE; gboolean _tmp26_ = FALSE; if (ibus_emojier_m_show_emoji_variant) { _tmp26_ = has_variant; } else { _tmp26_ = FALSE; } if (_tmp26_) { _tmp25_ = self->priv->m_backward_index < 0; } else { _tmp25_ = FALSE; } if (_tmp25_) { const gchar* _tmp27_; IBusEmojierEGoldLabel* _tmp28_; GtkLabel* _tmp29_; _tmp27_ = text; _tmp28_ = ibus_emojier_egold_label_new (_tmp27_); _tmp29_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp28_, gtk_label_get_type ()) ? ((GtkLabel*) _tmp28_) : NULL; if (_tmp29_ == NULL) { _g_object_unref0 (_tmp28_); } if (_tmp29_ != NULL) { g_object_ref_sink (_tmp29_); } _g_object_unref0 (label); label = _tmp29_; } else { const gchar* _tmp30_; IBusEmojierEWhiteLabel* _tmp31_; GtkLabel* _tmp32_; _tmp30_ = text; _tmp31_ = ibus_emojier_ewhite_label_new (_tmp30_); _tmp32_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp31_, gtk_label_get_type ()) ? ((GtkLabel*) _tmp31_) : NULL; if (_tmp32_ == NULL) { _g_object_unref0 (_tmp31_); } if (_tmp32_ != NULL) { g_object_ref_sink (_tmp32_); } _g_object_unref0 (label); label = _tmp32_; } } _tmp33_ = text; if (g_utf8_strlen (_tmp33_, (gssize) -1) > 2) { gchar* font_family = NULL; const gchar* _tmp34_; gchar* _tmp35_; gint font_size = 0; gchar* emoji_font = NULL; const gchar* _tmp36_; gchar* _tmp37_; gchar* markup = NULL; const gchar* _tmp38_; const gchar* _tmp39_; gchar* _tmp40_; gchar* _tmp41_; gchar* _tmp42_; gchar* _tmp43_; GtkLabel* _tmp44_; const gchar* _tmp45_; _tmp34_ = ibus_emojier_m_emoji_font_family; _tmp35_ = g_strdup (_tmp34_); font_family = _tmp35_; font_size = ibus_emojier_m_emoji_font_size - 2; _tmp36_ = font_family; _tmp37_ = g_strdup_printf ("%s %d", _tmp36_, font_size); emoji_font = _tmp37_; _tmp38_ = emoji_font; _tmp39_ = text; _tmp40_ = ibus_emojier_utf8_entity (_tmp39_); _tmp41_ = _tmp40_; _tmp42_ = g_strdup_printf ("%s", _tmp38_, _tmp41_); _tmp43_ = _tmp42_; _g_free0 (_tmp41_); markup = _tmp43_; _tmp44_ = label; _tmp45_ = markup; gtk_label_set_markup (_tmp44_, _tmp45_); _g_free0 (markup); _g_free0 (emoji_font); _g_free0 (font_family); } _tmp46_ = label; gtk_widget_set_halign ((GtkWidget*) _tmp46_, GTK_ALIGN_FILL); _tmp47_ = label; gtk_widget_set_valign ((GtkWidget*) _tmp47_, GTK_ALIGN_FILL); _tmp48_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp48_); candidate_ebox = _tmp48_; _tmp49_ = candidate_ebox; gtk_widget_add_events ((GtkWidget*) _tmp49_, (gint) GDK_POINTER_MOTION_MASK); _tmp50_ = candidate_ebox; _tmp51_ = label; gtk_container_add ((GtkContainer*) _tmp50_, (GtkWidget*) _tmp51_); _data5_->index = i; _tmp52_ = candidate_ebox; g_signal_connect_data ((GtkWidget*) _tmp52_, "button-press-event", (GCallback) ______lambda17__gtk_widget_button_press_event, block5_data_ref (_data5_), (GClosureNotify) block5_data_unref, 0); _tmp53_ = candidate_ebox; g_signal_connect_data ((GtkWidget*) _tmp53_, "motion-notify-event", (GCallback) ______lambda18__gtk_widget_motion_notify_event, block5_data_ref (_data5_), (GClosureNotify) block5_data_unref, 0); _tmp54_ = grid; _tmp55_ = candidate_ebox; gtk_grid_attach ((GtkGrid*) _tmp54_, (GtkWidget*) _tmp55_, n % ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE), n / ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE), 1, 1); _tmp56_ = n; n = _tmp56_ + 1; _tmp57_ = self->priv->m_candidates; _tmp57__length1 = self->priv->m_candidates_length1; _tmp58_ = label; _tmp59_ = _g_object_ref0 (_tmp58_); _vala_array_add8 (&self->priv->m_candidates, &self->priv->m_candidates_length1, &self->priv->_m_candidates_size_, _tmp59_); _g_object_unref0 (candidate_ebox); _g_object_unref0 (label); _g_free0 (text); block5_data_unref (_data5_); _data5_ = NULL; } } } self->priv->m_candidate_panel_is_visible = TRUE; if (!self->priv->m_is_up_side_down) { GtkButton* _tmp60_; ibus_emojier_show_arrow_buttons (self); _tmp60_ = backward_button; if (_tmp60_ != NULL) { GtkBox* _tmp61_; GtkButton* _tmp62_; GtkButton* _tmp63_; _tmp61_ = self->priv->m_vbox; _tmp62_ = backward_button; gtk_container_add ((GtkContainer*) _tmp61_, (GtkWidget*) _tmp62_); _tmp63_ = backward_button; gtk_widget_show_all ((GtkWidget*) _tmp63_); } if (n > 0) { GtkBox* _tmp64_; IBusEmojierEGrid* _tmp65_; IBusEmojierEGrid* _tmp66_; _tmp64_ = self->priv->m_vbox; _tmp65_ = grid; gtk_container_add ((GtkContainer*) _tmp64_, (GtkWidget*) _tmp65_); _tmp66_ = grid; gtk_widget_show_all ((GtkWidget*) _tmp66_); ibus_emojier_show_description (self); } if (!ibus_emojier_m_loaded_unicode) { ibus_emojier_show_unicode_progress_bar (self); } } else { GtkButton* _tmp70_; if (!ibus_emojier_m_loaded_unicode) { ibus_emojier_show_unicode_progress_bar (self); } if (n > 0) { GtkBox* _tmp67_; IBusEmojierEGrid* _tmp68_; IBusEmojierEGrid* _tmp69_; ibus_emojier_show_description (self); _tmp67_ = self->priv->m_vbox; _tmp68_ = grid; gtk_container_add ((GtkContainer*) _tmp67_, (GtkWidget*) _tmp68_); _tmp69_ = grid; gtk_widget_show_all ((GtkWidget*) _tmp69_); } _tmp70_ = backward_button; if (_tmp70_ != NULL) { GtkBox* _tmp71_; GtkButton* _tmp72_; GtkButton* _tmp73_; _tmp71_ = self->priv->m_vbox; _tmp72_ = backward_button; gtk_container_add ((GtkContainer*) _tmp71_, (GtkWidget*) _tmp72_); _tmp73_ = backward_button; gtk_widget_show_all ((GtkWidget*) _tmp73_); } ibus_emojier_show_arrow_buttons (self); } _g_object_unref0 (grid); _g_object_unref0 (backward_button); } static void ibus_emojier_show_description (IBusEmojier* self) { guint cursor = 0U; IBusLookupTable* _tmp0_; gchar* text = NULL; IBusLookupTable* _tmp1_; IBusText* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; IBusEmojiData* data = NULL; GHashTable* _tmp5_; const gchar* _tmp6_; gconstpointer _tmp7_; IBusEmojiData* _tmp8_; const gchar* _tmp11_; IBusEmojierEPaddedLabelBox* widget = NULL; gchar* _tmp18_; gchar* _tmp19_; IBusEmojierEPaddedLabelBox* _tmp20_; IBusEmojierEPaddedLabelBox* _tmp21_; GtkBox* _tmp22_; IBusEmojierEPaddedLabelBox* _tmp23_; IBusEmojierEPaddedLabelBox* _tmp24_; const gchar* _tmp25_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp0_); _tmp1_ = self->priv->m_lookup_table; _tmp2_ = ibus_lookup_table_get_candidate (_tmp1_, cursor); _tmp3_ = _tmp2_->text; _tmp4_ = g_strdup (_tmp3_); text = _tmp4_; _tmp5_ = ibus_emojier_m_emoji_to_data_dict; _tmp6_ = text; _tmp7_ = g_hash_table_lookup (_tmp5_, _tmp6_); data = (IBusEmojiData*) _tmp7_; _tmp8_ = data; if (_tmp8_ != NULL) { IBusEmojiData* _tmp9_; const gchar* _tmp10_; _tmp9_ = data; _tmp10_ = text; ibus_emojier_show_emoji_description (self, _tmp9_, _tmp10_); _g_free0 (text); return; } _tmp11_ = text; if (g_utf8_strlen (_tmp11_, (gssize) -1) <= 1) { gunichar code = 0U; const gchar* _tmp12_; IBusUnicodeData* udata = NULL; GHashTable* _tmp13_; gconstpointer _tmp14_; IBusUnicodeData* _tmp15_; _tmp12_ = text; code = string_get_char (_tmp12_, (glong) 0); _tmp13_ = ibus_emojier_m_unicode_to_data_dict; _tmp14_ = g_hash_table_lookup (_tmp13_, (gpointer) ((gintptr) code)); udata = (IBusUnicodeData*) _tmp14_; _tmp15_ = udata; if (_tmp15_ != NULL) { IBusUnicodeData* _tmp16_; const gchar* _tmp17_; _tmp16_ = udata; _tmp17_ = text; ibus_emojier_show_unicode_description (self, _tmp16_, _tmp17_); _g_free0 (text); return; } } _tmp18_ = g_strdup_printf (_ ("Description: %s"), _ ("None")); _tmp19_ = _tmp18_; _tmp20_ = ibus_emojier_epadded_label_box_new (_tmp19_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp20_); _tmp21_ = _tmp20_; _g_free0 (_tmp19_); widget = _tmp21_; _tmp22_ = self->priv->m_vbox; _tmp23_ = widget; gtk_container_add ((GtkContainer*) _tmp22_, (GtkWidget*) _tmp23_); _tmp24_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp24_); _tmp25_ = text; ibus_emojier_show_code_point_description (self, _tmp25_); _g_object_unref0 (widget); _g_free0 (text); } static void ibus_emojier_show_emoji_description (IBusEmojier* self, IBusEmojiData* data, const gchar* text) { const gchar* description = NULL; const gchar* _tmp0_; GSList* annotations = NULL; GSList* _tmp9_; GSList* _tmp10_; GString* buff = NULL; GString* _tmp11_; gint i = 0; GSList* _tmp12_; GString* _tmp27_; const gchar* _tmp28_; g_return_if_fail (self != NULL); g_return_if_fail (data != NULL); g_return_if_fail (text != NULL); _tmp0_ = ibus_emoji_data_get_description (data); description = _tmp0_; { IBusEmojierEPaddedLabelBox* widget = NULL; const gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; IBusEmojierEPaddedLabelBox* _tmp4_; IBusEmojierEPaddedLabelBox* _tmp5_; GtkBox* _tmp6_; IBusEmojierEPaddedLabelBox* _tmp7_; IBusEmojierEPaddedLabelBox* _tmp8_; _tmp1_ = description; _tmp2_ = g_strdup_printf (_ ("Description: %s"), _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = ibus_emojier_epadded_label_box_new (_tmp3_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp4_); _tmp5_ = _tmp4_; _g_free0 (_tmp3_); widget = _tmp5_; _tmp6_ = self->priv->m_vbox; _tmp7_ = widget; gtk_container_add ((GtkContainer*) _tmp6_, (GtkWidget*) _tmp7_); _tmp8_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp8_); _g_object_unref0 (widget); } _tmp9_ = ibus_emoji_data_get_annotations (data); _tmp10_ = g_slist_copy_deep (_tmp9_, _g_strdup_gcopy_func, NULL); annotations = _tmp10_; _tmp11_ = g_string_new (""); buff = _tmp11_; i = 0; _tmp12_ = annotations; { GSList* annotation_collection = NULL; GSList* annotation_it = NULL; annotation_collection = _tmp12_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { const gchar* annotation = NULL; annotation = (const gchar*) annotation_it->data; { gint _tmp13_; GString* _tmp18_; const gchar* _tmp19_; _tmp13_ = i; i = _tmp13_ + 1; if (_tmp13_ == 0) { GString* _tmp14_; const gchar* _tmp15_; _tmp14_ = buff; _tmp15_ = annotation; g_string_append_printf (_tmp14_, _ ("Annotations: %s"), _tmp15_); } else { GString* _tmp16_; const gchar* _tmp17_; _tmp16_ = buff; _tmp17_ = annotation; g_string_append_printf (_tmp16_, " | %s", _tmp17_); } _tmp18_ = buff; _tmp19_ = _tmp18_->str; if (g_utf8_strlen (_tmp19_, (gssize) -1) > 30) { IBusEmojierEPaddedLabelBox* widget = NULL; GString* _tmp20_; const gchar* _tmp21_; IBusEmojierEPaddedLabelBox* _tmp22_; GtkBox* _tmp23_; IBusEmojierEPaddedLabelBox* _tmp24_; IBusEmojierEPaddedLabelBox* _tmp25_; GString* _tmp26_; _tmp20_ = buff; _tmp21_ = _tmp20_->str; _tmp22_ = ibus_emojier_epadded_label_box_new (_tmp21_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp22_); widget = _tmp22_; _tmp23_ = self->priv->m_vbox; _tmp24_ = widget; gtk_container_add ((GtkContainer*) _tmp23_, (GtkWidget*) _tmp24_); _tmp25_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp25_); _tmp26_ = buff; g_string_erase (_tmp26_, (gssize) 0, (gssize) -1); _g_object_unref0 (widget); } } } } _tmp27_ = buff; _tmp28_ = _tmp27_->str; if (g_strcmp0 (_tmp28_, "") != 0) { IBusEmojierEPaddedLabelBox* widget = NULL; GString* _tmp29_; const gchar* _tmp30_; IBusEmojierEPaddedLabelBox* _tmp31_; GtkBox* _tmp32_; IBusEmojierEPaddedLabelBox* _tmp33_; IBusEmojierEPaddedLabelBox* _tmp34_; _tmp29_ = buff; _tmp30_ = _tmp29_->str; _tmp31_ = ibus_emojier_epadded_label_box_new (_tmp30_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp31_); widget = _tmp31_; _tmp32_ = self->priv->m_vbox; _tmp33_ = widget; gtk_container_add ((GtkContainer*) _tmp32_, (GtkWidget*) _tmp33_); _tmp34_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp34_); _g_object_unref0 (widget); } ibus_emojier_show_code_point_description (self, text); _g_string_free0 (buff); (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); } static void ibus_emojier_show_unicode_description (IBusEmojier* self, IBusUnicodeData* data, const gchar* text) { const gchar* name = NULL; const gchar* _tmp0_; const gchar* alias = NULL; const gchar* _tmp6_; g_return_if_fail (self != NULL); g_return_if_fail (data != NULL); g_return_if_fail (text != NULL); _tmp0_ = ibus_unicode_data_get_name (data); name = _tmp0_; { IBusEmojierEPaddedLabelBox* widget = NULL; gchar* _tmp1_; gchar* _tmp2_; IBusEmojierEPaddedLabelBox* _tmp3_; IBusEmojierEPaddedLabelBox* _tmp4_; GtkBox* _tmp5_; _tmp1_ = g_strdup_printf (_ ("Name: %s"), name); _tmp2_ = _tmp1_; _tmp3_ = ibus_emojier_epadded_label_box_new (_tmp2_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp3_); _tmp4_ = _tmp3_; _g_free0 (_tmp2_); widget = _tmp4_; _tmp5_ = self->priv->m_vbox; gtk_container_add ((GtkContainer*) _tmp5_, (GtkWidget*) widget); gtk_widget_show_all ((GtkWidget*) widget); _g_object_unref0 (widget); } _tmp6_ = ibus_unicode_data_get_alias (data); alias = _tmp6_; { IBusEmojierEPaddedLabelBox* widget = NULL; gchar* _tmp7_; gchar* _tmp8_; IBusEmojierEPaddedLabelBox* _tmp9_; IBusEmojierEPaddedLabelBox* _tmp10_; GtkBox* _tmp11_; _tmp7_ = g_strdup_printf (_ ("Alias: %s"), alias); _tmp8_ = _tmp7_; _tmp9_ = ibus_emojier_epadded_label_box_new (_tmp8_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp9_); _tmp10_ = _tmp9_; _g_free0 (_tmp8_); widget = _tmp10_; _tmp11_ = self->priv->m_vbox; gtk_container_add ((GtkContainer*) _tmp11_, (GtkWidget*) widget); gtk_widget_show_all ((GtkWidget*) widget); _g_object_unref0 (widget); } ibus_emojier_show_code_point_description (self, text); } static void ibus_emojier_hide_candidate_panel (IBusEmojier* self) { gchar* _tmp0_; g_return_if_fail (self != NULL); gtk_widget_hide ((GtkWidget*) self); self->priv->m_enter_notify_enable = TRUE; _tmp0_ = g_strdup (""); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp0_; ibus_emojier_remove_all_children (self); if (ibus_emojier_m_show_unicode) { ibus_emojier_update_unicode_blocks (self); } else { ibus_emojier_update_category_list (self); } } static gboolean __lambda29_ (IBusEmojier* self) { gboolean result = FALSE; self->priv->m_enter_notify_enable = TRUE; result = FALSE; return result; } static gboolean ___lambda29__gsource_func (gpointer self) { gboolean result; result = __lambda29_ ((IBusEmojier*) self); return result; } static void ibus_emojier_enter_notify_disable_with_timer (IBusEmojier* self) { g_return_if_fail (self != NULL); self->priv->m_enter_notify_enable = FALSE; if (self->priv->m_entry_notify_disable_id > ((guint) 0)) { g_source_remove (self->priv->m_entry_notify_disable_id); } self->priv->m_entry_notify_show_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ___lambda29__gsource_func, g_object_ref (self), g_object_unref); } static void ibus_emojier_candidate_panel_cursor_down (IBusEmojier* self) { guint ncandidates = 0U; IBusLookupTable* _tmp0_; guint cursor = 0U; IBusLookupTable* _tmp1_; g_return_if_fail (self != NULL); ibus_emojier_enter_notify_disable_with_timer (self); _tmp0_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp0_); _tmp1_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp1_); if ((cursor + IBUS_EMOJIER_EMOJI_GRID_PAGE) < ncandidates) { IBusLookupTable* _tmp2_; _tmp2_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp2_, cursor + IBUS_EMOJIER_EMOJI_GRID_PAGE); } else { if ((cursor % IBUS_EMOJIER_EMOJI_GRID_PAGE) < ncandidates) { IBusLookupTable* _tmp3_; _tmp3_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp3_, cursor % IBUS_EMOJIER_EMOJI_GRID_PAGE); } else { IBusLookupTable* _tmp4_; _tmp4_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp4_, (guint) 0); } } } static void ibus_emojier_candidate_panel_cursor_up (IBusEmojier* self) { gint ncandidates = 0; IBusLookupTable* _tmp0_; gint cursor = 0; IBusLookupTable* _tmp1_; gint highest_pos = 0; g_return_if_fail (self != NULL); ibus_emojier_enter_notify_disable_with_timer (self); _tmp0_ = self->priv->m_lookup_table; ncandidates = (gint) ibus_lookup_table_get_number_of_candidates (_tmp0_); _tmp1_ = self->priv->m_lookup_table; cursor = (gint) ibus_lookup_table_get_cursor_pos (_tmp1_); highest_pos = (((ncandidates - 1) / ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)) * ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)) + (cursor % ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)); if ((cursor - ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)) >= 0) { IBusLookupTable* _tmp2_; _tmp2_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp2_, (guint) (cursor - ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE))); } else { if (highest_pos < ncandidates) { IBusLookupTable* _tmp3_; _tmp3_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp3_, (guint) highest_pos); } else { IBusLookupTable* _tmp4_; _tmp4_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp4_, (guint) 0); } } } static gint ibus_emojier_get_page_num (IBusEmojier* self) { GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp0_; GtkListBoxRow* _tmp1_; GtkListBoxRow* _tmp2_; GtkAllocation alloc = {0}; GtkAllocation _tmp3_ = {0}; GtkListBoxRow* _tmp4_; GtkAllocation _tmp5_ = {0}; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp6_; GtkAdjustment* _tmp7_; GtkAdjustment* _tmp8_; gint page_size = 0; GtkAdjustment* _tmp9_; gint page_num = 0; GtkAllocation _tmp10_; gint _tmp11_ = 0; GtkAllocation _tmp12_; gint result = 0; g_return_val_if_fail (self != NULL, 0); if (self->priv->m_category_active_index < 0) { self->priv->m_category_active_index = 0; } _tmp0_ = self->priv->m_list_box; _tmp1_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp0_, self->priv->m_category_active_index); _tmp2_ = _g_object_ref0 (_tmp1_); row = _tmp2_; _tmp3_.x = 0; _tmp3_.y = 0; _tmp3_.width = 0; _tmp3_.height = 0; alloc = _tmp3_; _tmp4_ = row; gtk_widget_get_allocation ((GtkWidget*) _tmp4_, &_tmp5_); alloc = _tmp5_; _tmp6_ = self->priv->m_scrolled_window; _tmp7_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp6_); _tmp8_ = _g_object_ref0 (_tmp7_); adjustment = _tmp8_; _tmp9_ = adjustment; page_size = (gint) gtk_adjustment_get_page_size (_tmp9_); _tmp10_ = alloc; page_num = page_size / _tmp10_.height; _tmp12_ = alloc; if ((page_size % _tmp12_.height) > 0) { _tmp11_ = 1; } else { _tmp11_ = 0; } page_num += _tmp11_; result = page_num; _g_object_unref0 (adjustment); _g_object_unref0 (row); return result; } static gboolean ibus_emojier_category_list_cursor_move (IBusEmojier* self, guint keyval) { IBusEmojierEListBox* _tmp0_; GList* list = NULL; IBusEmojierEListBox* _tmp1_; GList* _tmp2_; gint length = 0; GList* _tmp3_; GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp4_; GtkListBoxRow* _tmp5_; GtkListBoxRow* _tmp6_; GtkListBoxRow* _tmp7_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_list_box; g_return_val_if_fail (_tmp0_ != NULL, FALSE); _tmp1_ = self->priv->m_list_box; _tmp2_ = gtk_container_get_children ((GtkContainer*) _tmp1_); list = _tmp2_; _tmp3_ = list; length = (gint) g_list_length (_tmp3_); if (length == 0) { result = FALSE; (list == NULL) ? NULL : (list = (g_list_free (list), NULL)); return result; } switch (keyval) { case GDK_KEY_Down: { self->priv->m_category_active_index = self->priv->m_category_active_index + 1; if (self->priv->m_category_active_index == length) { self->priv->m_category_active_index = 0; } break; } case GDK_KEY_Up: { self->priv->m_category_active_index = self->priv->m_category_active_index - 1; if (self->priv->m_category_active_index < 0) { self->priv->m_category_active_index = length - 1; } break; } case GDK_KEY_Home: { self->priv->m_category_active_index = 0; break; } case GDK_KEY_End: { self->priv->m_category_active_index = length - 1; break; } case GDK_KEY_Page_Down: { gint page_num = 0; page_num = ibus_emojier_get_page_num (self); if ((self->priv->m_category_active_index + 1) == length) { self->priv->m_category_active_index = 0; } else { if ((self->priv->m_category_active_index + page_num) >= length) { self->priv->m_category_active_index = length - 1; } else { self->priv->m_category_active_index = self->priv->m_category_active_index + page_num; } } break; } case GDK_KEY_Page_Up: { gint page_num = 0; page_num = ibus_emojier_get_page_num (self); if (self->priv->m_category_active_index == 0) { self->priv->m_category_active_index = length - 1; } else { if ((self->priv->m_category_active_index - page_num) < 0) { self->priv->m_category_active_index = 0; } else { self->priv->m_category_active_index = self->priv->m_category_active_index - page_num; } } break; } default: break; } _tmp4_ = self->priv->m_list_box; _tmp5_ = gtk_list_box_get_selected_row ((GtkListBox*) _tmp4_); _tmp6_ = _g_object_ref0 (_tmp5_); row = _tmp6_; _tmp7_ = row; if (_tmp7_ != NULL) { IBusEmojierEListBox* _tmp8_; GtkListBoxRow* _tmp9_; _tmp8_ = self->priv->m_list_box; _tmp9_ = row; gtk_list_box_unselect_row ((GtkListBox*) _tmp8_, _tmp9_); } ibus_emojier_clamp_page (self); result = TRUE; _g_object_unref0 (row); (list == NULL) ? NULL : (list = (g_list_free (list), NULL)); return result; } gboolean ibus_emojier_has_variants (IBusEmojier* self, guint index, gboolean need_commit_signal) { IBusLookupTable* _tmp0_; gchar* text = NULL; IBusLookupTable* _tmp1_; IBusText* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; GSList* emojis = NULL; GHashTable* _tmp5_; const gchar* _tmp6_; gconstpointer _tmp7_; gboolean _tmp8_ = FALSE; gboolean _tmp9_ = FALSE; const gchar* _tmp12_; gchar* _tmp13_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_lookup_table; if (index >= ibus_lookup_table_get_number_of_candidates (_tmp0_)) { result = FALSE; return result; } _tmp1_ = self->priv->m_lookup_table; _tmp2_ = ibus_lookup_table_get_candidate (_tmp1_, index); _tmp3_ = _tmp2_->text; _tmp4_ = g_strdup (_tmp3_); text = _tmp4_; _tmp5_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp6_ = text; _tmp7_ = g_hash_table_lookup (_tmp5_, _tmp6_); emojis = (GSList*) _tmp7_; if (ibus_emojier_m_show_emoji_variant) { GSList* _tmp10_; _tmp10_ = emojis; _tmp9_ = _tmp10_ != NULL; } else { _tmp9_ = FALSE; } if (_tmp9_) { _tmp8_ = self->priv->m_backward_index < 0; } else { _tmp8_ = FALSE; } if (_tmp8_) { GSList* _tmp11_; _tmp11_ = emojis; ibus_emojier_show_emoji_variants (self, _tmp11_); result = TRUE; _g_free0 (text); return result; } _tmp12_ = text; _tmp13_ = g_strdup (_tmp12_); _g_free0 (self->priv->m_result); self->priv->m_result = _tmp13_; if (need_commit_signal) { const gchar* _tmp14_; _tmp14_ = text; g_signal_emit (self, ibus_emojier_signals[IBUS_EMOJIER_COMMIT_TEXT_SIGNAL], 0, _tmp14_); } result = FALSE; _g_free0 (text); return result; } gboolean ibus_emojier_key_press_cursor_horizontal (IBusEmojier* self, guint keyval, guint modifiers) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (keyval == GDK_KEY_Left) { _tmp0_ = TRUE; } else { _tmp0_ = keyval == GDK_KEY_Right; } _vala_assert (_tmp0_, "keyval == Gdk.Key.Left || keyval == Gdk.Key.Right"); if (self->priv->m_candidate_panel_mode) { IBusLookupTable* _tmp2_; _tmp2_ = self->priv->m_lookup_table; _tmp1_ = ibus_lookup_table_get_number_of_candidates (_tmp2_) > ((guint) 0); } else { _tmp1_ = FALSE; } if (_tmp1_) { ibus_emojier_enter_notify_disable_with_timer (self); if (keyval == GDK_KEY_Left) { IBusLookupTable* _tmp3_; _tmp3_ = self->priv->m_lookup_table; ibus_lookup_table_cursor_up (_tmp3_); } else { if (keyval == GDK_KEY_Right) { IBusLookupTable* _tmp4_; _tmp4_ = self->priv->m_lookup_table; ibus_lookup_table_cursor_down (_tmp4_); } } } else { if (keyval == GDK_KEY_Left) { keyval = GDK_KEY_Up; } else { if (keyval == GDK_KEY_Right) { keyval = GDK_KEY_Down; } } result = ibus_emojier_category_list_cursor_move (self, keyval); return result; } result = TRUE; return result; } gboolean ibus_emojier_key_press_cursor_vertical (IBusEmojier* self, guint keyval, guint modifiers) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; gboolean _tmp4_ = FALSE; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (keyval == GDK_KEY_Down) { _tmp2_ = TRUE; } else { _tmp2_ = keyval == GDK_KEY_Up; } if (_tmp2_) { _tmp1_ = TRUE; } else { _tmp1_ = keyval == GDK_KEY_Page_Down; } if (_tmp1_) { _tmp0_ = TRUE; } else { _tmp0_ = keyval == GDK_KEY_Page_Up; } _vala_assert (_tmp0_, "keyval == Gdk.Key.Down || keyval == Gdk.Key.Up || keyval == Gdk.Key.Page_Down || keyval == Gdk.Key.Page_Up"); if ((modifiers & GDK_SHIFT_MASK) != ((guint) 0)) { if (keyval == GDK_KEY_Down) { keyval = GDK_KEY_Page_Down; } else { if (keyval == GDK_KEY_Up) { keyval = GDK_KEY_Page_Up; } } } if (self->priv->m_candidate_panel_is_visible) { _tmp4_ = TRUE; } else { const gchar* _tmp5_; gint _tmp6_; gint _tmp7_; _tmp5_ = self->priv->m_annotation; _tmp6_ = strlen (_tmp5_); _tmp7_ = _tmp6_; _tmp4_ = _tmp7_ > 0; } if (_tmp4_) { IBusLookupTable* _tmp8_; _tmp8_ = self->priv->m_lookup_table; _tmp3_ = ibus_lookup_table_get_number_of_candidates (_tmp8_) > ((guint) 0); } else { _tmp3_ = FALSE; } if (_tmp3_) { switch (keyval) { case GDK_KEY_Down: { ibus_emojier_candidate_panel_cursor_down (self); break; } case GDK_KEY_Up: { ibus_emojier_candidate_panel_cursor_up (self); break; } case GDK_KEY_Page_Down: { IBusLookupTable* _tmp9_; ibus_emojier_enter_notify_disable_with_timer (self); _tmp9_ = self->priv->m_lookup_table; ibus_lookup_table_page_down (_tmp9_); break; } case GDK_KEY_Page_Up: { IBusLookupTable* _tmp10_; ibus_emojier_enter_notify_disable_with_timer (self); _tmp10_ = self->priv->m_lookup_table; ibus_lookup_table_page_up (_tmp10_); break; } default: break; } } else { result = ibus_emojier_category_list_cursor_move (self, keyval); return result; } result = TRUE; return result; } gboolean ibus_emojier_key_press_cursor_home_end (IBusEmojier* self, guint keyval, guint modifiers) { gboolean _tmp0_ = FALSE; guint ncandidates = 0U; IBusLookupTable* _tmp1_; gboolean _tmp2_ = FALSE; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (keyval == GDK_KEY_Home) { _tmp0_ = TRUE; } else { _tmp0_ = keyval == GDK_KEY_End; } _vala_assert (_tmp0_, "keyval == Gdk.Key.Home || keyval == Gdk.Key.End"); _tmp1_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp1_); if (self->priv->m_candidate_panel_mode) { _tmp2_ = ncandidates > ((guint) 0); } else { _tmp2_ = FALSE; } if (_tmp2_) { ibus_emojier_enter_notify_disable_with_timer (self); if (keyval == GDK_KEY_Home) { IBusLookupTable* _tmp3_; _tmp3_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp3_, (guint) 0); } else { if (keyval == GDK_KEY_End) { IBusLookupTable* _tmp4_; _tmp4_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp4_, ncandidates - 1); } } result = TRUE; return result; } result = ibus_emojier_category_list_cursor_move (self, keyval); return result; } gboolean ibus_emojier_key_press_escape (IBusEmojier* self) { gboolean _tmp5_ = FALSE; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (ibus_emojier_m_show_unicode) { if (!self->priv->m_candidate_panel_is_visible) { ibus_emojier_m_show_unicode = FALSE; self->priv->m_category_active_index = -1; } ibus_emojier_hide_candidate_panel (self); result = TRUE; return result; } else { gboolean _tmp0_ = FALSE; if (self->priv->m_backward_index >= 0) { const gchar* _tmp1_; _tmp1_ = self->priv->m_backward; _tmp0_ = _tmp1_ != NULL; } else { _tmp0_ = FALSE; } if (_tmp0_) { const gchar* _tmp2_; _tmp2_ = self->priv->m_backward; ibus_emojier_show_emoji_for_category (self, _tmp2_); result = TRUE; return result; } else { gboolean _tmp3_ = FALSE; if (self->priv->m_candidate_panel_is_visible) { const gchar* _tmp4_; _tmp4_ = self->priv->m_backward; _tmp3_ = _tmp4_ != NULL; } else { _tmp3_ = FALSE; } if (_tmp3_) { ibus_emojier_hide_candidate_panel (self); result = TRUE; return result; } } } gtk_widget_hide ((GtkWidget*) self); if (self->priv->m_candidate_panel_mode) { IBusLookupTable* _tmp6_; _tmp6_ = self->priv->m_lookup_table; _tmp5_ = ibus_lookup_table_get_number_of_candidates (_tmp6_) > ((guint) 0); } else { _tmp5_ = FALSE; } if (_tmp5_) { ibus_emojier_remove_all_children (self); } g_signal_emit (self, ibus_emojier_signals[IBUS_EMOJIER_CANCEL_SIGNAL], 0); result = FALSE; return result; } gboolean ibus_emojier_key_press_enter (IBusEmojier* self, gboolean need_commit_signal) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (self->priv->m_candidate_panel_is_visible) { guint index = 0U; IBusLookupTable* _tmp0_; _tmp0_ = self->priv->m_lookup_table; index = ibus_lookup_table_get_cursor_pos (_tmp0_); result = ibus_emojier_has_variants (self, index, need_commit_signal); return result; } else { if (self->priv->m_category_active_index >= 0) { GtkListBoxRow* gtkrow = NULL; IBusEmojierEListBox* _tmp1_; GtkListBoxRow* _tmp2_; GtkListBoxRow* _tmp3_; IBusEmojierEBoxRow* row = NULL; GtkListBoxRow* _tmp4_; IBusEmojierEBoxRow* _tmp5_; _tmp1_ = self->priv->m_list_box; _tmp2_ = gtk_list_box_get_selected_row ((GtkListBox*) _tmp1_); _tmp3_ = _g_object_ref0 (_tmp2_); gtkrow = _tmp3_; _tmp4_ = gtkrow; _tmp5_ = _g_object_ref0 (IBUS_EMOJIER_IS_EBOX_ROW (_tmp4_) ? ((IBusEmojierEBoxRow*) _tmp4_) : NULL); row = _tmp5_; if (ibus_emojier_m_show_unicode) { IBusEmojierEBoxRow* _tmp6_; const gchar* _tmp7_; const gchar* _tmp8_; _tmp6_ = row; _tmp7_ = ibus_emojier_ebox_row_get_text (_tmp6_); _tmp8_ = _tmp7_; ibus_emojier_show_unicode_for_block (self, _tmp8_); } else { IBusEmojierEBoxRow* _tmp9_; const gchar* _tmp10_; const gchar* _tmp11_; _tmp9_ = row; _tmp10_ = ibus_emojier_ebox_row_get_text (_tmp9_); _tmp11_ = _tmp10_; ibus_emojier_show_emoji_for_category (self, _tmp11_); } _g_object_unref0 (row); _g_object_unref0 (gtkrow); } } result = TRUE; return result; } static void ibus_emojier_get_monitor_geometry (IBusEmojier* self, GdkRectangle* result) { GdkRectangle monitor_area = {0}; GdkRectangle _tmp0_ = {0}; GdkMonitor* monitor = NULL; GdkDisplay* _tmp1_; GdkRectangle _tmp2_; GdkRectangle _tmp3_; GdkMonitor* _tmp4_; GdkMonitor* _tmp5_; GdkRectangle _tmp6_ = {0}; g_return_if_fail (self != NULL); _tmp0_.x = 0; monitor_area = _tmp0_; _tmp1_ = gdk_display_get_default (); _tmp2_ = self->priv->m_cursor_location; _tmp3_ = self->priv->m_cursor_location; _tmp4_ = gdk_display_get_monitor_at_point (_tmp1_, _tmp2_.x, _tmp3_.y); _tmp5_ = _g_object_ref0 (_tmp4_); monitor = _tmp5_; gdk_monitor_get_geometry (monitor, &_tmp6_); monitor_area = _tmp6_; *result = monitor_area; _g_object_unref0 (monitor); return; } static gboolean ___lambda14_ (IBusEmojier* self) { gboolean result = FALSE; self->priv->m_redraw_window_id = (guint) 0; gtk_widget_show_all ((GtkWidget*) self); result = FALSE; return result; } static gboolean ____lambda14__gsource_func (gpointer self) { gboolean result; result = ___lambda14_ ((IBusEmojier*) self); return result; } static void ibus_emojier_adjust_window_position (IBusEmojier* self) { GdkPoint cursor_right_bottom = {0}; GdkRectangle _tmp0_; GdkRectangle _tmp1_; GdkRectangle _tmp2_; GdkRectangle _tmp3_; GdkPoint _tmp4_ = {0}; GtkAllocation allocation = {0}; GtkAllocation _tmp5_ = {0}; GdkPoint window_right_bottom = {0}; GdkPoint _tmp6_; GtkAllocation _tmp7_; GdkPoint _tmp8_; GtkAllocation _tmp9_; GdkPoint _tmp10_ = {0}; GdkRectangle monitor_area = {0}; GdkRectangle _tmp11_ = {0}; gint monitor_right = 0; GdkRectangle _tmp12_; GdkRectangle _tmp13_; gint monitor_bottom = 0; GdkRectangle _tmp14_; GdkRectangle _tmp15_; gint x = 0; gint y = 0; GdkPoint _tmp16_; gboolean changed = FALSE; IBusLookupTable* _tmp19_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_cursor_location; _tmp1_ = self->priv->m_cursor_location; _tmp2_ = self->priv->m_cursor_location; _tmp3_ = self->priv->m_cursor_location; _tmp4_.x = _tmp0_.x + _tmp1_.width; _tmp4_.y = _tmp2_.y + _tmp3_.height; cursor_right_bottom = _tmp4_; gtk_widget_get_allocation ((GtkWidget*) self, &_tmp5_); allocation = _tmp5_; _tmp6_ = cursor_right_bottom; _tmp7_ = allocation; _tmp8_ = cursor_right_bottom; _tmp9_ = allocation; _tmp10_.x = _tmp6_.x + _tmp7_.width; _tmp10_.y = _tmp8_.y + _tmp9_.height; window_right_bottom = _tmp10_; ibus_emojier_get_monitor_geometry (self, &_tmp11_); monitor_area = _tmp11_; _tmp12_ = monitor_area; _tmp13_ = monitor_area; monitor_right = _tmp12_.x + _tmp13_.width; _tmp14_ = monitor_area; _tmp15_ = monitor_area; monitor_bottom = _tmp14_.y + _tmp15_.height; _tmp16_ = window_right_bottom; if (_tmp16_.x > monitor_right) { GtkAllocation _tmp17_; _tmp17_ = allocation; x = monitor_right - _tmp17_.width; } else { GdkPoint _tmp18_; _tmp18_ = cursor_right_bottom; x = _tmp18_.x; } if (x < 0) { x = 0; } changed = FALSE; _tmp19_ = self->priv->m_lookup_table; if (ibus_lookup_table_get_cursor_pos (_tmp19_) != ((guint) 1)) { if (self->priv->m_is_up_side_down) { GdkRectangle _tmp20_; GtkAllocation _tmp21_; _tmp20_ = self->priv->m_cursor_location; _tmp21_ = allocation; y = _tmp20_.y - _tmp21_.height; } else { GdkPoint _tmp22_; _tmp22_ = cursor_right_bottom; y = _tmp22_.y; } } else { GdkPoint _tmp23_; _tmp23_ = window_right_bottom; if (_tmp23_.y > monitor_bottom) { GdkRectangle _tmp24_; GtkAllocation _tmp25_; const gchar* _tmp26_; _tmp24_ = self->priv->m_cursor_location; _tmp25_ = allocation; y = _tmp24_.y - _tmp25_.height; _tmp26_ = self->priv->m_input_context_path; if (g_strcmp0 (_tmp26_, "") == 0) { changed = self->priv->m_is_up_side_down == FALSE; self->priv->m_is_up_side_down = TRUE; } else { changed = self->priv->m_is_up_side_down == TRUE; self->priv->m_is_up_side_down = FALSE; } } else { GdkPoint _tmp27_; _tmp27_ = cursor_right_bottom; y = _tmp27_.y; changed = self->priv->m_is_up_side_down == TRUE; self->priv->m_is_up_side_down = FALSE; } } if (y < 0) { y = 0; } gtk_window_move ((GtkWindow*) self, x, y); if (changed) { if (self->priv->m_redraw_window_id > ((guint) 0)) { g_source_remove (self->priv->m_redraw_window_id); } self->priv->m_redraw_window_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ____lambda14__gsource_func, g_object_ref (self), g_object_unref); } } static void ibus_emojier_check_action_variant_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter) { GVariant* _tmp0_; GVariant* _tmp1_; GVariant* _tmp2_; GVariant* _tmp3_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = g_action_get_state ((GAction*) action); _tmp1_ = _tmp0_; ibus_emojier_m_show_emoji_variant = !g_variant_get_boolean (_tmp1_); _g_variant_unref0 (_tmp1_); _tmp2_ = g_variant_new_boolean (ibus_emojier_m_show_emoji_variant); g_variant_ref_sink (_tmp2_); _tmp3_ = _tmp2_; g_simple_action_set_state (action, _tmp3_); _g_variant_unref0 (_tmp3_); if (self->priv->m_candidate_panel_is_visible) { gtk_widget_queue_draw ((GtkWidget*) self); } } static void ibus_emojier_action_close_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter) { g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); g_signal_emit (self, ibus_emojier_signals[IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL], 0, (guint) 0, IBUS_EMOJIER_BUTTON_CLOSE_BUTTON, (guint) 0); } void ibus_emojier_update_favorite_emoji_dict (void) { gboolean _tmp0_ = FALSE; GHashTable* _tmp1_; _tmp1_ = ibus_emojier_m_emoji_to_data_dict; if (_tmp1_ == NULL) { _tmp0_ = TRUE; } else { GHashTable* _tmp2_; _tmp2_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp0_ = _tmp2_ == NULL; } if (_tmp0_) { return; } { gint i = 0; i = 0; { gboolean _tmp3_ = FALSE; _tmp3_ = TRUE; while (TRUE) { gchar** _tmp5_; gint _tmp5__length1; gchar* favorite = NULL; gchar** _tmp6_; gint _tmp6__length1; const gchar* _tmp7_; gchar* _tmp8_; gchar* annotation = NULL; gchar* _tmp9_; gchar** _tmp10_; gint _tmp10__length1; const gchar* _tmp14_; IBusEmojiData* data = NULL; GHashTable* _tmp15_; const gchar* _tmp16_; gconstpointer _tmp17_; IBusEmojiData* _tmp18_; GSList* emojis = NULL; GHashTable* _tmp49_; const gchar* _tmp50_; gconstpointer _tmp51_; GSList* _tmp52_; const gchar* _tmp53_; GCompareFunc _tmp54_; GSList* _tmp55_; if (!_tmp3_) { gint _tmp4_; _tmp4_ = i; i = _tmp4_ + 1; } _tmp3_ = FALSE; _tmp5_ = ibus_emojier_m_favorites; _tmp5__length1 = ibus_emojier_m_favorites_length1; if (!(i < _tmp5__length1)) { break; } _tmp6_ = ibus_emojier_m_favorites; _tmp6__length1 = ibus_emojier_m_favorites_length1; _tmp7_ = _tmp6_[i]; _tmp8_ = g_strdup (_tmp7_); favorite = _tmp8_; _tmp9_ = g_strdup (""); annotation = _tmp9_; _tmp10_ = ibus_emojier_m_favorite_annotations; _tmp10__length1 = ibus_emojier_m_favorite_annotations_length1; if (i < _tmp10__length1) { gchar** _tmp11_; gint _tmp11__length1; const gchar* _tmp12_; gchar* _tmp13_; _tmp11_ = ibus_emojier_m_favorite_annotations; _tmp11__length1 = ibus_emojier_m_favorite_annotations_length1; _tmp12_ = _tmp11_[i]; _tmp13_ = g_strdup (_tmp12_); _g_free0 (annotation); annotation = _tmp13_; } _tmp14_ = annotation; if (g_strcmp0 (_tmp14_, "") == 0) { _g_free0 (annotation); _g_free0 (favorite); continue; } _tmp15_ = ibus_emojier_m_emoji_to_data_dict; _tmp16_ = favorite; _tmp17_ = g_hash_table_lookup (_tmp15_, _tmp16_); data = (IBusEmojiData*) _tmp17_; _tmp18_ = data; if (_tmp18_ == NULL) { GSList* new_annotations = NULL; const gchar* _tmp19_; gchar* _tmp20_; IBusEmojiData* new_data = NULL; const gchar* _tmp21_; gchar* _tmp22_; gchar* _tmp23_; GSList* _tmp24_; const gchar* _tmp25_; gchar* _tmp26_; gchar* _tmp27_; GObject* _tmp28_; GObject* _tmp29_; IBusEmojiData* _tmp30_; IBusEmojiData* _tmp31_; GHashTable* _tmp32_; const gchar* _tmp33_; gchar* _tmp34_; IBusEmojiData* _tmp35_; IBusEmojiData* _tmp36_; new_annotations = NULL; _tmp19_ = annotation; _tmp20_ = g_strdup (_tmp19_); new_annotations = g_slist_append (new_annotations, _tmp20_); _tmp21_ = favorite; _tmp22_ = g_strdup (_tmp21_); _tmp23_ = _tmp22_; _tmp24_ = new_annotations; _tmp25_ = annotation; _tmp26_ = g_strdup (_tmp25_); _tmp27_ = _tmp26_; _tmp28_ = g_object_new (ibus_emoji_data_get_type (), "emoji", _tmp23_, "annotations", _tmp24_, "description", _tmp27_, NULL); _tmp29_ = G_IS_INITIALLY_UNOWNED (_tmp28_) ? g_object_ref_sink (_tmp28_) : _tmp28_; _tmp30_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, ibus_emoji_data_get_type ()) ? ((IBusEmojiData*) _tmp29_) : NULL; if (_tmp30_ == NULL) { _g_object_unref0 (_tmp29_); } _tmp31_ = _tmp30_; _g_free0 (_tmp27_); _g_free0 (_tmp23_); new_data = _tmp31_; _tmp32_ = ibus_emojier_m_emoji_to_data_dict; _tmp33_ = favorite; _tmp34_ = g_strdup (_tmp33_); _tmp35_ = new_data; _tmp36_ = _g_object_ref0 (_tmp35_); g_hash_table_insert (_tmp32_, _tmp34_, _tmp36_); _g_object_unref0 (new_data); (new_annotations == NULL) ? NULL : (new_annotations = (_g_slist_free__g_free0_ (new_annotations), NULL)); } else { GSList* annotations = NULL; IBusEmojiData* _tmp37_; GSList* _tmp38_; GSList* _tmp39_; GSList* _tmp40_; const gchar* _tmp41_; GCompareFunc _tmp42_; GSList* _tmp43_; _tmp37_ = data; _tmp38_ = ibus_emoji_data_get_annotations (_tmp37_); _tmp39_ = g_slist_copy_deep (_tmp38_, _g_strdup_gcopy_func, NULL); annotations = _tmp39_; _tmp40_ = annotations; _tmp41_ = annotation; _tmp42_ = ((GCompareFunc) g_strcmp0); _tmp43_ = g_slist_find_custom (_tmp40_, _tmp41_, _tmp42_); if (_tmp43_ == NULL) { const gchar* _tmp44_; gchar* _tmp45_; IBusEmojiData* _tmp46_; GSList* _tmp47_; GSList* _tmp48_; _tmp44_ = annotation; _tmp45_ = g_strdup (_tmp44_); annotations = g_slist_append (annotations, _tmp45_); _tmp46_ = data; _tmp47_ = annotations; _tmp48_ = g_slist_copy_deep (_tmp47_, _g_strdup_gcopy_func, NULL); ibus_emoji_data_set_annotations (_tmp46_, _tmp48_); } (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); } _tmp49_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp50_ = annotation; _tmp51_ = g_hash_table_lookup (_tmp49_, _tmp50_); emojis = (GSList*) _tmp51_; _tmp52_ = emojis; _tmp53_ = favorite; _tmp54_ = ((GCompareFunc) g_strcmp0); _tmp55_ = g_slist_find_custom (_tmp52_, _tmp53_, _tmp54_); if (_tmp55_ == NULL) { const gchar* _tmp56_; gchar* _tmp57_; GHashTable* _tmp58_; const gchar* _tmp59_; gchar* _tmp60_; GSList* _tmp61_; GSList* _tmp62_; _tmp56_ = favorite; _tmp57_ = g_strdup (_tmp56_); emojis = g_slist_append (emojis, _tmp57_); _tmp58_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp59_ = annotation; _tmp60_ = g_strdup (_tmp59_); _tmp61_ = emojis; _tmp62_ = g_slist_copy_deep (_tmp61_, _g_strdup_gcopy_func, NULL); g_hash_table_replace (_tmp58_, _tmp60_, _tmp62_); } _g_free0 (annotation); _g_free0 (favorite); } } } } void ibus_emojier_set_annotation (IBusEmojier* self, const gchar* annotation) { gchar* _tmp0_; gint _tmp1_; gint _tmp2_; g_return_if_fail (self != NULL); g_return_if_fail (annotation != NULL); _tmp0_ = g_strdup (annotation); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp0_; ibus_emojier_remove_all_children (self); _tmp1_ = strlen (annotation); _tmp2_ = _tmp1_; if (_tmp2_ > 0) { ibus_emojier_update_candidate_window (self); } else { if (ibus_emojier_m_show_unicode) { ibus_emojier_update_unicode_blocks (self); } else { ibus_emojier_update_category_list (self); } } } IBusLookupTable* ibus_emojier_get_one_dimension_lookup_table (IBusEmojier* self) { IBusLookupTable* lookup_table = NULL; IBusLookupTable* _tmp0_; guint i = 0U; IBusLookupTable* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = ibus_lookup_table_new (IBUS_EMOJIER_EMOJI_GRID_PAGE, (guint) 0, TRUE, TRUE); g_object_ref_sink (_tmp0_); lookup_table = _tmp0_; i = (guint) 0; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { IBusLookupTable* _tmp3_; IBusText* text = NULL; IBusText* _tmp4_; IBusText* _tmp5_; IBusLookupTable* _tmp6_; IBusText* _tmp7_; IBusLookupTable* _tmp8_; IBusText* _tmp9_; if (!_tmp1_) { guint _tmp2_; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; _tmp3_ = self->priv->m_lookup_table; if (!(i < ibus_lookup_table_get_number_of_candidates (_tmp3_))) { break; } _tmp4_ = ibus_text_new_from_string (""); g_object_ref_sink (_tmp4_); text = _tmp4_; _tmp5_ = text; _tmp6_ = self->priv->m_lookup_table; _tmp7_ = ibus_lookup_table_get_candidate (_tmp6_, i); IBUS_SERIALIZABLE_GET_CLASS ((IBusSerializable*) _tmp5_)->copy ((IBusSerializable*) _tmp5_, (IBusSerializable*) _tmp7_); _tmp8_ = lookup_table; _tmp9_ = text; ibus_lookup_table_append_candidate (_tmp8_, _tmp9_); _g_object_unref0 (text); } } if (i > ((guint) 0)) { IBusLookupTable* _tmp10_; IBusLookupTable* _tmp11_; _tmp10_ = lookup_table; _tmp11_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp10_, ibus_lookup_table_get_cursor_pos (_tmp11_)); } result = lookup_table; return result; } guint ibus_emojier_get_number_of_candidates (IBusEmojier* self) { IBusLookupTable* _tmp0_; guint result = 0U; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = self->priv->m_lookup_table; result = ibus_lookup_table_get_number_of_candidates (_tmp0_); return result; } guint ibus_emojier_get_cursor_pos (IBusEmojier* self) { IBusLookupTable* _tmp0_; guint result = 0U; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = self->priv->m_lookup_table; result = ibus_lookup_table_get_cursor_pos (_tmp0_); return result; } void ibus_emojier_set_cursor_pos (IBusEmojier* self, guint cursor_pos) { IBusLookupTable* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp0_, cursor_pos); } gchar* ibus_emojier_get_current_candidate (IBusEmojier* self) { guint cursor = 0U; IBusLookupTable* _tmp1_; IBusLookupTable* _tmp2_; IBusText* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); if (!self->priv->m_candidate_panel_mode) { gchar* _tmp0_; _tmp0_ = g_strdup (""); result = _tmp0_; return result; } _tmp1_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp1_); _tmp2_ = self->priv->m_lookup_table; _tmp3_ = ibus_lookup_table_get_candidate (_tmp2_, cursor); _tmp4_ = _tmp3_->text; _tmp5_ = g_strdup (_tmp4_); result = _tmp5_; return result; } IBusText* ibus_emojier_get_title_text (IBusEmojier* self) { gchar* language = NULL; const gchar* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; gchar* _tmp4_; guint ncandidates = 0U; gchar* main_title = NULL; gchar* _tmp5_; IBusText* text = NULL; const gchar* _tmp7_; const gchar* _tmp8_; gchar* _tmp9_; gchar* _tmp10_; IBusText* _tmp11_; IBusText* _tmp12_; gint char_count = 0; IBusText* _tmp13_; const gchar* _tmp14_; gint start_index = 0; const gchar* title = NULL; IBusText* _tmp15_; const gchar* _tmp16_; IBusText* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = ibus_emojier_m_current_lang_id; _tmp1_ = ibus_get_language_name (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = g_strdup (_ (_tmp2_)); _tmp4_ = _tmp3_; _g_free0 (_tmp2_); language = _tmp4_; ncandidates = ibus_emojier_get_number_of_candidates (self); _tmp5_ = g_strdup (_ ("Emoji Choice")); main_title = _tmp5_; if (ibus_emojier_m_show_unicode) { gchar* _tmp6_; _tmp6_ = g_strdup (_ ("Unicode Choice")); _g_free0 (main_title); main_title = _tmp6_; } _tmp7_ = main_title; _tmp8_ = language; _tmp9_ = g_strdup_printf ("%s (%s) (%u / %u)", _tmp7_, _tmp8_, ibus_emojier_get_cursor_pos (self) + 1, ncandidates); _tmp10_ = _tmp9_; _tmp11_ = ibus_text_new_from_string (_tmp10_); g_object_ref_sink (_tmp11_); _tmp12_ = _tmp11_; _g_free0 (_tmp10_); text = _tmp12_; _tmp13_ = text; _tmp14_ = _tmp13_->text; char_count = g_utf8_strlen (_tmp14_, (gssize) -1); start_index = -1; _tmp15_ = text; _tmp16_ = _tmp15_->text; title = _tmp16_; { gint i = 0; i = 0; { gboolean _tmp17_ = FALSE; _tmp17_ = TRUE; while (TRUE) { const gchar* _tmp19_; const gchar* _tmp20_; const gchar* _tmp21_; const gchar* _tmp22_; if (!_tmp17_) { gint _tmp18_; _tmp18_ = i; i = _tmp18_ + 1; } _tmp17_ = FALSE; if (!(i < char_count)) { break; } _tmp19_ = title; _tmp20_ = language; if (g_str_has_prefix (_tmp19_, _tmp20_)) { start_index = i; break; } _tmp21_ = title; _tmp22_ = g_utf8_next_char (_tmp21_); title = _tmp22_; } } } if (start_index >= 0) { IBusAttribute* attr = NULL; const gchar* _tmp23_; IBusAttribute* _tmp24_; IBusAttrList* attrs = NULL; IBusAttrList* _tmp25_; IBusAttrList* _tmp26_; IBusAttribute* _tmp27_; IBusText* _tmp28_; IBusAttrList* _tmp29_; _tmp23_ = language; _tmp24_ = ibus_attribute_new ((guint) IBUS_ATTR_TYPE_FOREGROUND, (guint) 0x808080, (guint) start_index, (guint) (start_index + g_utf8_strlen (_tmp23_, (gssize) -1))); g_object_ref_sink (_tmp24_); attr = _tmp24_; _tmp25_ = ibus_attr_list_new (); g_object_ref_sink (_tmp25_); attrs = _tmp25_; _tmp26_ = attrs; _tmp27_ = attr; ibus_attr_list_append (_tmp26_, _tmp27_); _tmp28_ = text; _tmp29_ = attrs; ibus_text_set_attributes (_tmp28_, _tmp29_); _g_object_unref0 (attrs); _g_object_unref0 (attr); } result = text; _g_free0 (main_title); _g_free0 (language); return result; } static void ibus_emojier_real_show_all (GtkWidget* base) { IBusEmojier * self; self = (IBusEmojier*) base; GTK_WIDGET_CLASS (ibus_emojier_parent_class)->show_all ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_application_window_get_type (), GtkApplicationWindow)); if (self->priv->m_candidate_panel_mode) { ibus_emojier_show_candidate_panel (self); } else { if (ibus_emojier_m_show_unicode) { ibus_emojier_show_unicode_blocks (self); } else { ibus_emojier_show_category_list (self); } } } static void ibus_emojier_real_hide (GtkWidget* base) { IBusEmojier * self; self = (IBusEmojier*) base; GTK_WIDGET_CLASS (ibus_emojier_parent_class)->hide ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_application_window_get_type (), GtkApplicationWindow)); self->priv->m_candidate_panel_is_visible = FALSE; if (self->priv->m_redraw_window_id > ((guint) 0)) { g_source_remove (self->priv->m_redraw_window_id); self->priv->m_redraw_window_id = (guint) 0; } if (self->priv->m_unicode_progress_id > ((guint) 0)) { g_source_remove (self->priv->m_unicode_progress_id); self->priv->m_unicode_progress_id = (guint) 0; } } static gboolean ibus_emojier_real_key_press_event (GtkWidget* base, GdkEventKey* event) { IBusEmojier * self; guint keyval = 0U; guint modifiers = 0U; GdkModifierType _tmp0_; gboolean result = FALSE; self = (IBusEmojier*) base; g_return_val_if_fail (event != NULL, FALSE); keyval = event->keyval; _tmp0_ = event->state; modifiers = (guint) _tmp0_; switch (keyval) { case GDK_KEY_Escape: { if (ibus_emojier_key_press_escape (self)) { gtk_widget_show_all ((GtkWidget*) self); } result = TRUE; return result; } case GDK_KEY_Return: case GDK_KEY_KP_Enter: { if (ibus_emojier_key_press_enter (self, TRUE)) { gtk_widget_show_all ((GtkWidget*) self); } else { gtk_widget_hide ((GtkWidget*) self); } result = TRUE; return result; } case GDK_KEY_space: case GDK_KEY_KP_Space: { if (self->priv->m_candidate_panel_is_visible) { IBusLookupTable* _tmp1_; ibus_emojier_enter_notify_disable_with_timer (self); _tmp1_ = self->priv->m_lookup_table; ibus_lookup_table_cursor_down (_tmp1_); ibus_emojier_show_candidate_panel (self); } else { ibus_emojier_category_list_cursor_move (self, GDK_KEY_Down); gtk_widget_show_all ((GtkWidget*) self); } result = TRUE; return result; } case GDK_KEY_Right: case GDK_KEY_KP_Right: { ibus_emojier_key_press_cursor_horizontal (self, GDK_KEY_Right, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Left: case GDK_KEY_KP_Left: { ibus_emojier_key_press_cursor_horizontal (self, GDK_KEY_Left, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Down: case GDK_KEY_KP_Down: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Down, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Up: case GDK_KEY_KP_Up: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Up, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Page_Down: case GDK_KEY_KP_Page_Down: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Page_Down, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Page_Up: case GDK_KEY_KP_Page_Up: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Page_Up, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Home: case GDK_KEY_KP_Home: { ibus_emojier_key_press_cursor_home_end (self, GDK_KEY_Home, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_End: case GDK_KEY_KP_End: { ibus_emojier_key_press_cursor_home_end (self, GDK_KEY_End, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } default: break; } if ((modifiers & GDK_CONTROL_MASK) != ((guint) 0)) { switch (keyval) { case GDK_KEY_f: { ibus_emojier_key_press_cursor_horizontal (self, GDK_KEY_Right, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_b: { ibus_emojier_key_press_cursor_horizontal (self, GDK_KEY_Left, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_n: case GDK_KEY_N: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Down, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_p: case GDK_KEY_P: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Up, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_h: { ibus_emojier_key_press_cursor_home_end (self, GDK_KEY_Home, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_e: { ibus_emojier_key_press_cursor_home_end (self, GDK_KEY_End, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_C: case GDK_KEY_c: { if ((modifiers & GDK_SHIFT_MASK) != ((guint) 0)) { if (self->priv->m_candidate_panel_is_visible) { guint index = 0U; IBusLookupTable* _tmp2_; gchar* text = NULL; IBusLookupTable* _tmp3_; IBusText* _tmp4_; const gchar* _tmp5_; gchar* _tmp6_; GtkClipboard* clipboard = NULL; GtkClipboard* _tmp7_; GtkClipboard* _tmp8_; GtkClipboard* _tmp9_; const gchar* _tmp10_; GtkClipboard* _tmp11_; _tmp2_ = self->priv->m_lookup_table; index = ibus_lookup_table_get_cursor_pos (_tmp2_); _tmp3_ = self->priv->m_lookup_table; _tmp4_ = ibus_lookup_table_get_candidate (_tmp3_, index); _tmp5_ = _tmp4_->text; _tmp6_ = g_strdup (_tmp5_); text = _tmp6_; _tmp7_ = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); _tmp8_ = _g_object_ref0 (_tmp7_); clipboard = _tmp8_; _tmp9_ = clipboard; _tmp10_ = text; gtk_clipboard_set_text (_tmp9_, _tmp10_, -1); _tmp11_ = clipboard; gtk_clipboard_store (_tmp11_); result = TRUE; _g_object_unref0 (clipboard); _g_free0 (text); return result; } } break; } default: break; } result = FALSE; return result; } result = TRUE; return result; } gboolean ibus_emojier_is_running (IBusEmojier* self) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); result = self->priv->m_is_running; return result; } gchar* ibus_emojier_get_input_context_path (IBusEmojier* self) { const gchar* _tmp0_; gchar* _tmp1_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_input_context_path; _tmp1_ = g_strdup (_tmp0_); result = _tmp1_; return result; } void ibus_emojier_set_input_context_path (IBusEmojier* self, const gchar* input_context_path) { gchar* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (input_context_path != NULL); _tmp0_ = g_strdup (input_context_path); _g_free0 (self->priv->m_input_context_path); self->priv->m_input_context_path = _tmp0_; if (g_strcmp0 (input_context_path, "") == 0) { gchar* _tmp1_; _tmp1_ = g_strdup (_ ("" "Failed to get the current text application. " "Please re-focus your application. E.g. Press Esc key " "several times to release the emoji typing mode, " "click your desktop and click your text application again.")); _g_free0 (ibus_emojier_m_warning_message); ibus_emojier_m_warning_message = _tmp1_; } else { gchar* _tmp2_; _tmp2_ = g_strdup (""); _g_free0 (ibus_emojier_m_warning_message); ibus_emojier_m_warning_message = _tmp2_; } } gchar* ibus_emojier_get_selected_string (IBusEmojier* self) { const gchar* _tmp0_; gchar* _tmp1_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_result; _tmp1_ = g_strdup (_tmp0_); result = _tmp1_; return result; } static void ibus_emojier_reset_window_mode (IBusEmojier* self) { g_return_if_fail (self != NULL); self->priv->m_backward_index = -1; _g_free0 (self->priv->m_backward); self->priv->m_backward = NULL; self->priv->m_candidate_panel_is_visible = FALSE; self->priv->m_candidate_panel_mode = FALSE; } void ibus_emojier_reset (IBusEmojier* self) { gchar* _tmp0_; g_return_if_fail (self != NULL); ibus_emojier_reset_window_mode (self); _tmp0_ = g_strdup (""); _g_free0 (self->priv->m_input_context_path); self->priv->m_input_context_path = _tmp0_; _g_free0 (self->priv->m_result); self->priv->m_result = NULL; self->priv->m_category_active_index = -1; ibus_emojier_m_show_unicode = FALSE; } void ibus_emojier_present_centralize (IBusEmojier* self, GdkEvent* event) { GtkAllocation allocation = {0}; GtkAllocation _tmp0_ = {0}; GdkRectangle monitor_area = {0}; GdkRectangle work_area = {0}; GdkDisplay* display = NULL; GdkDisplay* _tmp1_; GdkDisplay* _tmp2_; GdkMonitor* monitor = NULL; GdkDisplay* _tmp3_; GdkWindow* _tmp4_; GdkMonitor* _tmp5_; GdkMonitor* _tmp6_; GdkMonitor* _tmp7_; GdkRectangle _tmp8_ = {0}; GdkMonitor* _tmp9_; GdkRectangle _tmp10_ = {0}; gint x = 0; GdkRectangle _tmp11_; GdkRectangle _tmp12_; GtkAllocation _tmp13_; gint y = 0; GdkRectangle _tmp14_; GdkRectangle _tmp15_; GtkAllocation _tmp16_; GdkRectangle _tmp17_; guint32 timestamp = 0U; g_return_if_fail (self != NULL); g_return_if_fail (event != NULL); gtk_widget_get_allocation ((GtkWidget*) self, &_tmp0_); allocation = _tmp0_; _tmp1_ = gdk_display_get_default (); _tmp2_ = _g_object_ref0 (_tmp1_); display = _tmp2_; _tmp3_ = display; _tmp4_ = gtk_widget_get_window ((GtkWidget*) self); _tmp5_ = gdk_display_get_monitor_at_window (_tmp3_, _tmp4_); _tmp6_ = _g_object_ref0 (_tmp5_); monitor = _tmp6_; _tmp7_ = monitor; gdk_monitor_get_geometry (_tmp7_, &_tmp8_); monitor_area = _tmp8_; _tmp9_ = monitor; gdk_monitor_get_workarea (_tmp9_, &_tmp10_); work_area = _tmp10_; _tmp11_ = monitor_area; _tmp12_ = monitor_area; _tmp13_ = allocation; x = ((_tmp11_.x + _tmp12_.width) - _tmp13_.width) / 2; _tmp14_ = monitor_area; _tmp15_ = monitor_area; _tmp16_ = allocation; y = ((_tmp14_.y + _tmp15_.height) - _tmp16_.height) / 2; _tmp17_ = work_area; if (_tmp17_.y < y) { GdkRectangle _tmp18_; _tmp18_ = work_area; y = _tmp18_.y; } gtk_window_move ((GtkWindow*) self, x, y); timestamp = gdk_event_get_time (event); gtk_window_present_with_time ((GtkWindow*) self, timestamp); _g_object_unref0 (monitor); _g_object_unref0 (display); } 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 ibus_emojier_set_cursor_location (IBusEmojier* self, gint x, gint y, gint width, gint height) { GdkRectangle location = {0}; GdkRectangle _tmp0_ = {0}; GdkRectangle _tmp1_; GdkRectangle _tmp2_; GdkRectangle _tmp3_; g_return_if_fail (self != NULL); memset (&_tmp0_, 0, sizeof (GdkRectangle)); _tmp0_.x = x; _tmp0_.y = y; _tmp0_.width = width; _tmp0_.height = height; location = _tmp0_; _tmp1_ = self->priv->m_cursor_location; _tmp2_ = location; if (_cairo_rectangle_int_equal (&_tmp1_, &_tmp2_) == TRUE) { return; } _tmp3_ = location; self->priv->m_cursor_location = _tmp3_; } gboolean ibus_emojier_is_candidate_panel_mode (IBusEmojier* self) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); result = self->priv->m_candidate_panel_mode; return result; } gboolean ibus_emojier_has_loaded_emoji_dict (void) { GHashTable* _tmp0_; GList* keys = NULL; GHashTable* _tmp1_; GList* _tmp2_; GList* _tmp3_; gboolean result = FALSE; _tmp0_ = ibus_emojier_m_emoji_to_data_dict; if (_tmp0_ == NULL) { result = FALSE; return result; } _tmp1_ = ibus_emojier_m_emoji_to_data_dict; _tmp2_ = g_hash_table_get_keys (_tmp1_); keys = _tmp2_; _tmp3_ = keys; if (g_list_length (_tmp3_) == ((guint) 0)) { result = FALSE; (keys == NULL) ? NULL : (keys = (g_list_free (keys), NULL)); return result; } result = TRUE; (keys == NULL) ? NULL : (keys = (g_list_free (keys), NULL)); return result; } void ibus_emojier_set_annotation_lang (const gchar* lang) { gboolean _tmp0_ = FALSE; const gchar* _tmp1_; gchar* _tmp2_; if (lang == NULL) { _tmp0_ = TRUE; } else { _tmp0_ = g_strcmp0 (lang, "") == 0; } if (_tmp0_) { lang = "en"; } _tmp1_ = ibus_emojier_m_current_lang_id; if (g_strcmp0 (_tmp1_, lang) == 0) { return; } _tmp2_ = g_strdup (lang); _g_free0 (ibus_emojier_m_current_lang_id); ibus_emojier_m_current_lang_id = _tmp2_; ibus_emojier_reload_emoji_dict (); } gchar* ibus_emojier_get_annotation_lang (void) { const gchar* _tmp0_; gchar* _tmp1_; gchar* result = NULL; _tmp0_ = ibus_emojier_m_current_lang_id; _tmp1_ = g_strdup (_tmp0_); result = _tmp1_; return result; } static void _vala_PangoFontDescription_free (PangoFontDescription* self) { g_boxed_free (pango_font_description_get_type (), self); } void ibus_emojier_set_emoji_font (const gchar* emoji_font) { gboolean _tmp0_ = FALSE; PangoFontDescription* font_desc = NULL; PangoFontDescription* _tmp1_; gchar* font_family = NULL; PangoFontDescription* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; const gchar* _tmp5_; gint font_size = 0; PangoFontDescription* _tmp8_; if (emoji_font != NULL) { _tmp0_ = g_strcmp0 (emoji_font, "") != 0; } else { _tmp0_ = FALSE; } g_return_if_fail (_tmp0_); _tmp1_ = pango_font_description_from_string (emoji_font); font_desc = _tmp1_; _tmp2_ = font_desc; _tmp3_ = pango_font_description_get_family (_tmp2_); _tmp4_ = g_strdup (_tmp3_); font_family = _tmp4_; _tmp5_ = font_family; if (_tmp5_ != NULL) { const gchar* _tmp6_; gchar* _tmp7_; _tmp6_ = font_family; _tmp7_ = g_strdup (_tmp6_); _g_free0 (ibus_emojier_m_emoji_font_family); ibus_emojier_m_emoji_font_family = _tmp7_; ibus_emojier_m_emoji_font_changed = TRUE; } _tmp8_ = font_desc; font_size = pango_font_description_get_size (_tmp8_) / PANGO_SCALE; if (font_size != 0) { ibus_emojier_m_emoji_font_size = font_size; ibus_emojier_m_emoji_font_changed = TRUE; } _g_free0 (font_family); __vala_PangoFontDescription_free0 (font_desc); } void ibus_emojier_set_partial_match (gboolean has_partial_match) { ibus_emojier_m_has_partial_match = has_partial_match; } void ibus_emojier_set_partial_match_length (gint length) { if (length < 1) { return; } ibus_emojier_m_partial_match_length = (guint) length; } void ibus_emojier_set_partial_match_condition (gint condition) { if (condition < 0) { return; } ibus_emojier_m_partial_match_condition = (guint) condition; } static void _vala_array_add9 (gchar** * array, gint* length, gint* 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_add10 (gchar** * array, gint* length, gint* 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 ibus_emojier_set_favorites (gchar** unowned_favorites, gint unowned_favorites_length1, gchar** unowned_favorite_annotations, gint unowned_favorite_annotations_length1) { gchar** _tmp0_; gchar** _tmp1_; _tmp0_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorites = (_vala_array_free (ibus_emojier_m_favorites, ibus_emojier_m_favorites_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorites = _tmp0_; ibus_emojier_m_favorites_length1 = 0; _ibus_emojier_m_favorites_size_ = ibus_emojier_m_favorites_length1; _tmp1_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorite_annotations = (_vala_array_free (ibus_emojier_m_favorite_annotations, ibus_emojier_m_favorite_annotations_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorite_annotations = _tmp1_; ibus_emojier_m_favorite_annotations_length1 = 0; _ibus_emojier_m_favorite_annotations_size_ = ibus_emojier_m_favorite_annotations_length1; { gint i = 0; i = 0; { gboolean _tmp2_ = FALSE; _tmp2_ = TRUE; while (TRUE) { gchar* favorite = NULL; const gchar* _tmp4_; gchar* _tmp5_; const gchar* _tmp6_; gchar** _tmp7_; gint _tmp7__length1; const gchar* _tmp8_; gchar* _tmp9_; if (!_tmp2_) { gint _tmp3_; _tmp3_ = i; i = _tmp3_ + 1; } _tmp2_ = FALSE; if (!(i < unowned_favorites_length1)) { break; } _tmp4_ = unowned_favorites[i]; _tmp5_ = g_strdup (_tmp4_); favorite = _tmp5_; _tmp6_ = favorite; g_return_if_fail (_tmp6_ != NULL); _tmp7_ = ibus_emojier_m_favorites; _tmp7__length1 = ibus_emojier_m_favorites_length1; _tmp8_ = favorite; _tmp9_ = g_strdup (_tmp8_); _vala_array_add9 (&ibus_emojier_m_favorites, &ibus_emojier_m_favorites_length1, &_ibus_emojier_m_favorites_size_, _tmp9_); _g_free0 (favorite); } } } { gint i = 0; i = 0; { gboolean _tmp10_ = FALSE; _tmp10_ = TRUE; while (TRUE) { gchar* favorite_annotation = NULL; const gchar* _tmp12_; gchar* _tmp13_; const gchar* _tmp14_; gchar** _tmp15_; gint _tmp15__length1; const gchar* _tmp16_; gchar* _tmp17_; if (!_tmp10_) { gint _tmp11_; _tmp11_ = i; i = _tmp11_ + 1; } _tmp10_ = FALSE; if (!(i < unowned_favorite_annotations_length1)) { break; } _tmp12_ = unowned_favorite_annotations[i]; _tmp13_ = g_strdup (_tmp12_); favorite_annotation = _tmp13_; _tmp14_ = favorite_annotation; g_return_if_fail (_tmp14_ != NULL); _tmp15_ = ibus_emojier_m_favorite_annotations; _tmp15__length1 = ibus_emojier_m_favorite_annotations_length1; _tmp16_ = favorite_annotation; _tmp17_ = g_strdup (_tmp16_); _vala_array_add10 (&ibus_emojier_m_favorite_annotations, &ibus_emojier_m_favorite_annotations_length1, &_ibus_emojier_m_favorite_annotations_size_, _tmp17_); _g_free0 (favorite_annotation); } } } ibus_emojier_update_favorite_emoji_dict (); } static GObject* ibus_emojier_get_load_progress_object (void) { IBusEmojierLoadProgressObject* _tmp0_; IBusEmojierLoadProgressObject* _tmp2_; GObject* _tmp3_; GObject* result = NULL; _tmp0_ = ibus_emojier_m_unicode_progress_object; if (_tmp0_ == NULL) { IBusEmojierLoadProgressObject* _tmp1_; _tmp1_ = ibus_emojier_load_progress_object_new (); _g_object_unref0 (ibus_emojier_m_unicode_progress_object); ibus_emojier_m_unicode_progress_object = _tmp1_; } _tmp2_ = ibus_emojier_m_unicode_progress_object; _tmp3_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, G_TYPE_OBJECT) ? ((GObject*) _tmp2_) : NULL); result = _tmp3_; return result; } void ibus_emojier_load_unicode_dict (void) { GSList* _tmp0_; GHashTable* _tmp1_; _tmp0_ = ibus_emojier_m_unicode_block_list; if (g_slist_length (_tmp0_) == ((guint) 0)) { ibus_emojier_make_unicode_block_dict (); } _tmp1_ = ibus_emojier_m_name_to_unicodes_dict; if (g_hash_table_size (_tmp1_) == ((guint) 0)) { GObject* _tmp2_; GObject* _tmp3_; _tmp2_ = ibus_emojier_get_load_progress_object (); _tmp3_ = _tmp2_; ibus_emojier_make_unicode_name_dict (_tmp3_); _g_object_unref0 (_tmp3_); } } 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 gboolean __lambda10_ (IBusEmojierEListBox* self, GdkEventMotion* e) { GdkEventMotion* pe = NULL; GdkEventMotion* _tmp0_; gboolean _tmp1_ = FALSE; GdkEventMotion* _tmp2_; GdkEventMotion* _tmp4_; GdkEventMotion* _tmp5_; GtkListBoxRow* row = NULL; GtkListBoxRow* _tmp6_; GtkListBoxRow* _tmp7_; GtkListBoxRow* _tmp8_; gboolean result = FALSE; g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = __vala_GdkEventMotion_copy0 (e); pe = _tmp0_; _tmp2_ = pe; if (ibus_emojier_m_mouse_x == _tmp2_->x_root) { GdkEventMotion* _tmp3_; _tmp3_ = pe; _tmp1_ = ibus_emojier_m_mouse_y == _tmp3_->y_root; } else { _tmp1_ = FALSE; } if (_tmp1_) { result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } _tmp4_ = pe; ibus_emojier_m_mouse_x = _tmp4_->x_root; _tmp5_ = pe; ibus_emojier_m_mouse_y = _tmp5_->y_root; _tmp6_ = gtk_list_box_get_row_at_y ((GtkListBox*) self, (gint) e->y); _tmp7_ = _g_object_ref0 (_tmp6_); row = _tmp7_; _tmp8_ = row; if (_tmp8_ != NULL) { GtkListBoxRow* _tmp9_; _tmp9_ = row; gtk_list_box_select_row ((GtkListBox*) self, _tmp9_); } result = FALSE; _g_object_unref0 (row); __vala_GdkEventMotion_free0 (pe); return result; } static gboolean ___lambda10__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self) { gboolean result; result = __lambda10_ ((IBusEmojierEListBox*) self, event); return result; } static gboolean __lambda11_ (IBusEmojierEListBox* self, GdkEventCrossing* e) { gboolean result = FALSE; g_return_val_if_fail (e != NULL, FALSE); result = TRUE; return result; } static gboolean ___lambda11__gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self) { gboolean result; result = __lambda11_ ((IBusEmojierEListBox*) self, event); return result; } static IBusEmojierEListBox* ibus_emojier_elist_box_construct (GType object_type) { IBusEmojierEListBox * self = NULL; self = (IBusEmojierEListBox*) g_object_new (object_type, "vexpand", TRUE, "halign", GTK_ALIGN_FILL, "valign", GTK_ALIGN_FILL, NULL); g_signal_connect_object ((GtkWidget*) self, "motion-notify-event", (GCallback) ___lambda10__gtk_widget_motion_notify_event, self, 0); g_signal_connect_object ((GtkWidget*) self, "enter-notify-event", (GCallback) ___lambda11__gtk_widget_enter_notify_event, self, 0); return self; } static IBusEmojierEListBox* ibus_emojier_elist_box_new (void) { return ibus_emojier_elist_box_construct (IBUS_EMOJIER_TYPE_ELIST_BOX); } static void ibus_emojier_elist_box_class_init (IBusEmojierEListBoxClass * klass, gpointer klass_data) { ibus_emojier_elist_box_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_elist_box_instance_init (IBusEmojierEListBox * self, gpointer klass) { } static GType ibus_emojier_elist_box_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEListBoxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_elist_box_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEListBox), 0, (GInstanceInitFunc) ibus_emojier_elist_box_instance_init, NULL }; GType ibus_emojier_elist_box_type_id; ibus_emojier_elist_box_type_id = g_type_register_static (gtk_list_box_get_type (), "IBusEmojierEListBox", &g_define_type_info, 0); return ibus_emojier_elist_box_type_id; } static GType ibus_emojier_elist_box_get_type (void) { static volatile gsize ibus_emojier_elist_box_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_elist_box_type_id__volatile)) { GType ibus_emojier_elist_box_type_id; ibus_emojier_elist_box_type_id = ibus_emojier_elist_box_get_type_once (); g_once_init_leave (&ibus_emojier_elist_box_type_id__volatile, ibus_emojier_elist_box_type_id); } return ibus_emojier_elist_box_type_id__volatile; } static inline gpointer ibus_emojier_ebox_row_get_instance_private (IBusEmojierEBoxRow* self) { return G_STRUCT_MEMBER_P (self, IBusEmojierEBoxRow_private_offset); } static IBusEmojierEBoxRow* ibus_emojier_ebox_row_construct (GType object_type, const gchar* text) { IBusEmojierEBoxRow * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEBoxRow*) g_object_new (object_type, NULL); ibus_emojier_ebox_row_set_text (self, text); return self; } static IBusEmojierEBoxRow* ibus_emojier_ebox_row_new (const gchar* text) { return ibus_emojier_ebox_row_construct (IBUS_EMOJIER_TYPE_EBOX_ROW, text); } static const gchar* ibus_emojier_ebox_row_get_text (IBusEmojierEBoxRow* self) { const gchar* result; const gchar* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_text; result = _tmp0_; return result; } static void ibus_emojier_ebox_row_set_text (IBusEmojierEBoxRow* self, const gchar* value) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, ibus_emojier_ebox_row_get_text (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_text); self->priv->_text = _tmp0_; g_object_notify_by_pspec ((GObject *) self, ibus_emojier_ebox_row_properties[IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY]); } } static void ibus_emojier_ebox_row_class_init (IBusEmojierEBoxRowClass * klass, gpointer klass_data) { ibus_emojier_ebox_row_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &IBusEmojierEBoxRow_private_offset); G_OBJECT_CLASS (klass)->get_property = _vala_ibus_emojier_ebox_row_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_ibus_emojier_ebox_row_set_property; G_OBJECT_CLASS (klass)->finalize = ibus_emojier_ebox_row_finalize; g_object_class_install_property (G_OBJECT_CLASS (klass), IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY, ibus_emojier_ebox_row_properties[IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY] = g_param_spec_string ("text", "text", "text", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void ibus_emojier_ebox_row_instance_init (IBusEmojierEBoxRow * self, gpointer klass) { self->priv = ibus_emojier_ebox_row_get_instance_private (self); } static void ibus_emojier_ebox_row_finalize (GObject * obj) { IBusEmojierEBoxRow * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow); _g_free0 (self->priv->_text); G_OBJECT_CLASS (ibus_emojier_ebox_row_parent_class)->finalize (obj); } static GType ibus_emojier_ebox_row_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEBoxRowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_ebox_row_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEBoxRow), 0, (GInstanceInitFunc) ibus_emojier_ebox_row_instance_init, NULL }; GType ibus_emojier_ebox_row_type_id; ibus_emojier_ebox_row_type_id = g_type_register_static (gtk_list_box_row_get_type (), "IBusEmojierEBoxRow", &g_define_type_info, 0); IBusEmojierEBoxRow_private_offset = g_type_add_instance_private (ibus_emojier_ebox_row_type_id, sizeof (IBusEmojierEBoxRowPrivate)); return ibus_emojier_ebox_row_type_id; } static GType ibus_emojier_ebox_row_get_type (void) { static volatile gsize ibus_emojier_ebox_row_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_ebox_row_type_id__volatile)) { GType ibus_emojier_ebox_row_type_id; ibus_emojier_ebox_row_type_id = ibus_emojier_ebox_row_get_type_once (); g_once_init_leave (&ibus_emojier_ebox_row_type_id__volatile, ibus_emojier_ebox_row_type_id); } return ibus_emojier_ebox_row_type_id__volatile; } static void _vala_ibus_emojier_ebox_row_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { IBusEmojierEBoxRow * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow); switch (property_id) { case IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY: g_value_set_string (value, ibus_emojier_ebox_row_get_text (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void _vala_ibus_emojier_ebox_row_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { IBusEmojierEBoxRow * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow); switch (property_id) { case IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY: ibus_emojier_ebox_row_set_text (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_construct (GType object_type, GtkAdjustment* hadjustment, GtkAdjustment* vadjustment) { IBusEmojierEScrolledWindow * self = NULL; self = (IBusEmojierEScrolledWindow*) g_object_new (object_type, "hscrollbar-policy", GTK_POLICY_NEVER, "vscrollbar-policy", GTK_POLICY_NEVER, "shadow-type", GTK_SHADOW_IN, "margin-start", 6, "margin-end", 6, "margin-top", 6, "margin-bottom", 6, NULL); if (hadjustment != NULL) { gtk_scrolled_window_set_hadjustment ((GtkScrolledWindow*) self, hadjustment); } if (vadjustment != NULL) { gtk_scrolled_window_set_hadjustment ((GtkScrolledWindow*) self, vadjustment); } return self; } static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_new (GtkAdjustment* hadjustment, GtkAdjustment* vadjustment) { return ibus_emojier_escrolled_window_construct (IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, hadjustment, vadjustment); } static void ibus_emojier_escrolled_window_class_init (IBusEmojierEScrolledWindowClass * klass, gpointer klass_data) { ibus_emojier_escrolled_window_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_escrolled_window_instance_init (IBusEmojierEScrolledWindow * self, gpointer klass) { } static GType ibus_emojier_escrolled_window_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEScrolledWindowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_escrolled_window_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEScrolledWindow), 0, (GInstanceInitFunc) ibus_emojier_escrolled_window_instance_init, NULL }; GType ibus_emojier_escrolled_window_type_id; ibus_emojier_escrolled_window_type_id = g_type_register_static (gtk_scrolled_window_get_type (), "IBusEmojierEScrolledWindow", &g_define_type_info, 0); return ibus_emojier_escrolled_window_type_id; } static GType ibus_emojier_escrolled_window_get_type (void) { static volatile gsize ibus_emojier_escrolled_window_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_escrolled_window_type_id__volatile)) { GType ibus_emojier_escrolled_window_type_id; ibus_emojier_escrolled_window_type_id = ibus_emojier_escrolled_window_get_type_once (); g_once_init_leave (&ibus_emojier_escrolled_window_type_id__volatile, ibus_emojier_escrolled_window_type_id); } return ibus_emojier_escrolled_window_type_id__volatile; } static IBusEmojierEGrid* ibus_emojier_egrid_construct (GType object_type) { IBusEmojierEGrid * self = NULL; self = (IBusEmojierEGrid*) g_object_new (object_type, "row-homogeneous", FALSE, "vexpand", TRUE, "halign", GTK_ALIGN_FILL, "valign", GTK_ALIGN_FILL, "row-spacing", 5, "column-spacing", 5, "border-width", 2, NULL); return self; } static IBusEmojierEGrid* ibus_emojier_egrid_new (void) { return ibus_emojier_egrid_construct (IBUS_EMOJIER_TYPE_EGRID); } static void ibus_emojier_egrid_class_init (IBusEmojierEGridClass * klass, gpointer klass_data) { ibus_emojier_egrid_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_egrid_instance_init (IBusEmojierEGrid * self, gpointer klass) { } static GType ibus_emojier_egrid_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEGridClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_egrid_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEGrid), 0, (GInstanceInitFunc) ibus_emojier_egrid_instance_init, NULL }; GType ibus_emojier_egrid_type_id; ibus_emojier_egrid_type_id = g_type_register_static (gtk_grid_get_type (), "IBusEmojierEGrid", &g_define_type_info, 0); return ibus_emojier_egrid_type_id; } static GType ibus_emojier_egrid_get_type (void) { static volatile gsize ibus_emojier_egrid_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_egrid_type_id__volatile)) { GType ibus_emojier_egrid_type_id; ibus_emojier_egrid_type_id = ibus_emojier_egrid_get_type_once (); g_once_init_leave (&ibus_emojier_egrid_type_id__volatile, ibus_emojier_egrid_type_id); } return ibus_emojier_egrid_type_id__volatile; } static inline gpointer ibus_emojier_ewhite_label_get_instance_private (IBusEmojierEWhiteLabel* self) { return G_STRUCT_MEMBER_P (self, IBusEmojierEWhiteLabel_private_offset); } static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_construct (GType object_type, const gchar* text) { IBusEmojierEWhiteLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEWhiteLabel*) g_object_new (object_type, "name", "IBusEmojierWhiteLabel", NULL); gtk_label_set_label ((GtkLabel*) self, text); return self; } static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_new (const gchar* text) { return ibus_emojier_ewhite_label_construct (IBUS_EMOJIER_TYPE_EWHITE_LABEL, text); } static void ibus_emojier_ewhite_label_real_get_preferred_width (GtkWidget* base, gint* minimum_width, gint* natural_width) { IBusEmojierEWhiteLabel * self; gint _vala_minimum_width = 0; gint _vala_natural_width = 0; gboolean _tmp0_ = FALSE; gchar* text = NULL; const gchar* _tmp3_; gchar* _tmp4_; gunichar ch = 0U; const gchar* _tmp5_; gboolean _tmp6_ = FALSE; const gchar* _tmp7_; gint _tmp8_; gint _tmp9_; gint _tmp10_ = 0; gint _tmp11_ = 0; gboolean _tmp12_ = FALSE; const gchar* _tmp13_; gint _tmp14_; gint _tmp15_; self = (IBusEmojierEWhiteLabel*) base; if (self->priv->m_minimum_height == 0) { _tmp0_ = self->priv->m_natural_height == 0; } else { _tmp0_ = FALSE; } if (_tmp0_) { gint _tmp1_ = 0; gint _tmp2_ = 0; GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_height ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp1_, &_tmp2_); self->priv->m_minimum_height = _tmp1_; self->priv->m_natural_height = _tmp2_; } _tmp3_ = gtk_label_get_label ((GtkLabel*) self); _tmp4_ = g_strdup (_tmp3_); text = _tmp4_; _tmp5_ = text; ch = string_get_char (_tmp5_, (glong) 0); _tmp7_ = text; _tmp8_ = strlen (_tmp7_); _tmp9_ = _tmp8_; if (_tmp9_ == 1) { _tmp6_ = ch == ((gunichar) '\t'); } else { _tmp6_ = FALSE; } if (_tmp6_) { _vala_minimum_width = self->priv->m_minimum_height; self->priv->m_minimum_width = _vala_minimum_width; _vala_natural_width = self->priv->m_natural_height; self->priv->m_natural_width = _vala_natural_width; _g_free0 (text); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } return; } GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_width ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp10_, &_tmp11_); _vala_minimum_width = _tmp10_; _vala_natural_width = _tmp11_; _tmp13_ = text; _tmp14_ = strlen (_tmp13_); _tmp15_ = _tmp14_; if (_tmp15_ == 1) { gboolean _tmp16_ = FALSE; if (ch == ((gunichar) '\n')) { _tmp16_ = TRUE; } else { _tmp16_ = ch == ((gunichar) '\r'); } _tmp12_ = _tmp16_; } else { _tmp12_ = FALSE; } if (_tmp12_) { _vala_minimum_width = _vala_minimum_width / 2; _vala_natural_width = _vala_natural_width / 2; self->priv->m_minimum_width = _vala_minimum_width; self->priv->m_natural_width = _vala_natural_width; _g_free0 (text); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } return; } if (_vala_minimum_width < self->priv->m_minimum_height) { _vala_minimum_width = self->priv->m_minimum_height; } if (_vala_natural_width < self->priv->m_natural_height) { _vala_natural_width = self->priv->m_natural_height; } self->priv->m_minimum_width = _vala_minimum_width; self->priv->m_natural_width = _vala_natural_width; _g_free0 (text); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } } static void ibus_emojier_ewhite_label_real_get_preferred_height (GtkWidget* base, gint* minimum_height, gint* natural_height) { IBusEmojierEWhiteLabel * self; gint _vala_minimum_height = 0; gint _vala_natural_height = 0; gboolean _tmp0_ = FALSE; gchar* text = NULL; const gchar* _tmp3_; gchar* _tmp4_; gunichar ch = 0U; const gchar* _tmp5_; gboolean _tmp6_ = FALSE; const gchar* _tmp7_; gint _tmp8_; gint _tmp9_; gint _tmp10_ = 0; gint _tmp11_ = 0; gboolean _tmp12_ = FALSE; const gchar* _tmp13_; gint _tmp14_; gint _tmp15_; self = (IBusEmojierEWhiteLabel*) base; if (self->priv->m_minimum_width == 0) { _tmp0_ = self->priv->m_natural_width == 0; } else { _tmp0_ = FALSE; } if (_tmp0_) { gint _tmp1_ = 0; gint _tmp2_ = 0; GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_width ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp1_, &_tmp2_); self->priv->m_minimum_width = _tmp1_; self->priv->m_natural_width = _tmp2_; } _tmp3_ = gtk_label_get_label ((GtkLabel*) self); _tmp4_ = g_strdup (_tmp3_); text = _tmp4_; _tmp5_ = text; ch = string_get_char (_tmp5_, (glong) 0); _tmp7_ = text; _tmp8_ = strlen (_tmp7_); _tmp9_ = _tmp8_; if (_tmp9_ == 1) { _tmp6_ = ch == ((gunichar) '\v'); } else { _tmp6_ = FALSE; } if (_tmp6_) { _vala_minimum_height = self->priv->m_minimum_width; self->priv->m_minimum_height = _vala_minimum_height; _vala_natural_height = self->priv->m_natural_width; self->priv->m_natural_height = _vala_natural_height; _g_free0 (text); if (minimum_height) { *minimum_height = _vala_minimum_height; } if (natural_height) { *natural_height = _vala_natural_height; } return; } GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_height ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp10_, &_tmp11_); _vala_minimum_height = _tmp10_; _vala_natural_height = _tmp11_; _tmp13_ = text; _tmp14_ = strlen (_tmp13_); _tmp15_ = _tmp14_; if (_tmp15_ == 1) { gboolean _tmp16_ = FALSE; if (ch == ((gunichar) '\n')) { _tmp16_ = TRUE; } else { _tmp16_ = ch == ((gunichar) '\r'); } _tmp12_ = _tmp16_; } else { _tmp12_ = FALSE; } if (_tmp12_) { _vala_minimum_height = _vala_minimum_height / 2; _vala_natural_height = _vala_natural_height / 2; self->priv->m_minimum_height = _vala_minimum_height; self->priv->m_natural_height = _vala_natural_height; _g_free0 (text); if (minimum_height) { *minimum_height = _vala_minimum_height; } if (natural_height) { *natural_height = _vala_natural_height; } return; } self->priv->m_minimum_height = _vala_minimum_height; self->priv->m_natural_height = _vala_natural_height; _g_free0 (text); if (minimum_height) { *minimum_height = _vala_minimum_height; } if (natural_height) { *natural_height = _vala_natural_height; } } static void ibus_emojier_ewhite_label_class_init (IBusEmojierEWhiteLabelClass * klass, gpointer klass_data) { ibus_emojier_ewhite_label_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &IBusEmojierEWhiteLabel_private_offset); ((GtkWidgetClass *) klass)->get_preferred_width = (void (*) (GtkWidget*, gint*, gint*)) ibus_emojier_ewhite_label_real_get_preferred_width; ((GtkWidgetClass *) klass)->get_preferred_height = (void (*) (GtkWidget*, gint*, gint*)) ibus_emojier_ewhite_label_real_get_preferred_height; G_OBJECT_CLASS (klass)->finalize = ibus_emojier_ewhite_label_finalize; } static void ibus_emojier_ewhite_label_instance_init (IBusEmojierEWhiteLabel * self, gpointer klass) { self->priv = ibus_emojier_ewhite_label_get_instance_private (self); self->priv->m_minimum_width = 0; self->priv->m_natural_width = 0; self->priv->m_minimum_height = 0; self->priv->m_natural_height = 0; } static void ibus_emojier_ewhite_label_finalize (GObject * obj) { IBusEmojierEWhiteLabel * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabel); G_OBJECT_CLASS (ibus_emojier_ewhite_label_parent_class)->finalize (obj); } static GType ibus_emojier_ewhite_label_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEWhiteLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_ewhite_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEWhiteLabel), 0, (GInstanceInitFunc) ibus_emojier_ewhite_label_instance_init, NULL }; GType ibus_emojier_ewhite_label_type_id; ibus_emojier_ewhite_label_type_id = g_type_register_static (gtk_label_get_type (), "IBusEmojierEWhiteLabel", &g_define_type_info, 0); IBusEmojierEWhiteLabel_private_offset = g_type_add_instance_private (ibus_emojier_ewhite_label_type_id, sizeof (IBusEmojierEWhiteLabelPrivate)); return ibus_emojier_ewhite_label_type_id; } static GType ibus_emojier_ewhite_label_get_type (void) { static volatile gsize ibus_emojier_ewhite_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_ewhite_label_type_id__volatile)) { GType ibus_emojier_ewhite_label_type_id; ibus_emojier_ewhite_label_type_id = ibus_emojier_ewhite_label_get_type_once (); g_once_init_leave (&ibus_emojier_ewhite_label_type_id__volatile, ibus_emojier_ewhite_label_type_id); } return ibus_emojier_ewhite_label_type_id__volatile; } static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_construct (GType object_type, const gchar* text) { IBusEmojierESelectedLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierESelectedLabel*) g_object_new (object_type, "name", "IBusEmojierSelectedLabel", NULL); if (g_strcmp0 (text, "") != 0) { gtk_label_set_label ((GtkLabel*) self, text); } return self; } static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_new (const gchar* text) { return ibus_emojier_eselected_label_construct (IBUS_EMOJIER_TYPE_ESELECTED_LABEL, text); } static void ibus_emojier_eselected_label_class_init (IBusEmojierESelectedLabelClass * klass, gpointer klass_data) { ibus_emojier_eselected_label_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_eselected_label_instance_init (IBusEmojierESelectedLabel * self, gpointer klass) { } static GType ibus_emojier_eselected_label_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierESelectedLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_eselected_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierESelectedLabel), 0, (GInstanceInitFunc) ibus_emojier_eselected_label_instance_init, NULL }; GType ibus_emojier_eselected_label_type_id; ibus_emojier_eselected_label_type_id = g_type_register_static (IBUS_EMOJIER_TYPE_EWHITE_LABEL, "IBusEmojierESelectedLabel", &g_define_type_info, 0); return ibus_emojier_eselected_label_type_id; } static GType ibus_emojier_eselected_label_get_type (void) { static volatile gsize ibus_emojier_eselected_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_eselected_label_type_id__volatile)) { GType ibus_emojier_eselected_label_type_id; ibus_emojier_eselected_label_type_id = ibus_emojier_eselected_label_get_type_once (); g_once_init_leave (&ibus_emojier_eselected_label_type_id__volatile, ibus_emojier_eselected_label_type_id); } return ibus_emojier_eselected_label_type_id__volatile; } static IBusEmojierEGoldLabel* ibus_emojier_egold_label_construct (GType object_type, const gchar* text) { IBusEmojierEGoldLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEGoldLabel*) g_object_new (object_type, "name", "IBusEmojierGoldLabel", NULL); if (g_strcmp0 (text, "") != 0) { gtk_label_set_label ((GtkLabel*) self, text); } return self; } static IBusEmojierEGoldLabel* ibus_emojier_egold_label_new (const gchar* text) { return ibus_emojier_egold_label_construct (IBUS_EMOJIER_TYPE_EGOLD_LABEL, text); } static void ibus_emojier_egold_label_class_init (IBusEmojierEGoldLabelClass * klass, gpointer klass_data) { ibus_emojier_egold_label_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_egold_label_instance_init (IBusEmojierEGoldLabel * self, gpointer klass) { } static GType ibus_emojier_egold_label_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEGoldLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_egold_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEGoldLabel), 0, (GInstanceInitFunc) ibus_emojier_egold_label_instance_init, NULL }; GType ibus_emojier_egold_label_type_id; ibus_emojier_egold_label_type_id = g_type_register_static (IBUS_EMOJIER_TYPE_EWHITE_LABEL, "IBusEmojierEGoldLabel", &g_define_type_info, 0); return ibus_emojier_egold_label_type_id; } static GType ibus_emojier_egold_label_get_type (void) { static volatile gsize ibus_emojier_egold_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_egold_label_type_id__volatile)) { GType ibus_emojier_egold_label_type_id; ibus_emojier_egold_label_type_id = ibus_emojier_egold_label_get_type_once (); g_once_init_leave (&ibus_emojier_egold_label_type_id__volatile, ibus_emojier_egold_label_type_id); } return ibus_emojier_egold_label_type_id__volatile; } static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_construct (GType object_type, const gchar* text, GtkAlign align) { IBusEmojierEPaddedLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEPaddedLabel*) g_object_new (object_type, "name", "IBusEmojierPaddedLabel", "halign", align, "valign", GTK_ALIGN_CENTER, "margin-start", 20, "margin-end", 20, "margin-top", 6, "margin-bottom", 6, NULL); gtk_label_set_text ((GtkLabel*) self, text); return self; } static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_new (const gchar* text, GtkAlign align) { return ibus_emojier_epadded_label_construct (IBUS_EMOJIER_TYPE_EPADDED_LABEL, text, align); } static void ibus_emojier_epadded_label_class_init (IBusEmojierEPaddedLabelClass * klass, gpointer klass_data) { ibus_emojier_epadded_label_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_epadded_label_instance_init (IBusEmojierEPaddedLabel * self, gpointer klass) { } static GType ibus_emojier_epadded_label_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEPaddedLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_epadded_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEPaddedLabel), 0, (GInstanceInitFunc) ibus_emojier_epadded_label_instance_init, NULL }; GType ibus_emojier_epadded_label_type_id; ibus_emojier_epadded_label_type_id = g_type_register_static (gtk_label_get_type (), "IBusEmojierEPaddedLabel", &g_define_type_info, 0); return ibus_emojier_epadded_label_type_id; } static GType ibus_emojier_epadded_label_get_type (void) { static volatile gsize ibus_emojier_epadded_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_epadded_label_type_id__volatile)) { GType ibus_emojier_epadded_label_type_id; ibus_emojier_epadded_label_type_id = ibus_emojier_epadded_label_get_type_once (); g_once_init_leave (&ibus_emojier_epadded_label_type_id__volatile, ibus_emojier_epadded_label_type_id); } return ibus_emojier_epadded_label_type_id__volatile; } static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_construct (GType object_type, const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption) { IBusEmojierEPaddedLabelBox * self = NULL; IBusEmojierEPaddedLabel* label = NULL; IBusEmojierEPaddedLabel* _tmp3_; IBusEmojierEPaddedLabel* _tmp4_; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEPaddedLabelBox*) g_object_new (object_type, "name", "IBusEmojierPaddedLabelBox", "orientation", GTK_ORIENTATION_HORIZONTAL, "spacing", 0, NULL); if (direction == IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD) { IconWidget* icon = NULL; IconWidget* _tmp2_; if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL) { IconWidget* _tmp0_; _tmp0_ = icon_widget_new ("go-previous-rtl-symbolic", GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp0_); _g_object_unref0 (icon); icon = _tmp0_; } else { IconWidget* _tmp1_; _tmp1_ = icon_widget_new ("go-previous-symbolic", GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp1_); _g_object_unref0 (icon); icon = _tmp1_; } _tmp2_ = icon; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp2_, FALSE, TRUE, (guint) 0); _g_object_unref0 (icon); } _tmp3_ = ibus_emojier_epadded_label_new (text, align); g_object_ref_sink (_tmp3_); label = _tmp3_; _tmp4_ = label; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp4_, TRUE, TRUE, (guint) 0); if (caption != NULL) { IBusEmojierEPaddedLabel* label_r = NULL; IBusEmojierEPaddedLabel* _tmp5_; IBusEmojierEPaddedLabel* _tmp6_; _tmp5_ = ibus_emojier_epadded_label_new (caption, GTK_ALIGN_END); g_object_ref_sink (_tmp5_); label_r = _tmp5_; _tmp6_ = label_r; gtk_box_pack_end ((GtkBox*) self, (GtkWidget*) _tmp6_, TRUE, TRUE, (guint) 0); _g_object_unref0 (label_r); } _g_object_unref0 (label); return self; } static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_new (const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption) { return ibus_emojier_epadded_label_box_construct (IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, text, align, direction, caption); } static void ibus_emojier_epadded_label_box_class_init (IBusEmojierEPaddedLabelBoxClass * klass, gpointer klass_data) { ibus_emojier_epadded_label_box_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_epadded_label_box_instance_init (IBusEmojierEPaddedLabelBox * self, gpointer klass) { } static GType ibus_emojier_epadded_label_box_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEPaddedLabelBoxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_epadded_label_box_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEPaddedLabelBox), 0, (GInstanceInitFunc) ibus_emojier_epadded_label_box_instance_init, NULL }; GType ibus_emojier_epadded_label_box_type_id; ibus_emojier_epadded_label_box_type_id = g_type_register_static (gtk_box_get_type (), "IBusEmojierEPaddedLabelBox", &g_define_type_info, 0); return ibus_emojier_epadded_label_box_type_id; } static GType ibus_emojier_epadded_label_box_get_type (void) { static volatile gsize ibus_emojier_epadded_label_box_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_epadded_label_box_type_id__volatile)) { GType ibus_emojier_epadded_label_box_type_id; ibus_emojier_epadded_label_box_type_id = ibus_emojier_epadded_label_box_get_type_once (); g_once_init_leave (&ibus_emojier_epadded_label_box_type_id__volatile, ibus_emojier_epadded_label_box_type_id); } return ibus_emojier_epadded_label_box_type_id__volatile; } static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_construct (GType object_type) { IBusEmojierLoadProgressObject * self = NULL; self = (IBusEmojierLoadProgressObject*) g_object_new (object_type, NULL); return self; } static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_new (void) { return ibus_emojier_load_progress_object_construct (IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT); } 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 ibus_emojier_load_progress_object_class_init (IBusEmojierLoadProgressObjectClass * klass, gpointer klass_data) { ibus_emojier_load_progress_object_parent_class = g_type_class_peek_parent (klass); ibus_emojier_load_progress_object_signals[IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_DESERIALIZE_UNICODE_SIGNAL] = g_signal_new ("deserialize-unicode", IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); } static void ibus_emojier_load_progress_object_instance_init (IBusEmojierLoadProgressObject * self, gpointer klass) { } static GType ibus_emojier_load_progress_object_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierLoadProgressObjectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_load_progress_object_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierLoadProgressObject), 0, (GInstanceInitFunc) ibus_emojier_load_progress_object_instance_init, NULL }; GType ibus_emojier_load_progress_object_type_id; ibus_emojier_load_progress_object_type_id = g_type_register_static (G_TYPE_OBJECT, "IBusEmojierLoadProgressObject", &g_define_type_info, 0); return ibus_emojier_load_progress_object_type_id; } static GType ibus_emojier_load_progress_object_get_type (void) { static volatile gsize ibus_emojier_load_progress_object_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_load_progress_object_type_id__volatile)) { GType ibus_emojier_load_progress_object_type_id; ibus_emojier_load_progress_object_type_id = ibus_emojier_load_progress_object_get_type_once (); g_once_init_leave (&ibus_emojier_load_progress_object_type_id__volatile, ibus_emojier_load_progress_object_type_id); } return ibus_emojier_load_progress_object_type_id__volatile; } static void ibus_emojier_class_init (IBusEmojierClass * klass, gpointer klass_data) { gchar* _tmp0_; ibus_emojier_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &IBusEmojier_private_offset); ((GtkWidgetClass *) klass)->show_all = (void (*) (GtkWidget*)) ibus_emojier_real_show_all; ((GtkWidgetClass *) klass)->hide = (void (*) (GtkWidget*)) ibus_emojier_real_hide; ((GtkWidgetClass *) klass)->key_press_event = (gboolean (*) (GtkWidget*, GdkEventKey*)) ibus_emojier_real_key_press_event; G_OBJECT_CLASS (klass)->finalize = ibus_emojier_finalize; ibus_emojier_signals[IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL] = g_signal_new ("candidate-clicked", TYPE_IBUS_EMOJIER, 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); ibus_emojier_signals[IBUS_EMOJIER_COMMIT_TEXT_SIGNAL] = g_signal_new ("commit-text", TYPE_IBUS_EMOJIER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); ibus_emojier_signals[IBUS_EMOJIER_CANCEL_SIGNAL] = g_signal_new ("cancel", TYPE_IBUS_EMOJIER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); _tmp0_ = g_strdup (""); ibus_emojier_m_warning_message = _tmp0_; } static void ibus_emojier_instance_init (IBusEmojier * self, gpointer klass) { gchar* _tmp0_; gchar* _tmp1_; self->priv = ibus_emojier_get_instance_private (self); _tmp0_ = g_strdup (""); self->priv->m_annotation = _tmp0_; self->priv->m_backward_index = -1; self->priv->m_scrolled_window = NULL; self->priv->m_is_running = FALSE; _tmp1_ = g_strdup (""); self->priv->m_input_context_path = _tmp1_; self->priv->m_category_active_index = -1; self->priv->m_enter_notify_enable = TRUE; self->priv->m_is_up_side_down = FALSE; } static void ibus_emojier_finalize (GObject * obj) { IBusEmojier * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_IBUS_EMOJIER, IBusEmojier); _themed_rgba_unref0 (self->priv->m_rgba); _g_object_unref0 (self->priv->m_vbox); _g_free0 (self->priv->m_annotation); _g_free0 (self->priv->m_backward); _g_object_unref0 (self->priv->m_scrolled_window); _g_object_unref0 (self->priv->m_list_box); _g_free0 (self->priv->m_input_context_path); _g_main_loop_unref0 (self->priv->m_loop); _g_free0 (self->priv->m_result); _g_object_unref0 (self->priv->m_lookup_table); self->priv->m_candidates = (_vala_array_free (self->priv->m_candidates, self->priv->m_candidates_length1, (GDestroyNotify) g_object_unref), NULL); _g_object_unref0 (self->priv->m_unicode_progress_bar); _g_object_unref0 (self->priv->m_unicode_percent_label); G_OBJECT_CLASS (ibus_emojier_parent_class)->finalize (obj); } static GType ibus_emojier_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojier), 0, (GInstanceInitFunc) ibus_emojier_instance_init, NULL }; GType ibus_emojier_type_id; ibus_emojier_type_id = g_type_register_static (gtk_application_window_get_type (), "IBusEmojier", &g_define_type_info, 0); IBusEmojier_private_offset = g_type_add_instance_private (ibus_emojier_type_id, sizeof (IBusEmojierPrivate)); return ibus_emojier_type_id; } GType ibus_emojier_get_type (void) { static volatile gsize ibus_emojier_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_type_id__volatile)) { GType ibus_emojier_type_id; ibus_emojier_type_id = ibus_emojier_get_type_once (); g_once_init_leave (&ibus_emojier_type_id__volatile, ibus_emojier_type_id); } return ibus_emojier_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { gint 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) { gint length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; } ibus-1.5.22/bindings/vala/pango.vala0000644000000000000000000000567613623750431014145 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.22/bindings/vala/IBusEmojiDialog-1.0.metadata0000644000000000000000000000006513623750431017123 00000000000000IBusEmojiDialog cheader_filename="ibusemojidialog.h" ibus-1.5.22/bindings/pygobject/0000755000000000000000000000000013623751574013312 500000000000000ibus-1.5.22/bindings/pygobject/Makefile.am0000644000000000000000000000517613623750431015266 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2012 Daiki Ueno # Copyright (c) 2014-2016 Peng Huang # Copyright (c) 2018-2019 Takao Fujiwara # Copyright (c) 2012-2018 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_PYTHON2 py2_compile = PYTHON=$(PYTHON2) $(SHELL) $(py_compile) overrides2dir = $(py2overridesdir) overrides2_DATA = \ gi/overrides/IBus.py \ $(NULL) endif overridesdir = $(pyoverridesdir) overrides_PYTHON = \ gi/overrides/IBus.py \ $(NULL) TESTS = if ENABLE_TESTS TESTS += test-override-ibus.py endif # IBus.Keymap() accesses keymap files 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 \ IBUS_KEYMAP_PATH=$(top_srcdir)/data/keymaps \ $(NULL) LOG_COMPILER = $(PYTHON) -B EXTRA_DIST = \ gi/__init__.py \ gi/overrides/__init__.py \ test-override-ibus.py \ $(NULL) install-data-hook: @$(NORMAL_INSTALL) if ENABLE_PYTHON2 @for data in $(overrides2_DATA); do \ file=`echo $$data | sed -e 's|^.*/||'`; \ dlist="$$dlist $$file"; \ done; \ $(py2_compile) --destdir "$(DESTDIR)" \ --basedir "$(overrides2dir)" \ $$dlist endif $(NULL) uninstall-hook: @$(NORMAL_UNINSTALL) if ENABLE_PYTHON2 @list='$(overrides2_DATA)'; test -n "$(overrides2dir)" || list=; \ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$py_files" || exit 0; \ dir='$(DESTDIR)$(overrides2dir)'; \ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ for files in \ "$$py_files" \ "$$pyc_files" \ "$$pyo_files" \ ; do \ test -z "$$files" || rm -f "$$dir/$$files" || st=$$?; \ done; \ exit $$st endif $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.22/bindings/pygobject/Makefile.in0000644000000000000000000011021713623751263015274 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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-2016 Peng Huang # Copyright (c) 2018-2019 Takao Fujiwara # Copyright (c) 2012-2018 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_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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ NULL = @ENABLE_PYTHON2_TRUE@py2_compile = PYTHON=$(PYTHON2) $(SHELL) $(py_compile) @ENABLE_PYTHON2_TRUE@overrides2dir = $(py2overridesdir) @ENABLE_PYTHON2_TRUE@overrides2_DATA = \ @ENABLE_PYTHON2_TRUE@ gi/overrides/IBus.py \ @ENABLE_PYTHON2_TRUE@ $(NULL) overridesdir = $(pyoverridesdir) overrides_PYTHON = \ gi/overrides/IBus.py \ $(NULL) TESTS = $(am__append_1) # IBus.Keymap() accesses keymap files 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 \ IBUS_KEYMAP_PATH=$(top_srcdir)/data/keymaps \ $(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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: check-am install-am install-data-am install-strip uninstall-am .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-hook uninstall-overrides2DATA \ uninstall-overridesPYTHON .PRECIOUS: Makefile install-data-hook: @$(NORMAL_INSTALL) @ENABLE_PYTHON2_TRUE@ @for data in $(overrides2_DATA); do \ @ENABLE_PYTHON2_TRUE@ file=`echo $$data | sed -e 's|^.*/||'`; \ @ENABLE_PYTHON2_TRUE@ dlist="$$dlist $$file"; \ @ENABLE_PYTHON2_TRUE@ done; \ @ENABLE_PYTHON2_TRUE@ $(py2_compile) --destdir "$(DESTDIR)" \ @ENABLE_PYTHON2_TRUE@ --basedir "$(overrides2dir)" \ @ENABLE_PYTHON2_TRUE@ $$dlist $(NULL) uninstall-hook: @$(NORMAL_UNINSTALL) @ENABLE_PYTHON2_TRUE@ @list='$(overrides2_DATA)'; test -n "$(overrides2dir)" || list=; \ @ENABLE_PYTHON2_TRUE@ py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ @ENABLE_PYTHON2_TRUE@ test -n "$$py_files" || exit 0; \ @ENABLE_PYTHON2_TRUE@ dir='$(DESTDIR)$(overrides2dir)'; \ @ENABLE_PYTHON2_TRUE@ pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ @ENABLE_PYTHON2_TRUE@ pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ @ENABLE_PYTHON2_TRUE@ for files in \ @ENABLE_PYTHON2_TRUE@ "$$py_files" \ @ENABLE_PYTHON2_TRUE@ "$$pyc_files" \ @ENABLE_PYTHON2_TRUE@ "$$pyo_files" \ @ENABLE_PYTHON2_TRUE@ ; do \ @ENABLE_PYTHON2_TRUE@ test -z "$$files" || rm -f "$$dir/$$files" || st=$$?; \ @ENABLE_PYTHON2_TRUE@ done; \ @ENABLE_PYTHON2_TRUE@ exit $$st $(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.22/bindings/pygobject/test-override-ibus.py0000644000000000000000000001127613623750431017336 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.22/bindings/pygobject/gi/0000755000000000000000000000000013623751574013711 500000000000000ibus-1.5.22/bindings/pygobject/gi/__init__.py0000644000000000000000000000171113623750431015731 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.22/bindings/pygobject/gi/overrides/0000755000000000000000000000000013623751574015713 500000000000000ibus-1.5.22/bindings/pygobject/gi/overrides/IBus.py0000644000000000000000000002035313623750431017041 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.22/bindings/pygobject/gi/overrides/__init__.py0000644000000000000000000000171113623750431017733 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.22/autogen.sh0000755000000000000000000000134113623750431011436 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.22/bus/0000755000000000000000000000000013623751712010312 500000000000000ibus-1.5.22/bus/inputcontext.c0000644000000000000000000030733213623750431013147 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) 2015-2018 Takao Fujiwara * Copyright (C) 2008-2016 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 */ GTask *task; /* 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; gboolean client_commit_preedit; /* 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; BusPanelProxy *emoji_extension; gboolean is_extension_lookup_table; }; struct _BusInputContextClass { IBusServiceClass parent; /* class members */ IBusEngineDesc *default_engine_desc; }; enum { PROCESS_KEY_EVENT, SET_CURSOR_LOCATION, SET_CURSOR_LOCATION_RELATIVE, 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, PANEL_EXTENSION, 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_show_preedit_text (BusInputContext *context, gboolean is_extension); static void bus_input_context_hide_preedit_text (BusInputContext *context, gboolean is_extension); 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_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[] = "" " " /* properties */ " " " \n" /* methods */ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " /* signals */ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " ""; 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_BOOLEAN__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[SET_CURSOR_LOCATION_RELATIVE] = g_signal_new (I_("set-cursor-location-relative"), 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); context_signals[PANEL_EXTENSION] = g_signal_new (I_("panel-extension"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_EXTENSION_EVENT); 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) { g_variant_unref (parameters); 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) { /* fake context has no connections. */ if (parameters) g_variant_unref (parameters); 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); } /** * _panel_process_key_event_cb: * * A GAsyncReadyCallback function to be called when * bus_panel_proxy_process_key_event() is finished. */ static void _panel_process_key_event_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); } } typedef struct _ProcessKeyEventData ProcessKeyEventData; struct _ProcessKeyEventData { GDBusMethodInvocation *invocation; BusInputContext *context; guint keyval; guint keycode; guint modifiers; }; /** * _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, ProcessKeyEventData *data) { GDBusMethodInvocation *invocation = data->invocation; BusInputContext *context = data->context; guint keyval = data->keyval; guint keycode = data->keycode; guint modifiers = data->modifiers; GError *error = NULL; GVariant *value = g_dbus_proxy_call_finish ((GDBusProxy *)source, res, &error); if (value != NULL) { gboolean retval = FALSE; g_variant_get (value, "(b)", &retval); if (context->emoji_extension && !retval) { bus_panel_proxy_process_key_event (context->emoji_extension, keyval, keycode, modifiers, (GAsyncReadyCallback) _panel_process_key_event_cb, invocation); } else { 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); } g_object_unref (context); g_slice_free (ProcessKeyEventData, data); } /** * _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) { ProcessKeyEventData *data = g_slice_new0 (ProcessKeyEventData); data->invocation = invocation; data->context = g_object_ref (context); data->keyval = keyval; data->keycode = keycode; data->modifiers = modifiers; bus_engine_proxy_process_key_event (context->engine, keyval, keycode, modifiers, (GAsyncReadyCallback) _ic_process_key_event_reply_cb, data); } 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); if (context->emoji_extension) { bus_panel_proxy_set_cursor_location (context->emoji_extension, context->x, context->y, context->w, context->h); } } } /** * _ic_set_cursor_location_relative: * * Implement the "SetCursorLocationRelative" method call of the * org.freedesktop.IBus.InputContext interface. * * Unlike _ic_set_cursor_location, this doesn't deliver the location * to the engine proxy, since the relative coordinates are not very * useful for engines. */ static void _ic_set_cursor_location_relative (BusInputContext *context, GVariant *parameters, GDBusMethodInvocation *invocation) { gint x, y, w, h; g_dbus_method_invocation_return_value (invocation, NULL); g_variant_get (parameters, "(iiii)", &x, &y, &w, &h); if (context->capabilities & IBUS_CAP_FOCUS) { g_signal_emit (context, context_signals[SET_CURSOR_LOCATION_RELATIVE], 0, x, y, w, h); if (context->emoji_extension) { bus_panel_proxy_set_cursor_location_relative ( context->emoji_extension, x, y, w, 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) { if (context->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) { if (context->client_commit_preedit) bus_input_context_clear_preedit_text (context, FALSE); else bus_input_context_clear_preedit_text (context, TRUE); } 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); } /* * Since IBusService is inherited by IBusImpl, this method cannot be * applied to IBusServiceClass.method_call() directly but can be in * each child class.method_call(). */ static gboolean bus_input_context_service_authorized_method (IBusService *service, GDBusConnection *connection) { if (ibus_service_get_connection (service) == connection) return TRUE; return FALSE; } /** * 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 }, { "SetCursorLocationRelative", _ic_set_cursor_location_relative }, { "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; if (!bus_input_context_service_authorized_method (service, connection)) return; 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 void _ic_set_client_commit_preedit (BusInputContext *context, GVariant *value) { g_variant_get (value, "(b)", &context->client_commit_preedit); } 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 (!bus_input_context_service_authorized_method (service, connection)) return FALSE; g_return_val_if_fail (BUS_IS_INPUT_CONTEXT (service), FALSE); if (g_strcmp0 (property_name, "ContentType") == 0) { _ic_set_content_type (BUS_INPUT_CONTEXT (service), value); return TRUE; } if (g_strcmp0 (property_name, "ClientCommitPreedit") == 0) { _ic_set_client_commit_preedit (BUS_INPUT_CONTEXT (service), 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: * @context: A #BusInputContext * @with_signal: %FALSE if the preedit is already updated in ibus clients * likes ibus-im.so. Otherwise %TRUE. * * Clear context->preedit_text. If the preedit mode is * IBUS_ENGINE_PREEDIT_COMMIT, commit it before clearing. */ void bus_input_context_clear_preedit_text (BusInputContext *context, gboolean with_signal) { IBusText *preedit_text; guint preedit_mode; gboolean preedit_visible; g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!with_signal) { g_object_unref (context->preedit_text); context->preedit_mode = IBUS_ENGINE_PREEDIT_CLEAR; context->preedit_text = (IBusText *) g_object_ref_sink (text_empty); context->preedit_cursor_pos = 0; context->preedit_visible = FALSE; return; } /* always clear preedit text to reset the cursor position in the * client application before commit the preeit text. */ preedit_text = g_object_ref (context->preedit_text); preedit_mode = context->preedit_mode; preedit_visible = context->preedit_visible; bus_input_context_update_preedit_text (context, text_empty, 0, FALSE, IBUS_ENGINE_PREEDIT_CLEAR, TRUE); if (preedit_visible && preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) { bus_input_context_commit_text (context, preedit_text); } g_object_unref (preedit_text); } void bus_input_context_focus_out (BusInputContext *context) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!context->has_focus) return; if (context->client_commit_preedit) bus_input_context_clear_preedit_text (context, FALSE); else bus_input_context_clear_preedit_text (context, TRUE); bus_input_context_update_auxiliary_text (context, text_empty, FALSE); bus_input_context_update_lookup_table (context, lookup_table_empty, FALSE, 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->is_extension_lookup_table && \ context->emoji_extension) { \ bus_panel_proxy_##name##_lookup_table (context->emoji_extension); \ return; \ } \ 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->is_extension_lookup_table && context->emoji_extension) { bus_panel_proxy_candidate_clicked_lookup_table ( context->emoji_extension, index, button, state); return; } 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); } } /** * 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, gboolean is_extension) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->preedit_visible) return; if (!is_extension && context->emoji_extension) return; if (!is_extension) context->preedit_visible = TRUE; if (context->emoji_extension && !is_extension) { /* Do not use HIDE_PREEDIT_TEXT signal below but call * bus_panel_proxy_hide_preedit_text() directly for the extension only * but not for the normal panel. */ bus_panel_proxy_show_preedit_text (context->emoji_extension); return; } 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, gboolean is_extension) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!is_extension && !context->preedit_visible) return; if (!is_extension) context->preedit_visible = FALSE; if (context->emoji_extension && !is_extension) { /* Do not use HIDE_PREEDIT_TEXT signal below but call * bus_panel_proxy_hide_preedit_text() directly for the extension only * but not for the normal panel. */ bus_panel_proxy_hide_preedit_text (context->emoji_extension); return; } 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: * @context: #BusInputContext * @table: #IBusLookupTable * @visible: %TRUE if the lookup table is visible, otherwise %FALSE. * @is_extension: %TRUE if the lookup table is called by a panel extension. * %FALSE if it's called by an engine. * I.e. is_extension_lookup_table means the owner of the lookup table. */ void bus_input_context_update_lookup_table (BusInputContext *context, IBusLookupTable *table, gboolean visible, gboolean is_extension) { g_assert (BUS_IS_INPUT_CONTEXT (context)); context->is_extension_lookup_table = is_extension; 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, TRUE); } /** * _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, FALSE); } /** * _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); } /** * _engine_panel_extension_cb: * * A function to be called when "panel-extension" glib signal is sent * from the engine object. */ static void _engine_panel_extension_cb (BusEngineProxy *engine, IBusExtensionEvent *event, BusInputContext *context) { g_signal_emit (context, context_signals[PANEL_EXTENSION], 0, event); } static void _engine_show_preedit_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_show_preedit_text (context, FALSE); } static void _engine_hide_preedit_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_hide_preedit_text (context, FALSE); } #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_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, TRUE); bus_input_context_update_auxiliary_text (context, text_empty, FALSE); bus_input_context_update_lookup_table (context, lookup_table_empty, FALSE, 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) }, { "panel-extension", G_CALLBACK (_engine_panel_extension_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, TRUE); bus_input_context_update_auxiliary_text (context, text_empty, FALSE); bus_input_context_update_lookup_table (context, lookup_table_empty, FALSE, 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->task != NULL) { g_object_unref (data->task); } 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_task_return_error (data->task, error); } else { if (data->context->data != data) { /* Request has been overridden or cancelled */ g_object_unref (engine); g_task_return_new_error (data->task, 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_task_return_boolean (data->task, TRUE); } } 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) { GTask *task; SetEngineByDescData *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; task = g_task_new (context, cancellable, callback, user_data); g_task_set_source_tag (task, bus_input_context_set_engine_by_desc); if (g_cancellable_is_cancelled (cancellable)) { g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_CANCELLED, "Operation was cancelled"); g_object_unref (task); return; } data = g_slice_new0 (SetEngineByDescData); context->data = data; data->context = context; g_object_ref (context); data->task = task; 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) { GTask *task; gboolean had_error; g_assert (BUS_IS_INPUT_CONTEXT (context)); g_assert (g_task_is_valid (res, context)); task = G_TASK (res); g_assert (g_task_get_source_tag (task) == bus_input_context_set_engine_by_desc); /* g_task_propagate_error() is not a public API and * g_task_had_error() needs to be called before * g_task_propagate_pointer() clears task->error. */ had_error = g_task_had_error (task); g_task_propagate_pointer (task, error); if (had_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); } void bus_input_context_commit_text_use_extension (BusInputContext *context, IBusText *text, gboolean use_extension) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (text == text_empty || text == NULL) return; if (use_extension && context->emoji_extension) { bus_panel_proxy_commit_text_received (context->emoji_extension, text); } else { GVariant *variant = ibus_serializable_serialize ( (IBusSerializable *)text); bus_input_context_emit_signal (context, "CommitText", g_variant_new ("(v)", variant), NULL); } } void bus_input_context_commit_text (BusInputContext *context, IBusText *text) { bus_input_context_commit_text_use_extension (context, text, TRUE); } void bus_input_context_update_preedit_text (BusInputContext *context, IBusText *text, guint cursor_pos, gboolean visible, guint mode, gboolean use_extension) { gboolean extension_visible = FALSE; 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; if (use_extension) context->preedit_visible = visible; if (use_extension) context->preedit_mode = mode; extension_visible = context->preedit_visible | (context->emoji_extension != NULL); if (use_extension && context->emoji_extension) { bus_panel_proxy_update_preedit_text (context->emoji_extension, context->preedit_text, context->preedit_cursor_pos, context->preedit_visible); } else if (PREEDIT_CONDITION) { GVariant *variant = ibus_serializable_serialize ( (IBusSerializable *)context->preedit_text); if (context->client_commit_preedit) { bus_input_context_emit_signal ( context, "UpdatePreeditTextWithMode", g_variant_new ("(vubu)", variant, context->preedit_cursor_pos, extension_visible, context->preedit_mode), NULL); } else { bus_input_context_emit_signal ( context, "UpdatePreeditText", g_variant_new ("(vub)", variant, context->preedit_cursor_pos, extension_visible), NULL); } } else { g_signal_emit (context, context_signals[UPDATE_PREEDIT_TEXT], 0, context->preedit_text, context->preedit_cursor_pos, extension_visible); } } void bus_input_context_set_emoji_extension (BusInputContext *context, BusPanelProxy *emoji_extension) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (context->emoji_extension) g_object_unref (context->emoji_extension); context->emoji_extension = emoji_extension; if (emoji_extension) { g_object_ref (context->emoji_extension); if (!context->connection) return; bus_input_context_show_preedit_text (context, TRUE); bus_panel_proxy_set_cursor_location (context->emoji_extension, context->x, context->y, context->w, context->h); } else { if (!context->connection) return; /* https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/113 * Cannot use bus_input_context_hide_preedit_text () yet. */ if (!context->preedit_visible) { bus_input_context_update_preedit_text (context, text_empty, 0, FALSE, IBUS_ENGINE_PREEDIT_CLEAR, FALSE); } } } void bus_input_context_panel_extension_received (BusInputContext *context, IBusExtensionEvent *event) { g_assert (BUS_IS_INPUT_CONTEXT (context)); if (!context->engine) return; bus_engine_proxy_panel_extension_received (context->engine, event); } ibus-1.5.22/bus/Makefile.am0000644000000000000000000001102413623750431012261 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2013 Peng Huang # Copyright (c) 2013-2018 Takao Fujiwara # Copyright (c) 2007-2018 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_EMOJI_DICT AM_CFLAGS += -DEMOJI_DICT endif if ENABLE_TESTS TESTS = \ test-matchrule \ test-stress \ $(NULL) endif TESTS_ENVIRONMENT = \ top_builddir=$(top_builddir) \ top_srcdir=$(top_srcdir) \ builddir=$(builddir) \ srcdir=$(srcdir) \ LD_LIBRARY_PATH="$(top_builddir)/src/.libs:$(top_builddir)/src" \ DISABLE_GUI_TESTS="$(DISABLE_GUI_TESTS)" \ DISABLE_DAEMONIZE_IN_TESTS="$(DISABLE_DAEMONIZE_IN_TESTS)" \ $(NULL) LOG_COMPILER = $(top_srcdir)/src/tests/runtest 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 $@ dbusservice_in_files = org.freedesktop.IBus.service.in dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) dbusservicedir=${datadir}/dbus-1/services org.freedesktop.IBus.service: org.freedesktop.IBus.service.in $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" -e "s|\@xim_cli_arg\@|$(XIM_CLI_ARG)|" $< > $@.tmp && mv $@.tmp $@ EXTRA_DIST += $(dbusservice_in_files) CLEANFILES += $(dbusservice_DATA) -include $(top_srcdir)/git.mk ibus-1.5.22/bus/inputcontext.h0000644000000000000000000003536513623750431013160 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) 2017-2018 Takao Fujiwara * Copyright (C) 2008-2018 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" #ifndef __BUS_PANEL_PROXY_DEFINED #define __BUS_PANEL_PROXY_DEFINED typedef struct _BusPanelProxy BusPanelProxy; #endif /* * 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: * @context: A #BusInputContext. * * 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: * @context: A #BusInputContext. * * 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: * @context: A #BusInputContext. * @returns: context->has_focus. */ gboolean bus_input_context_has_focus (BusInputContext *context); /** * bus_input_context_enable: * @context: A #BusInputContext. * * 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: * @context: A #BusInputContext. * * 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: * @context: A #BusInputContext. * * Call page_up method of the current engine proxy. */ void bus_input_context_page_up (BusInputContext *context); /** * bus_input_context_page_down: * @context: A #BusInputContext. * * Call page_down method of the current engine proxy. */ void bus_input_context_page_down (BusInputContext *context); /** * bus_input_context_cursor_up: * @context: A #BusInputContext. * * Call cursor_up method of the current engine proxy. */ void bus_input_context_cursor_up (BusInputContext *context); /** * bus_input_context_cursor_down: * @context: A #BusInputContext. * * Call cursor_down method of the current engine proxy. */ void bus_input_context_cursor_down (BusInputContext *context); /** * bus_input_context_candidate_clicked: * @context: A #BusInputContext. * @index: An index. * @button: A button number. * @state: A button state. * * 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: * @context: A #BusInputContext. * @engine: A #BusEngineProxy. * * Use the engine on the context. */ void bus_input_context_set_engine (BusInputContext *context, BusEngineProxy *engine); /** * bus_input_context_set_engine_by_desc: * @context: A #BusInputContext. * @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. * @user_data: an argument of @callback. * * 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: * @context: A #BusInputContext. * @res: A #GAsyncResult. * @error: A #GError. * * 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: * @context: A #BusInputContext. * * Get a BusEngineProxy object of the current engine. */ BusEngineProxy *bus_input_context_get_engine (BusInputContext *context); /** * bus_input_context_get_engine_desc: * @context: A #BusInputContext. * * Get an IBusEngineDesc object of the current engine. */ IBusEngineDesc *bus_input_context_get_engine_desc (BusInputContext *context); /** * bus_input_context_property_activate: * @context: A #BusInputContext. * @prop_name: A property name. * @prop_state: A property state. * * 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: * @context: A #BusInputContext. * @returns: context->capabilities. */ guint bus_input_context_get_capabilities (BusInputContext *context); /** * bus_input_context_set_capabilities: * @context: A #BusInputContext. * @capabilities: 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: * @context: A #BusInputContext. * @returns: context->client. */ const gchar *bus_input_context_get_client (BusInputContext *context); /** * bus_input_context_get_content_type: * @context: A #BusInputContext. * @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: * @context: A #BusInputContext. * @purpose: Input purpose. * @hints: Input hints. */ void bus_input_context_set_content_type (BusInputContext *context, guint purpose, guint hints); /** * bus_input_context_commit_text: * @context: A #BusInputContext. * @text: A committed text. */ void bus_input_context_commit_text (BusInputContext *context, IBusText *text); /** * bus_input_context_commit_text: * @context: A #BusInputContext. * @text: A committed text. * @use_extension: Use an extension if it's %TRUE and the extension is * available. */ void bus_input_context_commit_text_use_extension (BusInputContext *context, IBusText *text, gboolean use_extension); /** * bus_input_context_set_emoji_extension: * @context: A #BusInputContext. * @extension: A #BusPanelProxy. */ void bus_input_context_set_emoji_extension (BusInputContext *context, BusPanelProxy *extension); /** * bus_input_context_update_preedit_text: * @context: A #BusInputContext. * @text: An #IBusText. * @cursor_pos: The cursor position. * @visible: %TRUE if the preedit is visible. Otherwise %FALSE. * @mode: The preedit commit mode. * @use_extension: %TRUE if preedit text is sent to the extesion at first. * * 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. */ void bus_input_context_update_preedit_text (BusInputContext *context, IBusText *text, guint cursor_pos, gboolean visible, guint mode, gboolean use_extension); /** * bus_input_context_update_lookup_table: * @context: A #BusInputContext. * @table: An #IBusTable. * @visible: %TRUE if the lookup table is visible. Otherwise %FALSE. * @is_extension: %TRUE if the lookup table is created by panel extensions. * * 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. */ void bus_input_context_update_lookup_table (BusInputContext *context, IBusLookupTable *table, gboolean visible, gboolean is_extension); /** * bus_input_context_panel_extension_received: * @context: A #BusInputContext. * @event: An #IBusExtensionEvent. * * Send An #IBusExtensionEvent callback from an extension. */ void bus_input_context_panel_extension_received (BusInputContext *context, IBusExtensionEvent *event); /** * bus_input_context_clear_preedit_text: * * Clear context->preedit_text. If the preedit mode is * IBUS_ENGINE_PREEDIT_COMMIT and with_signal is %TRUE, commit it before * clearing. * If with_signal is %FALSE, this just clears the preedit coditions * and the actual preedit is handled in ibus clients. */ void bus_input_context_clear_preedit_text (BusInputContext *context, gboolean with_signal); G_END_DECLS #endif ibus-1.5.22/bus/global.c0000644000000000000000000000230113623750431011627 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-2019 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 #include "global.h" gchar **g_argv = NULL; gchar *g_address = IBUS_SOCKET_DIR; gchar *g_cache = "auto"; gboolean g_mempro = FALSE; gboolean g_verbose = FALSE; gint g_gdbus_timeout = 15000; ibus-1.5.22/bus/org.freedesktop.IBus.service.in0000644000000000000000000000015413623750431016160 00000000000000[D-BUS Service] Name=org.freedesktop.IBus Exec=@bindir@/ibus-daemon --replace --panel disable @xim_cli_arg@ ibus-1.5.22/bus/engineproxy.h0000644000000000000000000003137013623750431012753 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) 2018 Takao Fujiwara * Copyright (C) 2008-2018 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); /** * bus_engine_proxy_panel_extension_received: * @engine: A #BusEngineProxy. * @event: An #IBusExtensionEvent. * * Send an #IBusExtensionEvent to the engine. */ void bus_engine_proxy_panel_extension_received (BusEngineProxy *engine, IBusExtensionEvent *event); /** * bus_engine_proxy_panel_extension_register_keys: * @engine: A #BusEngineProxy. * @parameters: A #GVariant array which includes the name and shortcut keys. * * Send shortcut keys to the engine to enable the extension. */ void bus_engine_proxy_panel_extension_register_keys (BusEngineProxy *engine, GVariant *parameters); G_END_DECLS #endif ibus-1.5.22/bus/Makefile.in0000644000000000000000000032534713623751263012316 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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) 2013-2018 Takao Fujiwara # Copyright (c) 2007-2018 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_EMOJI_DICT_TRUE@am__append_1 = -DEMOJI_DICT @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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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)$(dbusservicedir)" \ "$(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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/ibus_daemon-component.Po \ ./$(DEPDIR)/ibus_daemon-connection.Po \ ./$(DEPDIR)/ibus_daemon-dbusimpl.Po \ ./$(DEPDIR)/ibus_daemon-engineproxy.Po \ ./$(DEPDIR)/ibus_daemon-factoryproxy.Po \ ./$(DEPDIR)/ibus_daemon-global.Po \ ./$(DEPDIR)/ibus_daemon-ibusimpl.Po \ ./$(DEPDIR)/ibus_daemon-inputcontext.Po \ ./$(DEPDIR)/ibus_daemon-main.Po \ ./$(DEPDIR)/ibus_daemon-marshalers.Po \ ./$(DEPDIR)/ibus_daemon-matchrule.Po \ ./$(DEPDIR)/ibus_daemon-panelproxy.Po \ ./$(DEPDIR)/ibus_daemon-server.Po \ ./$(DEPDIR)/test_matchrule-component.Po \ ./$(DEPDIR)/test_matchrule-connection.Po \ ./$(DEPDIR)/test_matchrule-dbusimpl.Po \ ./$(DEPDIR)/test_matchrule-engineproxy.Po \ ./$(DEPDIR)/test_matchrule-factoryproxy.Po \ ./$(DEPDIR)/test_matchrule-global.Po \ ./$(DEPDIR)/test_matchrule-ibusimpl.Po \ ./$(DEPDIR)/test_matchrule-inputcontext.Po \ ./$(DEPDIR)/test_matchrule-marshalers.Po \ ./$(DEPDIR)/test_matchrule-matchrule.Po \ ./$(DEPDIR)/test_matchrule-panelproxy.Po \ ./$(DEPDIR)/test_matchrule-server.Po \ ./$(DEPDIR)/test_matchrule-test-matchrule.Po \ ./$(DEPDIR)/test_stress-test-client.Po \ ./$(DEPDIR)/test_stress-test-stress.Po 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 = $(dbusservice_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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__append_1) 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) TESTS_ENVIRONMENT = \ top_builddir=$(top_builddir) \ top_srcdir=$(top_srcdir) \ builddir=$(builddir) \ srcdir=$(srcdir) \ LD_LIBRARY_PATH="$(top_builddir)/src/.libs:$(top_builddir)/src" \ DISABLE_GUI_TESTS="$(DISABLE_GUI_TESTS)" \ DISABLE_DAEMONIZE_IN_TESTS="$(DISABLE_DAEMONIZE_IN_TESTS)" \ $(NULL) LOG_COMPILER = $(top_srcdir)/src/tests/runtest 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) \ $(dbusservice_in_files) CLEANFILES = $(man_one_DATA) $(man_one_files) $(NULL) \ $(dbusservice_DATA) 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 dbusservice_in_files = org.freedesktop.IBus.service.in dbusservice_DATA = $(dbusservice_in_files:.service.in=.service) dbusservicedir = ${datadir}/dbus-1/services 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-connection.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-dbusimpl.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-engineproxy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-factoryproxy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-global.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-ibusimpl.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-inputcontext.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-main.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-marshalers.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-matchrule.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-panelproxy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_daemon-server.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-component.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-connection.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-dbusimpl.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-engineproxy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-factoryproxy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-global.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-ibusimpl.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-inputcontext.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-marshalers.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-matchrule.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-panelproxy.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-server.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_matchrule-test-matchrule.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_stress-test-client.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_stress-test-stress.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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-dbusserviceDATA: $(dbusservice_DATA) @$(NORMAL_INSTALL) @list='$(dbusservice_DATA)'; test -n "$(dbusservicedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dbusservicedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dbusservicedir)" || 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)$(dbusservicedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dbusservicedir)" || exit $$?; \ done uninstall-dbusserviceDATA: @$(NORMAL_UNINSTALL) @list='$(dbusservice_DATA)'; test -n "$(dbusservicedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(dbusservicedir)'; $(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 # 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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)$(dbusservicedir)" "$(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 -f ./$(DEPDIR)/ibus_daemon-component.Po -rm -f ./$(DEPDIR)/ibus_daemon-connection.Po -rm -f ./$(DEPDIR)/ibus_daemon-dbusimpl.Po -rm -f ./$(DEPDIR)/ibus_daemon-engineproxy.Po -rm -f ./$(DEPDIR)/ibus_daemon-factoryproxy.Po -rm -f ./$(DEPDIR)/ibus_daemon-global.Po -rm -f ./$(DEPDIR)/ibus_daemon-ibusimpl.Po -rm -f ./$(DEPDIR)/ibus_daemon-inputcontext.Po -rm -f ./$(DEPDIR)/ibus_daemon-main.Po -rm -f ./$(DEPDIR)/ibus_daemon-marshalers.Po -rm -f ./$(DEPDIR)/ibus_daemon-matchrule.Po -rm -f ./$(DEPDIR)/ibus_daemon-panelproxy.Po -rm -f ./$(DEPDIR)/ibus_daemon-server.Po -rm -f ./$(DEPDIR)/test_matchrule-component.Po -rm -f ./$(DEPDIR)/test_matchrule-connection.Po -rm -f ./$(DEPDIR)/test_matchrule-dbusimpl.Po -rm -f ./$(DEPDIR)/test_matchrule-engineproxy.Po -rm -f ./$(DEPDIR)/test_matchrule-factoryproxy.Po -rm -f ./$(DEPDIR)/test_matchrule-global.Po -rm -f ./$(DEPDIR)/test_matchrule-ibusimpl.Po -rm -f ./$(DEPDIR)/test_matchrule-inputcontext.Po -rm -f ./$(DEPDIR)/test_matchrule-marshalers.Po -rm -f ./$(DEPDIR)/test_matchrule-matchrule.Po -rm -f ./$(DEPDIR)/test_matchrule-panelproxy.Po -rm -f ./$(DEPDIR)/test_matchrule-server.Po -rm -f ./$(DEPDIR)/test_matchrule-test-matchrule.Po -rm -f ./$(DEPDIR)/test_stress-test-client.Po -rm -f ./$(DEPDIR)/test_stress-test-stress.Po -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-dbusserviceDATA 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 -f ./$(DEPDIR)/ibus_daemon-component.Po -rm -f ./$(DEPDIR)/ibus_daemon-connection.Po -rm -f ./$(DEPDIR)/ibus_daemon-dbusimpl.Po -rm -f ./$(DEPDIR)/ibus_daemon-engineproxy.Po -rm -f ./$(DEPDIR)/ibus_daemon-factoryproxy.Po -rm -f ./$(DEPDIR)/ibus_daemon-global.Po -rm -f ./$(DEPDIR)/ibus_daemon-ibusimpl.Po -rm -f ./$(DEPDIR)/ibus_daemon-inputcontext.Po -rm -f ./$(DEPDIR)/ibus_daemon-main.Po -rm -f ./$(DEPDIR)/ibus_daemon-marshalers.Po -rm -f ./$(DEPDIR)/ibus_daemon-matchrule.Po -rm -f ./$(DEPDIR)/ibus_daemon-panelproxy.Po -rm -f ./$(DEPDIR)/ibus_daemon-server.Po -rm -f ./$(DEPDIR)/test_matchrule-component.Po -rm -f ./$(DEPDIR)/test_matchrule-connection.Po -rm -f ./$(DEPDIR)/test_matchrule-dbusimpl.Po -rm -f ./$(DEPDIR)/test_matchrule-engineproxy.Po -rm -f ./$(DEPDIR)/test_matchrule-factoryproxy.Po -rm -f ./$(DEPDIR)/test_matchrule-global.Po -rm -f ./$(DEPDIR)/test_matchrule-ibusimpl.Po -rm -f ./$(DEPDIR)/test_matchrule-inputcontext.Po -rm -f ./$(DEPDIR)/test_matchrule-marshalers.Po -rm -f ./$(DEPDIR)/test_matchrule-matchrule.Po -rm -f ./$(DEPDIR)/test_matchrule-panelproxy.Po -rm -f ./$(DEPDIR)/test_matchrule-server.Po -rm -f ./$(DEPDIR)/test_matchrule-test-matchrule.Po -rm -f ./$(DEPDIR)/test_stress-test-client.Po -rm -f ./$(DEPDIR)/test_stress-test-stress.Po -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-dbusserviceDATA \ uninstall-man_oneDATA .MAKE: all check check-am install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles 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-dbusserviceDATA 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-dbusserviceDATA 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 $@ org.freedesktop.IBus.service: org.freedesktop.IBus.service.in $(AM_V_GEN) sed -e "s|\@bindir\@|$(bindir)|" -e "s|\@xim_cli_arg\@|$(XIM_CLI_ARG)|" $< > $@.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.22/bus/factoryproxy.c0000644000000000000000000000757613623750431013163 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.22/bus/ibusimpl.h0000644000000000000000000000626713623750431012237 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.22/bus/panelproxy.h0000644000000000000000000002071513623750431012606 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) 2017-2018 Takao Fujiwara * Copyright (C) 2008-2018 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 enum { PANEL_TYPE_NONE, PANEL_TYPE_PANEL, PANEL_TYPE_EXTENSION_EMOJI } PanelType; typedef struct _BusPanelProxy BusPanelProxy; typedef struct _BusPanelProxyClass BusPanelProxyClass; GType bus_panel_proxy_get_type (void); BusPanelProxy *bus_panel_proxy_new (BusConnection *connection, PanelType panel_type); gboolean bus_panel_proxy_send_signal (BusPanelProxy *panel, const gchar *interface_name, const gchar *signal_name, GVariant *parameters, GError **error); /* 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_set_cursor_location_relative (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); PanelType bus_panel_proxy_get_panel_type (BusPanelProxy *panel); void bus_panel_proxy_panel_extension_received (BusPanelProxy *panel, IBusExtensionEvent *event); void bus_panel_proxy_process_key_event (BusPanelProxy *panel, guint keyval, guint keycode, guint state, GAsyncReadyCallback callback, gpointer user_data); void bus_panel_proxy_commit_text_received (BusPanelProxy *panel, IBusText *text); void bus_panel_proxy_candidate_clicked_lookup_table (BusPanelProxy *panel, guint index, guint button, guint state); G_END_DECLS #endif ibus-1.5.22/bus/ibusimpl.c0000644000000000000000000023576013623750431012234 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) 2011-2019 Takao Fujiwara * Copyright (C) 2008-2019 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; BusPanelProxy *emoji_extension; gboolean enable_emoji_extension; /* 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; GVariant *extension_register_keys; }; 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)); if (ibus->panel == panel) ibus->panel = NULL; else if (ibus->emoji_extension == panel) ibus->emoji_extension = NULL; else g_return_if_reached (); g_object_unref (panel); } static void bus_ibus_impl_set_panel_extension_mode (BusIBusImpl *ibus, IBusExtensionEvent *event) { gboolean is_extension = FALSE; g_return_if_fail (BUS_IS_IBUS_IMPL (ibus)); g_return_if_fail (IBUS_IS_EXTENSION_EVENT (event)); if (!ibus->emoji_extension) { g_warning ("Panel extension is not running."); return; } g_return_if_fail (BUS_IS_PANEL_PROXY (ibus->emoji_extension)); ibus->enable_emoji_extension = ibus_extension_event_is_enabled (event); is_extension = ibus_extension_event_is_extension (event); if (ibus->focused_context != NULL) { if (ibus->enable_emoji_extension) { bus_input_context_set_emoji_extension (ibus->focused_context, ibus->emoji_extension); } else { bus_input_context_set_emoji_extension (ibus->focused_context, NULL); } if (is_extension) bus_input_context_panel_extension_received (ibus->focused_context, event); } if (is_extension) return; /* Use the DBus method because it seems any DBus signal, * g_dbus_message_new_signal(), cannot be reached to the server. */ bus_panel_proxy_panel_extension_received (ibus->emoji_extension, event); } static void bus_ibus_impl_set_panel_extension_keys (BusIBusImpl *ibus, GVariant *parameters) { BusEngineProxy *engine = NULL; g_return_if_fail (BUS_IS_IBUS_IMPL (ibus)); g_return_if_fail (parameters); if (!ibus->emoji_extension) { g_warning ("Panel extension is not running."); return; } if (ibus->extension_register_keys) g_variant_unref (ibus->extension_register_keys); ibus->extension_register_keys = g_variant_ref_sink (parameters); if (ibus->focused_context != NULL) { engine = bus_input_context_get_engine (ibus->focused_context); } if (!engine) return; bus_engine_proxy_panel_extension_register_keys (engine, parameters); } static void _panel_panel_extension_cb (BusPanelProxy *panel, IBusExtensionEvent *event, BusIBusImpl *ibus) { bus_ibus_impl_set_panel_extension_mode (ibus, event); } static void _panel_panel_extension_register_keys_cb (BusInputContext *context, GVariant *parameters, BusIBusImpl *ibus) { bus_ibus_impl_set_panel_extension_keys (ibus, parameters); } static void _panel_update_preedit_text_received_cb (BusPanelProxy *panel, IBusText *text, guint cursor_pos, gboolean visible, BusIBusImpl *ibus) { g_return_if_fail (BUS_IS_IBUS_IMPL (ibus)); if (!ibus->focused_context) return; bus_input_context_update_preedit_text (ibus->focused_context, text, cursor_pos, visible, IBUS_ENGINE_PREEDIT_CLEAR, FALSE); } static void _panel_update_lookup_table_received_cb (BusPanelProxy *panel, IBusLookupTable *table, gboolean visible, BusIBusImpl *ibus) { g_return_if_fail (BUS_IS_IBUS_IMPL (ibus)); g_return_if_fail (IBUS_IS_LOOKUP_TABLE (table)); if (!ibus->focused_context) return; /* Call bus_input_context_update_lookup_table() instead of * bus_panel_proxy_update_lookup_table() for panel extensions because * bus_input_context_page_up() can call bus_panel_proxy_page_up_received(). */ bus_input_context_update_lookup_table ( ibus->focused_context, table, visible, TRUE); } static void _panel_update_auxiliary_text_received_cb (BusPanelProxy *panel, IBusText *text, gboolean visible, BusIBusImpl *ibus) { g_return_if_fail (BUS_IS_IBUS_IMPL (ibus)); g_return_if_fail (IBUS_IS_TEXT (text)); if (!ibus->panel) return; bus_panel_proxy_update_auxiliary_text ( ibus->panel, text, visible); } 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) { PanelType panel_type = PANEL_TYPE_NONE; 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)) panel_type = PANEL_TYPE_PANEL; else if (!g_strcmp0 (name, IBUS_SERVICE_PANEL_EXTENSION_EMOJI)) panel_type = PANEL_TYPE_EXTENSION_EMOJI; if (panel_type != PANEL_TYPE_NONE) { if (g_strcmp0 (new_name, "") != 0) { /* a Panel process is started. */ BusConnection *connection; BusInputContext *context = NULL; BusPanelProxy **panel = (panel_type == PANEL_TYPE_PANEL) ? &ibus->panel : &ibus->emoji_extension; if (*panel != NULL) { ibus_proxy_destroy ((IBusProxy *)(*panel)); /* panel should be NULL after destroy. See _panel_destroy_cb * for details. */ g_assert (*panel == NULL); } connection = bus_dbus_impl_get_connection_by_name (BUS_DEFAULT_DBUS, new_name); g_return_if_fail (connection != NULL); *panel = bus_panel_proxy_new (connection, panel_type); if (panel_type == PANEL_TYPE_EXTENSION_EMOJI) ibus->enable_emoji_extension = FALSE; g_signal_connect (*panel, "destroy", G_CALLBACK (_panel_destroy_cb), ibus); g_signal_connect (*panel, "panel-extension", G_CALLBACK (_panel_panel_extension_cb), ibus); g_signal_connect (*panel, "panel-extension-register-keys", G_CALLBACK ( _panel_panel_extension_register_keys_cb), ibus); g_signal_connect ( *panel, "update-preedit-text-received", G_CALLBACK (_panel_update_preedit_text_received_cb), ibus); g_signal_connect ( *panel, "update-lookup-table-received", G_CALLBACK (_panel_update_lookup_table_received_cb), ibus); g_signal_connect ( *panel, "update-auxiliary-text-received", G_CALLBACK (_panel_update_auxiliary_text_received_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 (*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 (*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->emoji_extension = 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); } static void _context_panel_extension_cb (BusInputContext *context, IBusExtensionEvent *event, BusIBusImpl *ibus) { bus_ibus_impl_set_panel_extension_mode (ibus, event); } const static struct { const gchar *name; GCallback callback; } context_signals [] = { { "panel-extension", G_CALLBACK (_context_panel_extension_cb) } }; /** * bus_ibus_impl_set_focused_context: * * Set the current focused context. */ static void bus_ibus_impl_set_focused_context (BusIBusImpl *ibus, BusInputContext *context) { gint i; BusEngineProxy *engine = NULL; guint purpose = 0; guint hints = 0; 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; } 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); /* _ic_focus_in() can be called before _ic_focus_out() is * called under the async processes of two ibus clients. * E.g. gedit is a little slower v.s. a simple GtkTextView * application is the fastest when you click a Hangul * preedit text between the applications. * preedit will be committed with focus-out in the ibus client * likes ibus-im.so * so do not commit preedit here in focus-in event. */ bus_input_context_clear_preedit_text (ibus->focused_context, FALSE); bus_input_context_set_engine (ibus->focused_context, NULL); bus_input_context_set_emoji_extension (ibus->focused_context, NULL); } } if (ibus->panel != NULL) bus_panel_proxy_focus_out (ibus->panel, ibus->focused_context); if (ibus->emoji_extension != NULL) { bus_panel_proxy_focus_out (ibus->emoji_extension, ibus->focused_context); } bus_input_context_set_emoji_extension (ibus->focused_context, NULL); bus_input_context_get_content_type (ibus->focused_context, &purpose, &hints); for (i = 0; i < G_N_ELEMENTS(context_signals); i++) { g_signal_handlers_disconnect_by_func (ibus->focused_context, context_signals[i].callback, ibus); } 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->enable_emoji_extension) { bus_input_context_set_emoji_extension (context, ibus->emoji_extension); } else { bus_input_context_set_emoji_extension (context, NULL); } } for (i = 0; i < G_N_ELEMENTS(context_signals); i++) { g_signal_connect (ibus->focused_context, context_signals[i].name, context_signals[i].callback, ibus); } if (ibus->panel != NULL) bus_panel_proxy_focus_in (ibus->panel, context); if (ibus->emoji_extension != NULL) bus_panel_proxy_focus_in (ibus->emoji_extension, 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); if (ibus->enable_emoji_extension) { bus_input_context_set_emoji_extension (ibus->focused_context, ibus->emoji_extension); } else { bus_input_context_set_emoji_extension (ibus->focused_context, NULL); } } 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); } if (ibus->emoji_extension && bus_input_context_get_capabilities (context) & IBUS_CAP_FOCUS) { bus_panel_proxy_destroy_context (ibus->emoji_extension, 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); BusEngineProxy *engine = bus_input_context_get_engine (context); 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. */ if (engine && ibus->focused_context != NULL) { g_object_ref (engine); bus_input_context_set_engine (context, NULL); bus_input_context_set_emoji_extension (context, NULL); bus_input_context_set_engine (ibus->focused_context, engine); if (ibus->enable_emoji_extension) { bus_input_context_set_emoji_extension ( ibus->focused_context, ibus->emoji_extension); } else { bus_input_context_set_emoji_extension ( ibus->focused_context, NULL); } g_object_unref (engine); } } if (engine && ibus->extension_register_keys) { bus_engine_proxy_panel_extension_register_keys ( engine, ibus->extension_register_keys); } } 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_clear_pointer (&ibus->engine_table, g_hash_table_destroy); /* g_clear_pointer() does not set the cast. */ ibus_object_destroy (IBUS_OBJECT (ibus->registry)); ibus->registry = NULL; if (ibus->extension_register_keys) g_clear_pointer (&ibus->extension_register_keys, g_variant_unref); } 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.22/bus/server.c0000644000000000000000000003053713623750431011711 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) 2011-2019 Takao Fujiwara * Copyright (C) 2008-2019 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 #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; ssize_t r; int MAXSIZE = 0xFFF; char proclnk[MAXSIZE]; char filename[MAXSIZE]; exe = g_file_read_link ("/proc/self/exe", NULL); if (exe == NULL) exe = g_strdup (BINDIR "/ibus-daemon"); /* close all fds except stdin, stdout, stderr */ for (fd = 3; fd <= sysconf (_SC_OPEN_MAX); fd ++) { errno = 0; /* only close valid fds */ if (fcntl (fd, F_GETFD) != -1 || errno != EBADF) { g_sprintf (proclnk, "/proc/self/fd/%d", fd); r = readlink (proclnk, filename, MAXSIZE); if (r < 0) { continue; } filename[r] = '\0'; /* Do not close 'anon_inode:inotify' fds, that may crash in glib */ if (g_strcmp0 (filename, "anon_inode:inotify") != 0) { 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]); g_free (exe); exit (-1); } /** * bus_allow_mechanism_cb: * @observer: A #GDBusAuthObserver. * @mechanism: The name of the mechanism. * @user_data: always %NULL. * * Check if @mechanism can be used to authenticate the other peer. * Returns: %TRUE if the peer's mechanism is allowed. */ static gboolean bus_allow_mechanism_cb (GDBusAuthObserver *observer, const gchar *mechanism, G_GNUC_UNUSED gpointer user_data) { if (g_strcmp0 (mechanism, "EXTERNAL") == 0) return TRUE; return FALSE; } /** * bus_authorize_authenticated_peer_cb: * @observer: A #GDBusAuthObserver. * @stream: A #GIOStream. * @credentials: A #GCredentials. * @user_data: always %NULL. * * Check if a peer who has already authenticated should be authorized. * Returns: %TRUE if the peer's credential is authorized. */ static gboolean bus_authorize_authenticated_peer_cb (GDBusAuthObserver *observer, GIOStream *stream, GCredentials *credentials, G_GNUC_UNUSED gpointer user_data) { gboolean authorized = FALSE; if (credentials) { GCredentials *own_credentials = g_credentials_new (); if (g_credentials_is_same_user (credentials, own_credentials, NULL)) authorized = TRUE; g_object_unref (own_credentials); } return authorized; } /** * bus_new_connection_cb: * @observer: A #GDBusAuthObserver. * @dbus_connection: A #GDBusconnection. * @user_data: always %NULL. * * Handle incoming connections. * Returns: %TRUE when the function can handle the connection. */ static gboolean bus_new_connection_cb (GDBusServer *server, GDBusConnection *dbus_connection, G_GNUC_UNUSED 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; } static void _server_connect_start_portal_cb (GObject *source_object, GAsyncResult *res, G_GNUC_UNUSED gpointer user_data) { GVariant *result; GError *error = NULL; result = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source_object), res, &error); if (result != NULL) { g_variant_unref (result); } else { g_print ("portal is not running: %s\n", error->message); g_error_free (error); } } static void bus_acquired_handler (GDBusConnection *connection, const gchar *name, G_GNUC_UNUSED gpointer user_data) { g_dbus_connection_call (connection, IBUS_SERVICE_PORTAL, IBUS_PATH_IBUS, "org.freedesktop.DBus.Peer", "Ping", g_variant_new ("()"), G_VARIANT_TYPE ("()"), G_DBUS_CALL_FLAGS_NONE, -1, NULL /* cancellable */, (GAsyncReadyCallback) _server_connect_start_portal_cb, NULL); } static gchar * _bus_extract_address (void) { gchar *socket_address = g_strdup (g_address); gchar *p; #define IF_REPLACE_VARIABLE_WITH_FUNC(variable, func, format) \ if ((p = g_strstr_len (socket_address, -1, (variable)))) { \ gchar *sub1 = g_strndup (socket_address, p - socket_address); \ gchar *sub2 = g_strdup (p + strlen (variable)); \ gchar *tmp = g_strdup_printf ("%s" format "%s", \ sub1, (func) (), sub2); \ g_free (sub1); \ g_free (sub2); \ g_free (socket_address); \ socket_address = tmp; \ } IF_REPLACE_VARIABLE_WITH_FUNC ("$XDG_RUNTIME_DIR", g_get_user_runtime_dir, "%s") else IF_REPLACE_VARIABLE_WITH_FUNC ("$XDG_CACHE_HOME", g_get_user_cache_dir, "%s") else IF_REPLACE_VARIABLE_WITH_FUNC ("$UID", getuid, "%d") #undef IF_REPLACE_VARIABLE_WITH_FUNC return socket_address; } void bus_server_init (void) { #define IBUS_UNIX_TMPDIR "unix:tmpdir=" #define IBUS_UNIX_PATH "unix:path=" #define IBUS_UNIX_ABSTRACT "unix:abstract=" #define IBUS_UNIX_DIR "unix:dir=" gchar *socket_address; GDBusServerFlags flags = G_DBUS_SERVER_FLAGS_NONE; gchar *guid; GDBusAuthObserver *observer; GError *error = NULL; gchar *unix_dir = NULL; dbus = bus_dbus_impl_get_default (); ibus = bus_ibus_impl_get_default (); bus_dbus_impl_register_object (dbus, (IBusService *)ibus); /* init server */ socket_address = _bus_extract_address (); #define IF_GET_UNIX_DIR(prefix) \ if (g_str_has_prefix (socket_address, (prefix))) { \ unix_dir = g_strdup (socket_address + strlen (prefix)); \ } IF_GET_UNIX_DIR (IBUS_UNIX_TMPDIR) else IF_GET_UNIX_DIR (IBUS_UNIX_PATH) else IF_GET_UNIX_DIR (IBUS_UNIX_ABSTRACT) else IF_GET_UNIX_DIR (IBUS_UNIX_DIR) else { g_error ("Your socket address \"%s\" does not correspond with " "one of the following formats; " IBUS_UNIX_TMPDIR "DIR, " IBUS_UNIX_PATH "FILE, " IBUS_UNIX_ABSTRACT "FILE, " IBUS_UNIX_DIR "DIR.", socket_address); } if (!g_file_test (unix_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) { /* Require mkdir for BSD system. * The mode 0700 can eliminate malicious users change the mode. * `chmod` runs for the last directory only not to change the modes * of the parent directories. E.g. "/tmp/ibus". */ if (g_mkdir_with_parents (unix_dir, 0700) != 0) { g_error ("mkdir is failed in: %s: %s", unix_dir, g_strerror (errno)); } } g_free (unix_dir); guid = g_dbus_generate_guid (); observer = g_dbus_auth_observer_new (); server = g_dbus_server_new_sync ( /* the place where the socket file lives, e.g. /tmp, * abstract namespace, etc. */ socket_address, flags, guid, observer, NULL /* cancellable */, &error); if (server == NULL) { g_error ("g_dbus_server_new_sync() is failed with address %s " "and guid %s: %s", socket_address, guid, error->message); } g_free (socket_address); g_free (guid); g_signal_connect (observer, "allow-mechanism", G_CALLBACK (bus_allow_mechanism_cb), NULL); g_signal_connect (observer, "authorize-authenticated-peer", G_CALLBACK (bus_authorize_authenticated_peer_cb), NULL); g_object_unref (observer); 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, bus_acquired_handler, NULL, NULL, NULL, NULL); #undef IF_GET_UNIX_DIR #undef IBUS_UNIX_TMPDIR #undef IBUS_UNIX_PATH #undef IBUS_UNIX_ABSTRACT #undef IBUS_UNIX_DIR } 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.22/bus/dbusimpl.h0000644000000000000000000001161413623750431012222 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.22/bus/test-stress.c0000644000000000000000000000616213623750431012700 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.22/bus/factoryproxy.h0000644000000000000000000000703013623750431013151 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.22/bus/dbusimpl.c0000644000000000000000000022265413623750431012225 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.22/bus/component.c0000644000000000000000000003215213623750431012400 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.22/bus/connection.h0000644000000000000000000001107513623750431012543 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.22/bus/test-matchrule.c0000644000000000000000000000435613623750431013344 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.22/bus/test-client.h0000644000000000000000000000546613623750431012646 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.22/bus/matchrule.h0000644000000000000000000001034413623750431012366 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.22/bus/connection.c0000644000000000000000000001746513623750431012547 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.22/bus/types.h0000644000000000000000000000205013623750431011541 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.22/bus/ibus-daemon.1.in0000644000000000000000000000354213623750431013125 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\-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.22/bus/matchrule.c0000644000000000000000000004577513623750431012401 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.22/bus/server.h0000644000000000000000000000366113623750431011714 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.22/bus/marshalers.h0000644000000000000000000001453213623751711012550 00000000000000/* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ #ifndef __BUS_MARSHAL_MARSHAL_H__ #define __BUS_MARSHAL_MARSHAL_H__ #include G_BEGIN_DECLS /* BOOLEAN: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); /* 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:VARIANT (./marshalers.list:15) */ #define bus_marshal_VOID__VARIANT g_cclosure_marshal_VOID__VARIANT /* VOID:VOID (./marshalers.list:16) */ #define bus_marshal_VOID__VOID g_cclosure_marshal_VOID__VOID G_END_DECLS #endif /* __BUS_MARSHAL_MARSHAL_H__ */ ibus-1.5.22/bus/engineproxy.c0000644000000000000000000013276613623750431012761 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) 2015-2018 Takao Fujiwara * Copyright (C) 2008-2016 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, PANEL_EXTENSION, 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); engine_signals[PANEL_EXTENSION] = g_signal_new (I_("panel-extension"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_EXTENSION_EVENT); 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; } if (g_strcmp0 (signal_name, "PanelExtension") == 0) { GVariant *arg0 = NULL; g_variant_get (parameters, "(v)", &arg0); g_return_if_fail (arg0 != NULL); IBusExtensionEvent *event = IBUS_EXTENSION_EVENT ( ibus_serializable_deserialize (arg0)); g_variant_unref (arg0); g_return_if_fail (event != NULL); g_signal_emit (engine, engine_signals[PANEL_EXTENSION], 0, event); _g_object_unref_if_floating (event); 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 { GTask *task; 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->task != NULL) { g_object_unref (data->task); } 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->task != NULL); GError *error = NULL; gchar *path = bus_factory_proxy_create_engine_finish (factory, res, &error); if (path == NULL) { g_task_return_error (data->task, error); 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_task_return_pointer (data->task, engine, NULL); 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_task_return_error(). */ 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_task_return_new_error (data->task, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Timeout was reached"); 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_task_return_new_error (data->task, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Operation was cancelled"); 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) { GTask *task; g_assert (IBUS_IS_ENGINE_DESC (desc)); g_assert (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); g_assert (callback); task = g_task_new (NULL, cancellable, callback, user_data); g_task_set_source_tag (task, bus_engine_proxy_new); if (g_cancellable_is_cancelled (cancellable)) { g_task_return_new_error (task, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Operation was cancelled"); g_object_unref (task); 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->task = task; 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_task_return_error(). */ 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) { GTask *task; gboolean had_error; BusEngineProxy *retval = NULL; g_assert (error == NULL || *error == NULL); g_assert (g_task_is_valid (res, NULL)); task = G_TASK (res); g_assert (g_task_get_source_tag (task) == bus_engine_proxy_new); /* g_task_propagate_error() is not a public API and * g_task_had_error() needs to be called before * g_task_propagate_pointer() clears task->error. */ had_error = g_task_had_error (task); retval = g_task_propagate_pointer (task, error); if (had_error) { g_assert (retval == NULL); return NULL; } return retval; } 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; } void bus_engine_proxy_panel_extension_received (BusEngineProxy *engine, IBusExtensionEvent *event) { GVariant *variant; g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (IBUS_IS_EXTENSION_EVENT (event)); variant = ibus_serializable_serialize_object ( IBUS_SERIALIZABLE (event)); g_return_if_fail (variant != NULL); g_dbus_proxy_call ((GDBusProxy *)engine, "PanelExtensionReceived", g_variant_new ("(v)", variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_engine_proxy_panel_extension_register_keys (BusEngineProxy *engine, GVariant *parameters) { g_assert (BUS_IS_ENGINE_PROXY (engine)); g_assert (parameters); g_dbus_proxy_call ((GDBusProxy *)engine, "PanelExtensionRegisterKeys", g_variant_new ("(v)", g_variant_ref (parameters)), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } 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.22/bus/marshalers.c0000644000000000000000000005071113623751711012542 00000000000000#include "marshalers.h" /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ #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 */ /* BOOLEAN:UINT,UINT,UINT (./marshalers.list:1) */ void bus_marshal_BOOLEAN__UINT_UINT_UINT (GClosure *closure, GValue *return_value, 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 arg1, guint arg2, guint arg3, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_BOOLEAN__UINT_UINT_UINT callback; 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, 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 arg1, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_OBJECT__STRING callback; 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 arg1, guint arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__INT_UINT callback; 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 arg1, gint arg2, gint arg3, gint arg4, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__INT_INT_INT_INT callback; 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,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 arg1, gboolean arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__OBJECT_BOOLEAN callback; 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 arg1, gpointer arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__OBJECT_STRING callback; 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 arg1, guint arg2, gboolean arg3, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN callback; 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 arg1, guint arg2, gboolean arg3, guint arg4, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN_UINT callback; 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 arg1, gpointer arg2, gpointer arg3, gpointer arg4, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__OBJECT_STRING_STRING_STRING callback; 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,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 arg1, gint arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__STRING_INT callback; 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 arg1, guint arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__UINT_UINT callback; 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 arg1, guint arg2, guint arg3, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__UINT_UINT_UINT callback; 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); } ibus-1.5.22/bus/global.h0000644000000000000000000000232413623750431011641 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.22/bus/main.c0000644000000000000000000003045113623750431011322 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) 2013-2018 Takao Fujiwara * Copyright (C) 2008-2018 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 #ifdef HAVE_SYS_PRCTL_H #include #endif #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 *emoji_extension = "default"; static gchar *config = "default"; static gchar *desktop = "gnome"; static gchar *panel_extension_disable_users[] = { "gdm", "gnome-initial-setup", "liveuser" }; 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" }, { "emoji-extension", 'E', 0, G_OPTION_ARG_STRING, &emoji_extension, "specify the cmdline of emoji extension program. pass 'disable' not to start an extension 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 #ifdef HAVE_SYS_PRCTL_H static void _sig_usr1_handler (int sig) { g_warning ("The parent process died."); bus_server_quit (FALSE); } #endif gint main (gint argc, gchar **argv) { int i; const gchar *username = ibus_get_user_name (); 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_warning ("--mem-profile no longer works with the GLib 2.46 or later"); } /* check uid */ { struct passwd *pwd = getpwuid (getuid ()); 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 ("Cannot 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 (); for (i = 0; i < G_N_ELEMENTS(panel_extension_disable_users); i++) { if (!g_strcmp0 (username, panel_extension_disable_users[i]) != 0) { emoji_extension = "disable"; break; } } 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); } } #ifdef EMOJI_DICT if (g_strcmp0 (emoji_extension, "default") == 0) { BusComponent *component; component = bus_ibus_impl_lookup_component_by_name ( BUS_DEFAULT_IBUS, IBUS_SERVICE_PANEL_EXTENSION); 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 (emoji_extension, "disable") != 0 && g_strcmp0 (emoji_extension, "") != 0) { if (!execute_cmdline (emoji_extension)) exit (-1); } #endif /* execute ibus xim server */ if (xim) { if (!execute_cmdline (LIBEXECDIR "/ibus-x11 --kill-daemon")) exit (-1); } if (!daemonize) { if (getppid () == 1) { g_warning ("The parent process died."); exit (0); } #ifdef HAVE_SYS_PRCTL_H /* Currently ibus-x11 detects XIOError and assume the error as the * desktop session is closed and ibus-x11 calls Exit D-Bus method to * exit ibus-daemon. But a few desktop sessions cause XError before * XIOError and GTK does not allow to bind XError by applications and * GTK calls gdk_x_error() with XError. * * E.g. GdkX11Screen calls XGetSelectionOwner() for "_XSETTINGS_S?" * atoms during the logout but the selection owner already becomes * NULL and the NULL window causes XError with * gdk_x11_window_foreign_new_for_display(). * * Since ibus-x11 exits with XError before XIOError, gnome-shell * can detects the exit of ibus-daemon a little earlier and * gnome-shell restarts ibus-daemon but gnome-shell dies soon. * Then gnome-shell dies but ibus-daemon is alive, it's a problem. * Because it causes double ibus-x11 of GDM and a login user * and double XSetSelectionOwner() is not allowed for the unique * "ibus" atom and the user cannot use XIM but not GtkIMModule. * * Probably we could fix the ibus process problem if we would fix * XError about the X selection owner or stop to restart ibus-daemon * in gonme-shell when the session is logging out. * Maybe using SessionManager.LogoutRemote() or * global.screen.get_display().get_xdisplay() * But I assume there are other scenarios to cause the problem. * * And I decided ibus-daemon always exits with the parent's death here * to avoid unexpected ibus restarts during the logout. */ if (prctl (PR_SET_PDEATHSIG, SIGUSR1)) g_printerr ("Cannot bind SIGUSR1 for parent death\n"); else signal (SIGUSR1, _sig_usr1_handler); #endif } bus_server_run (); return 0; } ibus-1.5.22/bus/panelproxy.c0000644000000000000000000011715513623750431012606 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) 2017-2018 Takao Fujiwara * Copyright (C) 2008-2018 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, COMMIT_TEXT, PANEL_EXTENSION, PANEL_EXTENSION_REGISTER_KEYS, UPDATE_PREEDIT_TEXT_RECEIVED, UPDATE_LOOKUP_TABLE_RECEIVED, UPDATE_AUXILIARY_TEXT_RECEIVED, LAST_SIGNAL, }; struct _BusPanelProxy { IBusProxy parent; /* instance members */ BusInputContext *focused_context; PanelType panel_type; }; 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); void (* commit_text) (BusPanelProxy *panel, IBusText *text); }; 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); static void bus_panel_proxy_commit_text (BusPanelProxy *panel, IBusText *text); G_DEFINE_TYPE(BusPanelProxy, bus_panel_proxy, IBUS_TYPE_PROXY) BusPanelProxy * bus_panel_proxy_new (BusConnection *connection, PanelType panel_type) { const gchar *path = NULL; GObject *obj; BusPanelProxy *panel; g_assert (BUS_IS_CONNECTION (connection)); switch (panel_type) { case PANEL_TYPE_PANEL: path = IBUS_PATH_PANEL; break; case PANEL_TYPE_EXTENSION_EMOJI: path = IBUS_PATH_PANEL_EXTENSION_EMOJI; break; default: g_return_val_if_reached (NULL); } obj = g_initable_new (BUS_TYPE_PANEL_PROXY, NULL, NULL, "g-object-path", path, "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); panel = BUS_PANEL_PROXY (obj); panel->panel_type = panel_type; return panel; } 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; class->commit_text = bus_panel_proxy_commit_text; /* 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); panel_signals[COMMIT_TEXT] = g_signal_new (I_("commit-text"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(BusPanelProxyClass, commit_text), NULL, NULL, bus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_TEXT); panel_signals[PANEL_EXTENSION] = g_signal_new (I_("panel-extension"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_EXTENSION_EVENT); panel_signals[PANEL_EXTENSION_REGISTER_KEYS] = g_signal_new (I_("panel-extension-register-keys"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, bus_marshal_VOID__VARIANT, G_TYPE_NONE, 1, G_TYPE_VARIANT); panel_signals[UPDATE_PREEDIT_TEXT_RECEIVED] = g_signal_new (I_("update-preedit-text-received"), 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); panel_signals[UPDATE_LOOKUP_TABLE_RECEIVED] = g_signal_new (I_("update-lookup-table-received"), 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); panel_signals[UPDATE_AUXILIARY_TEXT_RECEIVED] = g_signal_new (I_("update-auxiliary-text-received"), 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); } static void _g_object_unref_if_floating (gpointer instance) { if (g_object_is_floating (instance)) g_object_unref (instance); } 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; } if (g_strcmp0 ("CommitText", signal_name) == 0) { GVariant *arg0 = NULL; g_variant_get (parameters, "(v)", &arg0); g_return_if_fail (arg0); IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (arg0)); g_variant_unref (arg0); g_return_if_fail (text); g_signal_emit (panel, panel_signals[COMMIT_TEXT], 0, text); _g_object_unref_if_floating (text); return; } if (g_strcmp0 ("PanelExtension", signal_name) == 0) { GVariant *arg0 = NULL; g_variant_get (parameters, "(v)", &arg0); g_return_if_fail (arg0); IBusExtensionEvent *event = IBUS_EXTENSION_EVENT ( ibus_serializable_deserialize (arg0)); g_variant_unref (arg0); g_return_if_fail (event); g_signal_emit (panel, panel_signals[PANEL_EXTENSION], 0, event); _g_object_unref_if_floating (event); return; } if (g_strcmp0 ("PanelExtensionRegisterKeys", signal_name) == 0) { g_signal_emit (panel, panel_signals[PANEL_EXTENSION_REGISTER_KEYS], 0, parameters); return; } if (g_strcmp0 ("UpdatePreeditTextReceived", signal_name) == 0) { GVariant *variant = NULL; guint cursor_pos = 0; gboolean visible = FALSE; IBusText *text = NULL; g_variant_get (parameters, "(vub)", &variant, &cursor_pos, &visible); g_return_if_fail (variant); text = (IBusText *) ibus_serializable_deserialize (variant); g_variant_unref (variant); g_return_if_fail (text); g_signal_emit (panel, panel_signals[UPDATE_PREEDIT_TEXT_RECEIVED], 0, text, cursor_pos, visible); _g_object_unref_if_floating (text); return; } if (g_strcmp0 ("UpdateLookupTableReceived", signal_name) == 0) { GVariant *variant = NULL; gboolean visible = FALSE; IBusLookupTable *table = NULL; g_variant_get (parameters, "(vb)", &variant, &visible); g_return_if_fail (variant); table = (IBusLookupTable *) ibus_serializable_deserialize (variant); g_variant_unref (variant); g_return_if_fail (table); g_signal_emit (panel, panel_signals[UPDATE_LOOKUP_TABLE_RECEIVED], 0, table, visible); _g_object_unref_if_floating (table); return; } if (g_strcmp0 ("UpdateAuxiliaryTextReceived", signal_name) == 0) { GVariant *variant = NULL; gboolean visible = FALSE; IBusText *text = NULL; g_variant_get (parameters, "(vb)", &variant, &visible); g_return_if_fail (variant); text = (IBusText *) ibus_serializable_deserialize (variant); g_variant_unref (variant); g_return_if_fail (text); g_signal_emit (panel, panel_signals[UPDATE_AUXILIARY_TEXT_RECEIVED], 0, text, visible); _g_object_unref_if_floating (text); 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_set_cursor_location_relative (BusPanelProxy *panel, gint x, gint y, gint w, gint h) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_dbus_proxy_call ((GDBusProxy *)panel, "SetCursorLocationRelative", 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); } } static void bus_panel_proxy_commit_text (BusPanelProxy *panel, IBusText *text) { gboolean use_extension = TRUE; g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (text != NULL); if (!panel->focused_context) return; if (panel->panel_type != PANEL_TYPE_PANEL) use_extension = FALSE; bus_input_context_commit_text_use_extension (panel->focused_context, text, use_extension); } #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_set_cursor_location_relative_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_relative (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); /* The callback is called with X11 applications but * the callback is not called for extensions and panel * extensions are always calls by * bus_panel_proxy_update_preedit_text() directly * because panel extensions forward UpdatePreeditText to * UpdatePreeditTextReceived and it can be an infinite * loop. */ if (panel->panel_type != PANEL_TYPE_PANEL) return; 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 DEFINE_FUNCTION_NO_EXTENSION(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); \ \ /* The callback is called with X11 applications but \ * the callback is not called for extensions and panel \ * extensions are always calls by \ * bus_panel_proxy_update_preedit_text() directly \ * because panel extensions forward UpdatePreeditText to \ * UpdatePreeditTextReceived and it can be an infinite \ * loop. \ */ \ if (panel->panel_type != PANEL_TYPE_PANEL) \ return; \ bus_panel_proxy_##name (panel); \ } DEFINE_FUNCTION_NO_EXTENSION (show_preedit_text) DEFINE_FUNCTION_NO_EXTENSION (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 #undef DEFINE_FUNCTION_NO_EXTENSION static const struct { gchar *name; GCallback callback; } input_context_signals[] = { { "set-cursor-location", G_CALLBACK (_context_set_cursor_location_cb) }, { "set-cursor-location-relative", G_CALLBACK (_context_set_cursor_location_relative_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) { const gchar *path; guint purpose, hints; gint i; 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; 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 */ 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); } 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); } PanelType bus_panel_proxy_get_panel_type (BusPanelProxy *panel) { g_assert (BUS_IS_PANEL_PROXY (panel)); return panel->panel_type; } void bus_panel_proxy_panel_extension_received (BusPanelProxy *panel, IBusExtensionEvent *event) { GVariant *data; g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (event); data = ibus_serializable_serialize (IBUS_SERIALIZABLE (event)); g_return_if_fail (data); g_dbus_proxy_call ((GDBusProxy *)panel, "PanelExtensionReceived", g_variant_new ("(v)", data), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_panel_proxy_process_key_event (BusPanelProxy *panel, guint keyval, guint keycode, guint state, GAsyncReadyCallback callback, gpointer user_data) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_dbus_proxy_call ((GDBusProxy *)panel, "ProcessKeyEvent", g_variant_new ("(uuu)", keyval, keycode, state), G_DBUS_CALL_FLAGS_NONE, -1, NULL, callback, user_data); } void bus_panel_proxy_commit_text_received (BusPanelProxy *panel, IBusText *text) { GVariant *variant; g_assert (BUS_IS_PANEL_PROXY (panel)); g_assert (IBUS_IS_TEXT (text)); variant = ibus_serializable_serialize (IBUS_SERIALIZABLE (text)); g_dbus_proxy_call ((GDBusProxy *)panel, "CommitTextReceived", g_variant_new ("(v)", variant), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } void bus_panel_proxy_candidate_clicked_lookup_table (BusPanelProxy *panel, guint index, guint button, guint state) { g_assert (BUS_IS_PANEL_PROXY (panel)); g_dbus_proxy_call ((GDBusProxy *)panel, "CandidateClickedLookupTable", g_variant_new ("(uuu)", index, button, state), G_DBUS_CALL_FLAGS_NONE, -1, NULL, NULL, NULL); } ibus-1.5.22/bus/marshalers.list0000644000000000000000000000045113623750431013265 00000000000000BOOLEAN: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:VARIANT VOID:VOID ibus-1.5.22/bus/component.h0000644000000000000000000000764713623750431012420 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.22/bus/test-client.c0000644000000000000000000002523613623750431012636 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.22/ibus-1.0.pc.in0000644000000000000000000000046113623750431011626 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.22/conf/0000755000000000000000000000000013623751574010454 500000000000000ibus-1.5.22/conf/memconf/0000755000000000000000000000000013623751574012100 500000000000000ibus-1.5.22/conf/memconf/Makefile.am0000644000000000000000000000355013623750431014046 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.22/conf/memconf/config.c0000644000000000000000000001754113623750431013430 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.22/conf/memconf/Makefile.in0000644000000000000000000010026213623751264014062 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/ibus_memconf-config.Po \ ./$(DEPDIR)/ibus_memconf-main.Po 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_memconf-main.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 -f ./$(DEPDIR)/ibus_memconf-config.Po -rm -f ./$(DEPDIR)/ibus_memconf-main.Po -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 -f ./$(DEPDIR)/ibus_memconf-config.Po -rm -f ./$(DEPDIR)/ibus_memconf-main.Po -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 am--depfiles 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.22/conf/memconf/config.h0000644000000000000000000000366413623750431013436 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.22/conf/memconf/memconf.xml.in0000644000000000000000000000067013623750431014565 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.22/conf/memconf/main.c0000644000000000000000000000452613623750431013106 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.22/conf/Makefile.am0000644000000000000000000000204513623750431012420 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2018 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 MEMCONF_DIR = \ memconf \ $(NULL) if ENABLE_DCONF DCONF_DIR = \ dconf \ $(NULL) endif SUBDIRS = \ $(DCONF_DIR) \ $(MEMCONF_DIR) \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.22/conf/Makefile.in0000644000000000000000000005705213623751264012446 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 distdir-am 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 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ MEMCONF_DIR = \ memconf \ $(NULL) @ENABLE_DCONF_TRUE@DCONF_DIR = \ @ENABLE_DCONF_TRUE@ dconf \ @ENABLE_DCONF_TRUE@ $(NULL) SUBDIRS = \ $(DCONF_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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/conf/dconf/0000755000000000000000000000000013623751574011545 500000000000000ibus-1.5.22/conf/dconf/Makefile.am0000644000000000000000000000344713623750431013520 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.22/conf/dconf/config.c0000644000000000000000000003575613623750431013105 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 /* Use dconf_client_write_sync() instead of dconf_client_write_fast() * because dconf_client_write_fast() does not sync the data when * ibus_config_get_values() is called immediately after * ibus_config_set_value() is called. * We won't add a new API for the sync only since IBusConfig is * now deprecated and GSettings is recommended. */ retval = dconf_client_write_sync (client, gkey, value, NULL, NULL, 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.22/conf/dconf/config-private.h0000644000000000000000000000415213623750431014544 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.22/conf/dconf/Makefile.in0000644000000000000000000007714013623751264013537 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/ibus_dconf-config.Po \ ./$(DEPDIR)/ibus_dconf-main.Po 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_dconf-main.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 -f ./$(DEPDIR)/ibus_dconf-config.Po -rm -f ./$(DEPDIR)/ibus_dconf-main.Po -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 -f ./$(DEPDIR)/ibus_dconf-config.Po -rm -f ./$(DEPDIR)/ibus_dconf-main.Po -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 am--depfiles 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.22/conf/dconf/dconf.xml.in0000644000000000000000000000064413623750431013700 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.22/conf/dconf/main.c0000644000000000000000000000466713623750431012561 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.22/ui/0000755000000000000000000000000013623751706010141 500000000000000ibus-1.5.22/ui/Makefile.am0000644000000000000000000000173213623750431012112 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.22/ui/Makefile.in0000644000000000000000000005665113623751264012142 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 distdir-am 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ @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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/ui/gtk3/0000755000000000000000000000000013623751711011005 500000000000000ibus-1.5.22/ui/gtk3/candidatearea.c0000644000000000000000000016004113623751707013645 00000000000000/* candidatearea.c generated by valac 0.47.91, 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-2019 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 TYPE_THEMED_RGBA (themed_rgba_get_type ()) #define THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THEMED_RGBA, ThemedRGBA)) #define THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THEMED_RGBA, ThemedRGBAClass)) #define IS_THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THEMED_RGBA)) #define IS_THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THEMED_RGBA)) #define THEMED_RGBA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THEMED_RGBA, ThemedRGBAClass)) typedef struct _ThemedRGBA ThemedRGBA; typedef struct _ThemedRGBAClass ThemedRGBAClass; enum { CANDIDATE_AREA_0_PROPERTY, CANDIDATE_AREA_NUM_PROPERTIES }; static GParamSpec* candidate_area_properties[CANDIDATE_AREA_NUM_PROPERTIES]; #define _themed_rgba_unref0(var) ((var == NULL) ? NULL : (var = (themed_rgba_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))) #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (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; enum { CANDIDATE_AREA_CANDIDATE_CLICKED_SIGNAL, CANDIDATE_AREA_PAGE_UP_SIGNAL, CANDIDATE_AREA_PAGE_DOWN_SIGNAL, CANDIDATE_AREA_CURSOR_UP_SIGNAL, CANDIDATE_AREA_CURSOR_DOWN_SIGNAL, CANDIDATE_AREA_NUM_SIGNALS }; static guint candidate_area_signals[CANDIDATE_AREA_NUM_SIGNALS] = {0}; #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; ThemedRGBA* m_rgba; }; 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 gint CandidateArea_private_offset; static gpointer candidate_area_parent_class = NULL; GType candidate_area_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (CandidateArea, g_object_unref) gpointer themed_rgba_ref (gpointer instance); void themed_rgba_unref (gpointer instance); GParamSpec* param_spec_themed_rgba (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_themed_rgba (GValue* value, gpointer v_object); void value_take_themed_rgba (GValue* value, gpointer v_object); gpointer value_get_themed_rgba (const GValue* value); GType themed_rgba_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (ThemedRGBA, themed_rgba_unref) 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); ThemedRGBA* themed_rgba_new (GtkWidget* widget); ThemedRGBA* themed_rgba_construct (GType object_type, GtkWidget* widget); gboolean candidate_area_candidate_scrolled (CandidateArea* self, GdkEventScroll* event); gboolean candidate_area_get_vertical (CandidateArea* self); static void candidate_area_recreate_ui (CandidateArea* self); void candidate_area_set_candidates (CandidateArea* self, IBusText** candidates, gint candidates_length1, guint focus_candidate, gboolean show_cursor); void candidate_area_set_labels (CandidateArea* self, IBusText** labels, gint labels_length1); static IBusText** _vala_array_dup1 (IBusText** self, gint length); PangoAttrList* get_pango_attr_list_from_ibus_text (IBusText* text); GdkRGBA* themed_rgba_get_selected_fg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_bg (ThemedRGBA* self); static void __lambda8_ (CandidateArea* self, GtkButton* b); static void ___lambda8__gtk_button_clicked (GtkButton* _sender, gpointer self); static void __lambda9_ (CandidateArea* self, GtkButton* b); static void ___lambda9__gtk_button_clicked (GtkButton* _sender, gpointer self); static gboolean _candidate_area_candidate_scrolled_gtk_widget_scroll_event (GtkWidget* _sender, GdkEventScroll* event, gpointer self); VSeparator* vseparator_new (void); VSeparator* vseparator_construct (GType object_type); GType vseparator_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (VSeparator, g_object_unref) HSeparator* hseparator_new (void); HSeparator* hseparator_construct (GType object_type); GType hseparator_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (HSeparator, g_object_unref) 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, gint* length, gint* size, GtkLabel* value); static void _vala_array_add2 (GtkLabel** * array, gint* length, gint* size, GtkLabel* 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_add3 (GtkWidget** * array, gint* length, gint* size, GtkWidget* value); static gboolean ______lambda11_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e); static gboolean _______lambda11__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void _vala_array_add4 (GtkWidget** * array, gint* length, gint* size, GtkWidget* value); static Block3Data* block3_data_ref (Block3Data* _data3_); static void block3_data_unref (void * _userdata_); static void _vala_array_add5 (GtkLabel** * array, gint* length, gint* size, GtkLabel* value); static void _vala_array_add6 (GtkLabel** * array, gint* length, gint* size, GtkLabel* value); static gboolean ______lambda12_ (Block3Data* _data3_, GtkWidget* w, GdkEventButton* e); static gboolean _______lambda12__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void _vala_array_add7 (GtkWidget** * array, gint* length, gint* 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 GType candidate_area_get_type_once (void); 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"}; static inline gpointer candidate_area_get_instance_private (CandidateArea* self) { return G_STRUCT_MEMBER_P (self, CandidateArea_private_offset); } CandidateArea* candidate_area_construct (GType object_type, gboolean vertical) { CandidateArea * self = NULL; ThemedRGBA* _tmp0_; self = (CandidateArea*) g_object_new (object_type, NULL); candidate_area_set_vertical (self, vertical, TRUE); _tmp0_ = themed_rgba_new ((GtkWidget*) self); _themed_rgba_unref0 (self->priv->m_rgba); self->priv->m_rgba = _tmp0_; return self; } CandidateArea* candidate_area_new (gboolean vertical) { return candidate_area_construct (TYPE_CANDIDATE_AREA, vertical); } gboolean candidate_area_candidate_scrolled (CandidateArea* self, GdkEventScroll* event) { GdkScrollDirection _tmp0_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (event != NULL, FALSE); _tmp0_ = event->direction; switch (_tmp0_) { case GDK_SCROLL_UP: { g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_CURSOR_UP_SIGNAL], 0); break; } case GDK_SCROLL_DOWN: { g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_CURSOR_DOWN_SIGNAL], 0); break; } default: break; } result = TRUE; return result; } gboolean candidate_area_get_vertical (CandidateArea* self) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); result = self->priv->m_vertical; return result; } void candidate_area_set_vertical (CandidateArea* self, gboolean vertical, gboolean force) { gboolean _tmp0_ = FALSE; GtkOrientation _tmp1_ = 0; IBusText** _tmp2_; gint _tmp2__length1; g_return_if_fail (self != NULL); if (!force) { _tmp0_ = self->priv->m_vertical == vertical; } else { _tmp0_ = FALSE; } if (_tmp0_) { return; } self->priv->m_vertical = vertical; if (vertical) { _tmp1_ = GTK_ORIENTATION_VERTICAL; } else { _tmp1_ = GTK_ORIENTATION_HORIZONTAL; } gtk_orientable_set_orientation ((GtkOrientable*) self, _tmp1_); candidate_area_recreate_ui (self); _tmp2_ = self->priv->m_ibus_candidates; _tmp2__length1 = self->priv->m_ibus_candidates_length1; if (_tmp2__length1 > 0) { IBusText** _tmp3_; gint _tmp3__length1; IBusText** _tmp4_; gint _tmp4__length1; _tmp3_ = self->priv->m_ibus_candidates; _tmp3__length1 = self->priv->m_ibus_candidates_length1; self->priv->m_ibus_candidates = NULL; self->priv->m_ibus_candidates_length1 = 0; _tmp4_ = _tmp3_; _tmp4__length1 = _tmp3__length1; candidate_area_set_candidates (self, _tmp4_, (gint) _tmp3__length1, self->priv->m_focus_candidate, self->priv->m_show_cursor); _tmp4_ = (_vala_array_free (_tmp4_, _tmp4__length1, (GDestroyNotify) g_object_unref), NULL); gtk_widget_show_all ((GtkWidget*) self); } } void candidate_area_set_labels (CandidateArea* self, IBusText** labels, gint labels_length1) { gint i = 0; g_return_if_fail (self != NULL); { gboolean _tmp0_ = FALSE; i = 0; _tmp0_ = TRUE; while (TRUE) { GtkLabel** _tmp2_; gint _tmp2__length1; GtkLabel* _tmp3_; IBusText* _tmp4_; const gchar* _tmp5_; if (!_tmp0_) { gint _tmp1_; _tmp1_ = i; i = _tmp1_ + 1; } _tmp0_ = FALSE; if (!(i < MIN (16, labels_length1))) { break; } _tmp2_ = self->priv->m_labels; _tmp2__length1 = self->priv->m_labels_length1; _tmp3_ = _tmp2_[i]; _tmp4_ = labels[i]; _tmp5_ = ibus_text_get_text (_tmp4_); gtk_label_set_text (_tmp3_, _tmp5_); } } { gboolean _tmp6_ = FALSE; _tmp6_ = TRUE; while (TRUE) { GtkLabel** _tmp8_; gint _tmp8__length1; GtkLabel* _tmp9_; const gchar* _tmp10_; if (!_tmp6_) { gint _tmp7_; _tmp7_ = i; i = _tmp7_ + 1; } _tmp6_ = FALSE; if (!(i < 16)) { break; } _tmp8_ = self->priv->m_labels; _tmp8__length1 = self->priv->m_labels_length1; _tmp9_ = _tmp8_[i]; _tmp10_ = CANDIDATE_AREA_LABELS[i]; gtk_label_set_text (_tmp9_, _tmp10_); } } } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static IBusText** _vala_array_dup1 (IBusText** self, gint length) { IBusText** result; gint i; result = g_new0 (IBusText*, length + 1); for (i = 0; i < length; i++) { IBusText* _tmp0_; _tmp0_ = _g_object_ref0 (self[i]); result[i] = _tmp0_; } return result; } void candidate_area_set_candidates (CandidateArea* self, IBusText** candidates, gint candidates_length1, guint focus_candidate, gboolean show_cursor) { IBusText** _tmp0_; gint _tmp0__length1; g_return_if_fail (self != NULL); _tmp0_ = (candidates != NULL) ? _vala_array_dup1 (candidates, candidates_length1) : ((gpointer) candidates); _tmp0__length1 = candidates_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 = _tmp0_; self->priv->m_ibus_candidates_length1 = _tmp0__length1; self->priv->_m_ibus_candidates_size_ = self->priv->m_ibus_candidates_length1; self->priv->m_focus_candidate = focus_candidate; self->priv->m_show_cursor = show_cursor; _vala_assert (candidates_length1 <= 16, "candidates.length <= 16"); { gint i = 0; i = 0; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { GtkLabel* label = NULL; GtkLabel** _tmp3_; gint _tmp3__length1; GtkLabel* _tmp4_; GtkLabel* _tmp5_; gboolean visible = FALSE; if (!_tmp1_) { gint _tmp2_; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; if (!(i < 16)) { break; } _tmp3_ = self->priv->m_candidates; _tmp3__length1 = self->priv->m_candidates_length1; _tmp4_ = _tmp3_[i]; _tmp5_ = _g_object_ref0 (_tmp4_); label = _tmp5_; visible = FALSE; if (i < candidates_length1) { PangoAttrList* attrs = NULL; IBusText* _tmp6_; PangoAttrList* _tmp7_; gboolean _tmp8_ = FALSE; GtkLabel* _tmp45_; IBusText* _tmp46_; const gchar* _tmp47_; GtkLabel* _tmp48_; PangoAttrList* _tmp49_; _tmp6_ = candidates[i]; _tmp7_ = get_pango_attr_list_from_ibus_text (_tmp6_); attrs = _tmp7_; if (((guint) i) == focus_candidate) { _tmp8_ = show_cursor; } else { _tmp8_ = FALSE; } if (_tmp8_) { PangoAttribute* pango_attr = NULL; ThemedRGBA* _tmp9_; GdkRGBA* _tmp10_; GdkRGBA* _tmp11_; ThemedRGBA* _tmp12_; GdkRGBA* _tmp13_; GdkRGBA* _tmp14_; ThemedRGBA* _tmp15_; GdkRGBA* _tmp16_; GdkRGBA* _tmp17_; PangoAttribute* _tmp18_; PangoAttribute* _tmp19_; PangoAttribute* _tmp20_; IBusText* _tmp21_; const gchar* _tmp22_; gint _tmp23_; gint _tmp24_; PangoAttrList* _tmp25_; PangoAttribute* _tmp26_; ThemedRGBA* _tmp27_; GdkRGBA* _tmp28_; GdkRGBA* _tmp29_; ThemedRGBA* _tmp30_; GdkRGBA* _tmp31_; GdkRGBA* _tmp32_; ThemedRGBA* _tmp33_; GdkRGBA* _tmp34_; GdkRGBA* _tmp35_; PangoAttribute* _tmp36_; PangoAttribute* _tmp37_; PangoAttribute* _tmp38_; IBusText* _tmp39_; const gchar* _tmp40_; gint _tmp41_; gint _tmp42_; PangoAttrList* _tmp43_; PangoAttribute* _tmp44_; _tmp9_ = self->priv->m_rgba; _tmp10_ = themed_rgba_get_selected_fg (_tmp9_); _tmp11_ = _tmp10_; _tmp12_ = self->priv->m_rgba; _tmp13_ = themed_rgba_get_selected_fg (_tmp12_); _tmp14_ = _tmp13_; _tmp15_ = self->priv->m_rgba; _tmp16_ = themed_rgba_get_selected_fg (_tmp15_); _tmp17_ = _tmp16_; _tmp18_ = pango_attr_foreground_new ((guint16) ((*_tmp11_).red * G_MAXUINT16), (guint16) ((*_tmp14_).green * G_MAXUINT16), (guint16) ((*_tmp17_).blue * G_MAXUINT16)); pango_attr = _tmp18_; _tmp19_ = pango_attr; _tmp19_->start_index = (guint) 0; _tmp20_ = pango_attr; _tmp21_ = candidates[i]; _tmp22_ = ibus_text_get_text (_tmp21_); _tmp23_ = strlen (_tmp22_); _tmp24_ = _tmp23_; _tmp20_->end_index = (guint) _tmp24_; _tmp25_ = attrs; _tmp26_ = pango_attr; pango_attr = NULL; pango_attr_list_insert (_tmp25_, _tmp26_); _tmp27_ = self->priv->m_rgba; _tmp28_ = themed_rgba_get_selected_bg (_tmp27_); _tmp29_ = _tmp28_; _tmp30_ = self->priv->m_rgba; _tmp31_ = themed_rgba_get_selected_bg (_tmp30_); _tmp32_ = _tmp31_; _tmp33_ = self->priv->m_rgba; _tmp34_ = themed_rgba_get_selected_bg (_tmp33_); _tmp35_ = _tmp34_; _tmp36_ = pango_attr_background_new ((guint16) ((*_tmp29_).red * G_MAXUINT16), (guint16) ((*_tmp32_).green * G_MAXUINT16), (guint16) ((*_tmp35_).blue * G_MAXUINT16)); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp36_; _tmp37_ = pango_attr; _tmp37_->start_index = (guint) 0; _tmp38_ = pango_attr; _tmp39_ = candidates[i]; _tmp40_ = ibus_text_get_text (_tmp39_); _tmp41_ = strlen (_tmp40_); _tmp42_ = _tmp41_; _tmp38_->end_index = (guint) _tmp42_; _tmp43_ = attrs; _tmp44_ = pango_attr; pango_attr = NULL; pango_attr_list_insert (_tmp43_, _tmp44_); _pango_attribute_destroy0 (pango_attr); } _tmp45_ = label; _tmp46_ = candidates[i]; _tmp47_ = ibus_text_get_text (_tmp46_); gtk_label_set_text (_tmp45_, _tmp47_); _tmp48_ = label; _tmp49_ = attrs; gtk_label_set_attributes (_tmp48_, _tmp49_); visible = TRUE; _pango_attr_list_unref0 (attrs); } else { GtkLabel* _tmp50_; GtkLabel* _tmp51_; PangoAttrList* _tmp52_; PangoAttrList* _tmp53_; _tmp50_ = label; gtk_label_set_text (_tmp50_, ""); _tmp51_ = label; _tmp52_ = pango_attr_list_new (); _tmp53_ = _tmp52_; gtk_label_set_attributes (_tmp51_, _tmp53_); _pango_attr_list_unref0 (_tmp53_); } if (self->priv->m_vertical) { GtkWidget** _tmp54_; gint _tmp54__length1; GtkWidget* _tmp55_; GtkWidget** _tmp56_; gint _tmp56__length1; GtkWidget* _tmp57_; _tmp54_ = self->priv->m_widgets; _tmp54__length1 = self->priv->m_widgets_length1; _tmp55_ = _tmp54_[i * 2]; gtk_widget_set_visible (_tmp55_, visible); _tmp56_ = self->priv->m_widgets; _tmp56__length1 = self->priv->m_widgets_length1; _tmp57_ = _tmp56_[(i * 2) + 1]; gtk_widget_set_visible (_tmp57_, visible); } else { GtkWidget** _tmp58_; gint _tmp58__length1; GtkWidget* _tmp59_; _tmp58_ = self->priv->m_widgets; _tmp58__length1 = self->priv->m_widgets_length1; _tmp59_ = _tmp58_[i]; gtk_widget_set_visible (_tmp59_, visible); } _g_object_unref0 (label); } } } } static void __lambda8_ (CandidateArea* self, GtkButton* b) { g_return_if_fail (b != NULL); g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_PAGE_UP_SIGNAL], 0); } static void ___lambda8__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda8_ ((CandidateArea*) self, _sender); } static void __lambda9_ (CandidateArea* self, GtkButton* b) { g_return_if_fail (b != NULL); g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_PAGE_DOWN_SIGNAL], 0); } static void ___lambda9__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda9_ ((CandidateArea*) self, _sender); } static gboolean _candidate_area_candidate_scrolled_gtk_widget_scroll_event (GtkWidget* _sender, GdkEventScroll* event, gpointer self) { gboolean result; result = candidate_area_candidate_scrolled ((CandidateArea*) self, event); return result; } 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, gint* length, gint* 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, gint* length, gint* 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 ______lambda10_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e) { Block1Data* _data1_; CandidateArea* self; GdkModifierType _tmp0_; gboolean result = FALSE; _data1_ = _data2_->_data1_; self = _data1_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = e->state; g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_CANDIDATE_CLICKED_SIGNAL], 0, (guint) _data1_->i, e->button, (guint) _tmp0_); 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_add3 (GtkWidget** * array, gint* length, gint* 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 ______lambda11_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e) { Block1Data* _data1_; CandidateArea* self; GdkModifierType _tmp0_; gboolean result = FALSE; _data1_ = _data2_->_data1_; self = _data1_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = e->state; g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_CANDIDATE_CLICKED_SIGNAL], 0, (guint) _data2_->index, e->button, (guint) _tmp0_); 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_add4 (GtkWidget** * array, gint* length, gint* 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, gint* length, gint* 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, gint* length, gint* 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 ______lambda12_ (Block3Data* _data3_, GtkWidget* w, GdkEventButton* e) { CandidateArea* self; GdkModifierType _tmp0_; gboolean result = FALSE; self = _data3_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = e->state; g_signal_emit (self, candidate_area_signals[CANDIDATE_AREA_CANDIDATE_CLICKED_SIGNAL], 0, (guint) _data3_->index, e->button, (guint) _tmp0_); result = TRUE; return result; } static gboolean _______lambda12__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = ______lambda12_ (self, _sender, event); return result; } static void _vala_array_add7 (GtkWidget** * array, gint* length, gint* 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_; GtkButton* prev_button = NULL; GtkButton* _tmp3_; GtkButton* _tmp4_; GtkButton* _tmp5_; GtkOrientation _tmp6_; GtkOrientation _tmp7_; const gchar* _tmp8_; GtkImage* _tmp9_; GtkImage* _tmp10_; GtkButton* _tmp11_; GtkButton* next_button = NULL; GtkButton* _tmp12_; GtkButton* _tmp13_; GtkButton* _tmp14_; GtkOrientation _tmp15_; GtkOrientation _tmp16_; const gchar* _tmp17_; GtkImage* _tmp18_; GtkImage* _tmp19_; GtkButton* _tmp20_; 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_; GtkWidget* w = NULL; _tmp1_ = _g_object_ref0 ((GtkWidget*) w_it->data); w = _tmp1_; { GtkWidget* _tmp2_; _tmp2_ = w; gtk_widget_destroy (_tmp2_); _g_object_unref0 (w); } } (w_collection == NULL) ? NULL : (w_collection = (g_list_free (w_collection), NULL)); } _tmp3_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp3_); prev_button = _tmp3_; _tmp4_ = prev_button; g_signal_connect_object (_tmp4_, "clicked", (GCallback) ___lambda8__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_, (GtkIconSize) 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) ___lambda9__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_, (GtkIconSize) 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); if (self->priv->m_vertical) { GtkEventBox* container_ebox = NULL; GtkEventBox* _tmp21_; GtkEventBox* _tmp22_; GtkEventBox* _tmp23_; GtkEventBox* _tmp24_; GtkBox* vbox = NULL; GtkBox* _tmp25_; GtkEventBox* _tmp26_; GtkBox* _tmp27_; GtkBox* candidates_hbox = NULL; GtkBox* _tmp28_; GtkBox* _tmp29_; GtkBox* _tmp30_; GtkBox* labels_vbox = NULL; GtkBox* _tmp31_; GtkBox* _tmp32_; GtkBox* candidates_vbox = NULL; GtkBox* _tmp33_; GtkBox* _tmp34_; GtkBox* _tmp35_; GtkBox* _tmp36_; GtkBox* _tmp37_; VSeparator* _tmp38_; VSeparator* _tmp39_; GtkBox* _tmp40_; GtkBox* _tmp41_; GtkBox* _tmp42_; HSeparator* _tmp43_; HSeparator* _tmp44_; GtkBox* buttons_hbox = NULL; GtkBox* _tmp45_; GtkLabel* state_label = NULL; GtkLabel* _tmp46_; GtkLabel* _tmp47_; GtkBox* _tmp48_; GtkLabel* _tmp49_; GtkBox* _tmp50_; GtkButton* _tmp51_; GtkBox* _tmp52_; GtkButton* _tmp53_; GtkBox* _tmp54_; GtkBox* _tmp55_; GtkLabel** _tmp56_; GtkLabel** _tmp57_; GtkWidget** _tmp58_; _tmp21_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp21_); container_ebox = _tmp21_; _tmp22_ = container_ebox; gtk_widget_add_events ((GtkWidget*) _tmp22_, (gint) GDK_SCROLL_MASK); _tmp23_ = container_ebox; g_signal_connect_object ((GtkWidget*) _tmp23_, "scroll-event", (GCallback) _candidate_area_candidate_scrolled_gtk_widget_scroll_event, self, 0); _tmp24_ = container_ebox; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp24_); _tmp25_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp25_); vbox = _tmp25_; _tmp26_ = container_ebox; _tmp27_ = vbox; gtk_container_add ((GtkContainer*) _tmp26_, (GtkWidget*) _tmp27_); _tmp28_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp28_); candidates_hbox = _tmp28_; _tmp29_ = vbox; _tmp30_ = candidates_hbox; gtk_box_pack_start (_tmp29_, (GtkWidget*) _tmp30_, FALSE, FALSE, (guint) 0); _tmp31_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp31_); labels_vbox = _tmp31_; _tmp32_ = labels_vbox; gtk_box_set_homogeneous (_tmp32_, TRUE); _tmp33_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp33_); candidates_vbox = _tmp33_; _tmp34_ = candidates_vbox; gtk_box_set_homogeneous (_tmp34_, TRUE); _tmp35_ = candidates_hbox; _tmp36_ = labels_vbox; gtk_box_pack_start (_tmp35_, (GtkWidget*) _tmp36_, FALSE, FALSE, (guint) 4); _tmp37_ = candidates_hbox; _tmp38_ = vseparator_new (); g_object_ref_sink (_tmp38_); _tmp39_ = _tmp38_; gtk_box_pack_start (_tmp37_, (GtkWidget*) _tmp39_, FALSE, FALSE, (guint) 0); _g_object_unref0 (_tmp39_); _tmp40_ = candidates_hbox; _tmp41_ = candidates_vbox; gtk_box_pack_start (_tmp40_, (GtkWidget*) _tmp41_, TRUE, TRUE, (guint) 4); _tmp42_ = vbox; _tmp43_ = hseparator_new (); g_object_ref_sink (_tmp43_); _tmp44_ = _tmp43_; gtk_box_pack_start (_tmp42_, (GtkWidget*) _tmp44_, FALSE, FALSE, (guint) 0); _g_object_unref0 (_tmp44_); _tmp45_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp45_); buttons_hbox = _tmp45_; _tmp46_ = (GtkLabel*) gtk_label_new (NULL); g_object_ref_sink (_tmp46_); state_label = _tmp46_; _tmp47_ = state_label; gtk_widget_set_size_request ((GtkWidget*) _tmp47_, 20, -1); _tmp48_ = buttons_hbox; _tmp49_ = state_label; gtk_box_pack_start (_tmp48_, (GtkWidget*) _tmp49_, TRUE, TRUE, (guint) 0); _tmp50_ = buttons_hbox; _tmp51_ = prev_button; gtk_box_pack_start (_tmp50_, (GtkWidget*) _tmp51_, FALSE, FALSE, (guint) 0); _tmp52_ = buttons_hbox; _tmp53_ = next_button; gtk_box_pack_start (_tmp52_, (GtkWidget*) _tmp53_, FALSE, FALSE, (guint) 0); _tmp54_ = vbox; _tmp55_ = buttons_hbox; gtk_box_pack_start (_tmp54_, (GtkWidget*) _tmp55_, FALSE, FALSE, (guint) 0); _tmp56_ = 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 = _tmp56_; self->priv->m_labels_length1 = 0; self->priv->_m_labels_size_ = self->priv->m_labels_length1; _tmp57_ = 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 = _tmp57_; self->priv->m_candidates_length1 = 0; self->priv->_m_candidates_size_ = self->priv->m_candidates_length1; _tmp58_ = 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 = _tmp58_; 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 _tmp59_ = FALSE; _tmp59_ = TRUE; while (TRUE) { Block2Data* _data2_; GtkLabel* label = NULL; const gchar* _tmp61_; GtkLabel* _tmp62_; GtkLabel* _tmp63_; GtkLabel* _tmp64_; GtkLabel* _tmp65_; GtkLabel** _tmp66_; gint _tmp66__length1; GtkLabel* _tmp67_; GtkLabel* _tmp68_; GtkLabel* candidate = NULL; GtkLabel* _tmp69_; GtkLabel* _tmp70_; GtkLabel* _tmp71_; GtkLabel* _tmp72_; GtkLabel** _tmp73_; gint _tmp73__length1; GtkLabel* _tmp74_; GtkLabel* _tmp75_; GtkLabel* _tmp76_; GtkLabel* _tmp77_; GtkLabel* _tmp78_; GtkLabel* _tmp79_; GtkEventBox* label_ebox = NULL; GtkEventBox* _tmp80_; GtkEventBox* _tmp81_; GtkEventBox* _tmp82_; GtkEventBox* _tmp83_; GtkLabel* _tmp84_; GtkBox* _tmp85_; GtkEventBox* _tmp86_; GtkWidget** _tmp87_; gint _tmp87__length1; GtkEventBox* _tmp88_; GtkWidget* _tmp89_; GtkEventBox* candidate_ebox = NULL; GtkEventBox* _tmp90_; GtkEventBox* _tmp91_; GtkEventBox* _tmp92_; GtkEventBox* _tmp93_; GtkLabel* _tmp94_; GtkBox* _tmp95_; GtkEventBox* _tmp96_; GtkWidget** _tmp97_; gint _tmp97__length1; GtkEventBox* _tmp98_; GtkWidget* _tmp99_; _data2_ = g_slice_new0 (Block2Data); _data2_->_ref_count_ = 1; _data2_->_data1_ = block1_data_ref (_data1_); if (!_tmp59_) { gint _tmp60_; _tmp60_ = _data1_->i; _data1_->i = _tmp60_ + 1; } _tmp59_ = FALSE; if (!(_data1_->i < 16)) { block2_data_unref (_data2_); _data2_ = NULL; break; } _tmp61_ = CANDIDATE_AREA_LABELS[_data1_->i]; _tmp62_ = (GtkLabel*) gtk_label_new (_tmp61_); g_object_ref_sink (_tmp62_); label = _tmp62_; _tmp63_ = label; gtk_widget_set_halign ((GtkWidget*) _tmp63_, GTK_ALIGN_START); _tmp64_ = label; gtk_widget_set_valign ((GtkWidget*) _tmp64_, GTK_ALIGN_CENTER); _tmp65_ = label; gtk_widget_show ((GtkWidget*) _tmp65_); _tmp66_ = self->priv->m_labels; _tmp66__length1 = self->priv->m_labels_length1; _tmp67_ = label; _tmp68_ = _g_object_ref0 (_tmp67_); _vala_array_add1 (&self->priv->m_labels, &self->priv->m_labels_length1, &self->priv->_m_labels_size_, _tmp68_); _tmp69_ = (GtkLabel*) gtk_label_new ("test"); g_object_ref_sink (_tmp69_); candidate = _tmp69_; _tmp70_ = candidate; gtk_widget_set_halign ((GtkWidget*) _tmp70_, GTK_ALIGN_START); _tmp71_ = candidate; gtk_widget_set_valign ((GtkWidget*) _tmp71_, GTK_ALIGN_CENTER); _tmp72_ = candidate; gtk_widget_show ((GtkWidget*) _tmp72_); _tmp73_ = self->priv->m_candidates; _tmp73__length1 = self->priv->m_candidates_length1; _tmp74_ = candidate; _tmp75_ = _g_object_ref0 (_tmp74_); _vala_array_add2 (&self->priv->m_candidates, &self->priv->m_candidates_length1, &self->priv->_m_candidates_size_, _tmp75_); _tmp76_ = label; gtk_widget_set_margin_start ((GtkWidget*) _tmp76_, 8); _tmp77_ = label; gtk_widget_set_margin_end ((GtkWidget*) _tmp77_, 8); _tmp78_ = candidate; gtk_widget_set_margin_start ((GtkWidget*) _tmp78_, 8); _tmp79_ = candidate; gtk_widget_set_margin_end ((GtkWidget*) _tmp79_, 8); _data2_->index = _data1_->i; _tmp80_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp80_); label_ebox = _tmp80_; _tmp81_ = label_ebox; gtk_widget_set_no_show_all ((GtkWidget*) _tmp81_, TRUE); _tmp82_ = label_ebox; g_signal_connect_data ((GtkWidget*) _tmp82_, "button-press-event", (GCallback) _______lambda10__gtk_widget_button_press_event, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); _tmp83_ = label_ebox; _tmp84_ = label; gtk_container_add ((GtkContainer*) _tmp83_, (GtkWidget*) _tmp84_); _tmp85_ = labels_vbox; _tmp86_ = label_ebox; gtk_box_pack_start (_tmp85_, (GtkWidget*) _tmp86_, FALSE, FALSE, (guint) 2); _tmp87_ = self->priv->m_widgets; _tmp87__length1 = self->priv->m_widgets_length1; _tmp88_ = label_ebox; _tmp89_ = _g_object_ref0 ((GtkWidget*) _tmp88_); _vala_array_add3 (&self->priv->m_widgets, &self->priv->m_widgets_length1, &self->priv->_m_widgets_size_, _tmp89_); _tmp90_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp90_); candidate_ebox = _tmp90_; _tmp91_ = candidate_ebox; gtk_widget_set_no_show_all ((GtkWidget*) _tmp91_, TRUE); _tmp92_ = candidate_ebox; g_signal_connect_data ((GtkWidget*) _tmp92_, "button-press-event", (GCallback) _______lambda11__gtk_widget_button_press_event, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); _tmp93_ = candidate_ebox; _tmp94_ = candidate; gtk_container_add ((GtkContainer*) _tmp93_, (GtkWidget*) _tmp94_); _tmp95_ = candidates_vbox; _tmp96_ = candidate_ebox; gtk_box_pack_start (_tmp95_, (GtkWidget*) _tmp96_, FALSE, FALSE, (guint) 2); _tmp97_ = self->priv->m_widgets; _tmp97__length1 = self->priv->m_widgets_length1; _tmp98_ = candidate_ebox; _tmp99_ = _g_object_ref0 ((GtkWidget*) _tmp98_); _vala_array_add4 (&self->priv->m_widgets, &self->priv->m_widgets_length1, &self->priv->_m_widgets_size_, _tmp99_); _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); _g_object_unref0 (vbox); _g_object_unref0 (container_ebox); } else { GtkEventBox* container_ebox = NULL; GtkEventBox* _tmp100_; GtkEventBox* _tmp101_; GtkEventBox* _tmp102_; GtkEventBox* _tmp103_; GtkBox* hbox = NULL; GtkBox* _tmp104_; GtkEventBox* _tmp105_; GtkBox* _tmp106_; GtkLabel** _tmp107_; GtkLabel** _tmp108_; GtkWidget** _tmp109_; GtkBox* _tmp143_; VSeparator* _tmp144_; VSeparator* _tmp145_; GtkBox* _tmp146_; GtkButton* _tmp147_; GtkBox* _tmp148_; GtkButton* _tmp149_; _tmp100_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp100_); container_ebox = _tmp100_; _tmp101_ = container_ebox; gtk_widget_add_events ((GtkWidget*) _tmp101_, (gint) GDK_SCROLL_MASK); _tmp102_ = container_ebox; g_signal_connect_object ((GtkWidget*) _tmp102_, "scroll-event", (GCallback) _candidate_area_candidate_scrolled_gtk_widget_scroll_event, self, 0); _tmp103_ = container_ebox; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp103_); _tmp104_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp104_); hbox = _tmp104_; _tmp105_ = container_ebox; _tmp106_ = hbox; gtk_container_add ((GtkContainer*) _tmp105_, (GtkWidget*) _tmp106_); _tmp107_ = 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 = _tmp107_; self->priv->m_labels_length1 = 0; self->priv->_m_labels_size_ = self->priv->m_labels_length1; _tmp108_ = 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 = _tmp108_; self->priv->m_candidates_length1 = 0; self->priv->_m_candidates_size_ = self->priv->m_candidates_length1; _tmp109_ = 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 = _tmp109_; self->priv->m_widgets_length1 = 0; self->priv->_m_widgets_size_ = self->priv->m_widgets_length1; { gint i = 0; i = 0; { gboolean _tmp110_ = FALSE; _tmp110_ = TRUE; while (TRUE) { Block3Data* _data3_; GtkLabel* label = NULL; const gchar* _tmp112_; GtkLabel* _tmp113_; GtkLabel* _tmp114_; GtkLabel* _tmp115_; GtkLabel* _tmp116_; GtkLabel** _tmp117_; gint _tmp117__length1; GtkLabel* _tmp118_; GtkLabel* _tmp119_; GtkLabel* candidate = NULL; GtkLabel* _tmp120_; GtkLabel* _tmp121_; GtkLabel* _tmp122_; GtkLabel* _tmp123_; GtkLabel** _tmp124_; gint _tmp124__length1; GtkLabel* _tmp125_; GtkLabel* _tmp126_; GtkBox* candidate_hbox = NULL; GtkBox* _tmp127_; GtkBox* _tmp128_; GtkBox* _tmp129_; GtkLabel* _tmp130_; GtkBox* _tmp131_; GtkLabel* _tmp132_; GtkEventBox* ebox = NULL; GtkEventBox* _tmp133_; GtkEventBox* _tmp134_; GtkEventBox* _tmp135_; GtkEventBox* _tmp136_; GtkBox* _tmp137_; GtkBox* _tmp138_; GtkEventBox* _tmp139_; GtkWidget** _tmp140_; gint _tmp140__length1; GtkEventBox* _tmp141_; GtkWidget* _tmp142_; _data3_ = g_slice_new0 (Block3Data); _data3_->_ref_count_ = 1; _data3_->self = g_object_ref (self); if (!_tmp110_) { gint _tmp111_; _tmp111_ = i; i = _tmp111_ + 1; } _tmp110_ = FALSE; if (!(i < 16)) { block3_data_unref (_data3_); _data3_ = NULL; break; } _tmp112_ = CANDIDATE_AREA_LABELS[i]; _tmp113_ = (GtkLabel*) gtk_label_new (_tmp112_); g_object_ref_sink (_tmp113_); label = _tmp113_; _tmp114_ = label; gtk_widget_set_halign ((GtkWidget*) _tmp114_, GTK_ALIGN_START); _tmp115_ = label; gtk_widget_set_valign ((GtkWidget*) _tmp115_, GTK_ALIGN_CENTER); _tmp116_ = label; gtk_widget_show ((GtkWidget*) _tmp116_); _tmp117_ = self->priv->m_labels; _tmp117__length1 = self->priv->m_labels_length1; _tmp118_ = label; _tmp119_ = _g_object_ref0 (_tmp118_); _vala_array_add5 (&self->priv->m_labels, &self->priv->m_labels_length1, &self->priv->_m_labels_size_, _tmp119_); _tmp120_ = (GtkLabel*) gtk_label_new ("test"); g_object_ref_sink (_tmp120_); candidate = _tmp120_; _tmp121_ = candidate; gtk_widget_set_halign ((GtkWidget*) _tmp121_, GTK_ALIGN_START); _tmp122_ = candidate; gtk_widget_set_valign ((GtkWidget*) _tmp122_, GTK_ALIGN_CENTER); _tmp123_ = candidate; gtk_widget_show ((GtkWidget*) _tmp123_); _tmp124_ = self->priv->m_candidates; _tmp124__length1 = self->priv->m_candidates_length1; _tmp125_ = candidate; _tmp126_ = _g_object_ref0 (_tmp125_); _vala_array_add6 (&self->priv->m_candidates, &self->priv->m_candidates_length1, &self->priv->_m_candidates_size_, _tmp126_); _tmp127_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp127_); candidate_hbox = _tmp127_; _tmp128_ = candidate_hbox; gtk_widget_show ((GtkWidget*) _tmp128_); _tmp129_ = candidate_hbox; _tmp130_ = label; gtk_box_pack_start (_tmp129_, (GtkWidget*) _tmp130_, FALSE, FALSE, (guint) 2); _tmp131_ = candidate_hbox; _tmp132_ = candidate; gtk_box_pack_start (_tmp131_, (GtkWidget*) _tmp132_, FALSE, FALSE, (guint) 2); _data3_->index = i; _tmp133_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp133_); ebox = _tmp133_; _tmp134_ = ebox; gtk_widget_set_no_show_all ((GtkWidget*) _tmp134_, TRUE); _tmp135_ = ebox; g_signal_connect_data ((GtkWidget*) _tmp135_, "button-press-event", (GCallback) _______lambda12__gtk_widget_button_press_event, block3_data_ref (_data3_), (GClosureNotify) block3_data_unref, 0); _tmp136_ = ebox; _tmp137_ = candidate_hbox; gtk_container_add ((GtkContainer*) _tmp136_, (GtkWidget*) _tmp137_); _tmp138_ = hbox; _tmp139_ = ebox; gtk_box_pack_start (_tmp138_, (GtkWidget*) _tmp139_, FALSE, FALSE, (guint) 4); _tmp140_ = self->priv->m_widgets; _tmp140__length1 = self->priv->m_widgets_length1; _tmp141_ = ebox; _tmp142_ = _g_object_ref0 ((GtkWidget*) _tmp141_); _vala_array_add7 (&self->priv->m_widgets, &self->priv->m_widgets_length1, &self->priv->_m_widgets_size_, _tmp142_); _g_object_unref0 (ebox); _g_object_unref0 (candidate_hbox); _g_object_unref0 (candidate); _g_object_unref0 (label); block3_data_unref (_data3_); _data3_ = NULL; } } } _tmp143_ = hbox; _tmp144_ = vseparator_new (); g_object_ref_sink (_tmp144_); _tmp145_ = _tmp144_; gtk_box_pack_start (_tmp143_, (GtkWidget*) _tmp145_, FALSE, FALSE, (guint) 0); _g_object_unref0 (_tmp145_); _tmp146_ = hbox; _tmp147_ = prev_button; gtk_box_pack_start (_tmp146_, (GtkWidget*) _tmp147_, FALSE, FALSE, (guint) 0); _tmp148_ = hbox; _tmp149_ = next_button; gtk_box_pack_start (_tmp148_, (GtkWidget*) _tmp149_, FALSE, FALSE, (guint) 0); _g_object_unref0 (hbox); _g_object_unref0 (container_ebox); } _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, gpointer klass_data) { candidate_area_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &CandidateArea_private_offset); G_OBJECT_CLASS (klass)->finalize = candidate_area_finalize; candidate_area_signals[CANDIDATE_AREA_CANDIDATE_CLICKED_SIGNAL] = 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); candidate_area_signals[CANDIDATE_AREA_PAGE_UP_SIGNAL] = g_signal_new ("page-up", TYPE_CANDIDATE_AREA, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); candidate_area_signals[CANDIDATE_AREA_PAGE_DOWN_SIGNAL] = g_signal_new ("page-down", TYPE_CANDIDATE_AREA, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); candidate_area_signals[CANDIDATE_AREA_CURSOR_UP_SIGNAL] = g_signal_new ("cursor-up", TYPE_CANDIDATE_AREA, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); candidate_area_signals[CANDIDATE_AREA_CURSOR_DOWN_SIGNAL] = 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, gpointer klass) { self->priv = candidate_area_get_instance_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); _themed_rgba_unref0 (self->priv->m_rgba); G_OBJECT_CLASS (candidate_area_parent_class)->finalize (obj); } static GType candidate_area_get_type_once (void) { 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); CandidateArea_private_offset = g_type_add_instance_private (candidate_area_type_id, sizeof (CandidateAreaPrivate)); return candidate_area_type_id; } 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)) { GType candidate_area_type_id; candidate_area_type_id = candidate_area_get_type_once (); 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)) { gint 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.22/ui/gtk3/Makefile.am0000644000000000000000000002026413623750431012763 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2015-2019 Takao Fujwiara # Copyright (c) 2007-2019 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 %.xml: %.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)\" \ -DPKGDATADIR=\"$(pkgdatadir)\" \ -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_APPINDICATOR AM_VALAFLAGS += --define=INDICATOR endif if ENABLE_APPINDICATOR_ENGINE_ICON AM_VALAFLAGS += --define=INDICATOR_ENGINE_ICON endif if ENABLE_GDK3_WAYLAND AM_VALAFLAGS += --pkg=gdk-wayland --define=USE_GDK_WAYLAND endif libexec_PROGRAMS = ibus-ui-gtk3 ibus_ui_gtk3_SOURCES = \ application.vala \ bindingcommon.vala \ candidatearea.vala \ candidatepanel.vala \ emojier.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) MAINTAINERCLEANFILES = emoji_headers = \ ibusemojidialog.h \ $(NULL) man_seven_in_files = ibus-emoji.7.in # 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 = \ $(emoji_headers) \ $(man_seven_in_files) \ emojierapp.vala \ extension.vala \ gtkextension.xml.in \ gtkpanel.xml.in \ notification-item.xml \ notification-watcher.xml \ ibus-ui-emojier.desktop.in \ ibus-extension-gtk3.desktop.in \ panelbinding.vala \ $(NULL) if ENABLE_EMOJI_DICT AM_VALAFLAGS += --define=EMOJI_DICT libexec_PROGRAMS += ibus-ui-emojier ibus_ui_emojier_VALASOURCES = \ emojierapp.vala \ emojier.vala \ iconwidget.vala \ separator.vala \ pango.vala \ $(NULL) ibus_ui_emojier_SOURCES = \ $(ibus_ui_emojier_VALASOURCES:.vala=.c) \ $(NULL) ibus_ui_emojier_LDADD = \ $(AM_LDADD) \ $(NULL) ibus_ui_emojier_VALAFLAGS = \ $(AM_VALAFLAGS) \ $(NULL) # This line and foo_VALASOURCES line can delete the duplicated entries # of emojier.c: emojier.vala emojierapp.c: $(ibus_ui_emojier_VALASOURCES) $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) \ $(VALAFLAGS) -C $(ibus_ui_emojier_VALASOURCES) $(NULL) # make dist creates .c files in a different srcdir emojierapp.o: $(srcdir)/emojierapp.c $(AM_V_CC)source='$<' object='$@' libtool=no \ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ $(AM_V_CC_no)$(COMPILE) -c -o $@ $< $(NULL) MAINTAINERCLEANFILES += emojierapp.c component_DATA += gtkextension.xml CLEANFILES += gtkextension.xml libexec_PROGRAMS += ibus-extension-gtk3 ibus_extension_gtk3_VALASOURCES = \ bindingcommon.vala \ emojier.vala \ extension.vala \ iconwidget.vala \ keybindingmanager.vala \ panelbinding.vala \ pango.vala \ $(NULL) ibus_extension_gtk3_SOURCES = \ $(ibus_extension_gtk3_VALASOURCES:.vala=.c) \ $(NULL) ibus_extension_gtk3_LDADD = \ $(AM_LDADD) \ $(NULL) ibus_extension_gtk3_VALAFLAGS = \ $(AM_VALAFLAGS) \ $(NULL) # This line and foo_VALASOURCES line can delete the duplicated entries # of emojier.c: emojier.vala extension.c: $(ibus_extension_gtk3_VALASOURCES) $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) \ $(VALAFLAGS) -C $(ibus_extension_gtk3_VALASOURCES) $(NULL) # make dist creates .c files in a different srcdir extension.o: $(srcdir)/extension.c $(AM_V_CC)source='$<' object='$@' libtool=no \ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ $(AM_V_CC_no)$(COMPILE) -c -o $@ $< $(NULL) # of emojier.c: emojier.vala panelbinding.c: $(ibus_extension_gtk3_VALASOURCES) $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) \ $(VALAFLAGS) -C $(ibus_extension_gtk3_VALASOURCES) $(NULL) # make dist creates .c files in a different srcdir panelbinding.o: $(srcdir)/panelbinding.c $(AM_V_CC)source='$<' object='$@' libtool=no \ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ $(AM_V_CC_no)$(COMPILE) -c -o $@ $< $(NULL) MAINTAINERCLEANFILES += extension.c panelbinding.c man_seven_files = $(man_seven_in_files:.7.in=.7) man_seven_DATA =$(man_seven_files:.7=.7.gz) man_sevendir = $(mandir)/man7 %.7: %.7.in $(AM_V_GEN) sed \ -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ mv $@.tmp $@ %.7.gz: %.7 $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ desktop_in_files = \ ibus-ui-emojier.desktop.in \ ibus-extension-gtk3.desktop.in \ $(NULL) desktop_notrans_files = $(desktop_in_files:.desktop.in=.desktop) desktop_DATA = \ org.freedesktop.IBus.Panel.Emojier.desktop \ org.freedesktop.IBus.Panel.Extension.Gtk3.desktop \ $(NULL) desktopdir = $(datadir)/applications %.desktop: %.desktop.in $(AM_V_GEN) sed \ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ mv $@.tmp $@ $(NULL) org.freedesktop.IBus.Panel.Emojier.desktop: ibus-ui-emojier.desktop $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ $(NULL) org.freedesktop.IBus.Panel.Extension.Gtk3.desktop: ibus-extension-gtk3.desktop $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ $(NULL) CLEANFILES += \ $(desktop_DATA) \ $(desktop_notrans_files) \ $(man_seven_DATA) \ $(man_seven_files) \ $(NULL) endif # end of ENABLE_EMOJI_DICT -include $(top_srcdir)/git.mk ibus-1.5.22/ui/gtk3/ibus-extension-gtk3.desktop.in0000644000000000000000000000016213623750431016544 00000000000000[Desktop Entry] Name=Emoji Choice Icon=ibus Exec=@libexecdir@/ibus-extension-gtk3 Type=Application NoDisplay=true ibus-1.5.22/ui/gtk3/emojier.vala0000644000000000000000000027711313623750431013235 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright (c) 2017-2019 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 IBusEmojier : Gtk.ApplicationWindow { private class EListBox : Gtk.ListBox { public EListBox() { GLib.Object( vexpand : true, halign : Gtk.Align.FILL, valign : Gtk.Align.FILL ); this.motion_notify_event.connect((e) => { #if VALA_0_24 Gdk.EventMotion pe = e; #else Gdk.EventMotion *pe = &e; #endif if (m_mouse_x == pe.x_root && m_mouse_y == pe.y_root) return false; m_mouse_x = pe.x_root; m_mouse_y = pe.y_root; var row = this.get_row_at_y((int)e.y); if (row != null) this.select_row(row); return false; }); this.enter_notify_event.connect((e) => { // avoid gtk_button_update_state() return true; }); } } private class EBoxRow : Gtk.ListBoxRow { public EBoxRow(string text) { this.text = text; } public string text { get; set; } } private class EScrolledWindow : Gtk.ScrolledWindow { public EScrolledWindow(Gtk.Adjustment? hadjustment=null, Gtk.Adjustment? vadjustment=null) { GLib.Object( hscrollbar_policy : Gtk.PolicyType.NEVER, vscrollbar_policy : Gtk.PolicyType.NEVER, shadow_type : Gtk.ShadowType.IN, margin_start : 6, margin_end : 6, margin_top : 6, margin_bottom : 6 ); if (hadjustment != null) set_hadjustment(hadjustment); if (vadjustment != null) set_hadjustment(vadjustment); } } private class EGrid : Gtk.Grid { public EGrid() { GLib.Object( row_homogeneous : false, vexpand : true, halign : Gtk.Align.FILL, valign : Gtk.Align.FILL, row_spacing : 5, column_spacing : 5, border_width : 2 ); } } private class EWhiteLabel : Gtk.Label { private int m_minimum_width = 0; private int m_natural_width = 0; private int m_minimum_height = 0; private int m_natural_height = 0; public EWhiteLabel(string text) { GLib.Object( name : "IBusEmojierWhiteLabel" ); set_label(text); } public override void get_preferred_width(out int minimum_width, out int natural_width) { if (m_minimum_height == 0 && m_natural_height == 0) { base.get_preferred_height(out m_minimum_height, out m_natural_height); } var text = get_label(); var ch = text.get_char(); if (text.length == 1 && ch == '\t') { m_minimum_width = minimum_width = m_minimum_height; m_natural_width = natural_width = m_natural_height; return; } base.get_preferred_width(out minimum_width, out natural_width); if (text.length == 1 && (ch == '\n' || ch == '\r')) { minimum_width /= 2; natural_width /= 2; m_minimum_width = minimum_width; m_natural_width = natural_width; return; } if (minimum_width < m_minimum_height) minimum_width = m_minimum_height; if (natural_width < m_natural_height) natural_width = m_natural_height; m_minimum_width = minimum_width; m_natural_width = natural_width; } public override void get_preferred_height(out int minimum_height, out int natural_height) { if (m_minimum_width == 0 && m_natural_width == 0) { base.get_preferred_width(out m_minimum_width, out m_natural_width); } var text = get_label(); var ch = text.get_char(); if (text.length == 1 && ch == '\v') { m_minimum_height = minimum_height = m_minimum_width; m_natural_height = natural_height = m_natural_width; return; } base.get_preferred_height(out minimum_height, out natural_height); if (text.length == 1 && (ch == '\n' || ch == '\r')) { minimum_height /= 2; natural_height /= 2; m_minimum_height = minimum_height; m_natural_height = natural_height; return; } m_minimum_height = minimum_height; m_natural_height = natural_height; } } private class ESelectedLabel : EWhiteLabel { public ESelectedLabel(string text) { GLib.Object( name : "IBusEmojierSelectedLabel" ); if (text != "") set_label(text); } } private class EGoldLabel : EWhiteLabel { public EGoldLabel(string text) { GLib.Object( name : "IBusEmojierGoldLabel" ); if (text != "") set_label(text); } } private class EPaddedLabel : Gtk.Label { public EPaddedLabel(string text, Gtk.Align align) { GLib.Object( name : "IBusEmojierPaddedLabel", halign : align, valign : Gtk.Align.CENTER, margin_start : 20, margin_end : 20, margin_top : 6, margin_bottom : 6 ); set_text(text); } } private class EPaddedLabelBox : Gtk.Box { public EPaddedLabelBox(string text, Gtk.Align align, TravelDirection direction=TravelDirection.NONE, string? caption=null) { GLib.Object( name : "IBusEmojierPaddedLabelBox", orientation : Gtk.Orientation.HORIZONTAL, spacing : 0 ); if (direction == TravelDirection.BACKWARD) { IconWidget icon; if (Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL) { icon = new IconWidget("go-previous-rtl-symbolic", Gtk.IconSize.MENU); } else { icon = new IconWidget("go-previous-symbolic", Gtk.IconSize.MENU); } pack_start(icon, false, true, 0); } EPaddedLabel label = new EPaddedLabel(text, align); pack_start(label, true, true, 0); if (caption != null) { EPaddedLabel label_r = new EPaddedLabel(caption, Gtk.Align.END); pack_end(label_r, true, true, 0); } } } private class LoadProgressObject : GLib.Object { public LoadProgressObject() { } public signal void deserialize_unicode(uint done, uint total); } private enum TravelDirection { NONE, BACKWARD, } public const uint BUTTON_CLOSE_BUTTON = 1000; private const uint EMOJI_GRID_PAGE = 10; private const string EMOJI_CATEGORY_FAVORITES = N_("Favorites"); private const string EMOJI_CATEGORY_OTHERS = N_("Others"); private const string EMOJI_CATEGORY_UNICODE = N_("Open Unicode choice"); private const unichar[] EMOJI_VARIANT_LIST = { 0x1f3fb, 0x1f3fc, 0x1f3fd, 0x1f3fe, 0x1f3ff, 0x200d }; // Set the actual default values in the constructor // because these fields are used for class_init() and static functions, // e.g. set_emoji_font(), can be called before class_init() is called. private static string m_current_lang_id; private static string m_emoji_font_family; private static int m_emoji_font_size; private static bool m_emoji_font_changed = false; private static string[] m_favorites; private static string[] m_favorite_annotations; private static int m_emoji_max_seq_len; private static bool m_has_partial_match; private static uint m_partial_match_length; private static uint m_partial_match_condition; private static bool m_show_emoji_variant = false; private static int m_default_window_width; private static int m_default_window_height; private static GLib.HashTable>? m_annotation_to_emojis_dict; private static GLib.HashTable? m_emoji_to_data_dict; private static GLib.HashTable>? m_category_to_emojis_dict; private static GLib.HashTable>? m_emoji_to_emoji_variants_dict; private static GLib.HashTable? m_unicode_to_data_dict; private static GLib.HashTable>? m_name_to_unicodes_dict; private static GLib.SList m_unicode_block_list; private static bool m_show_unicode = false; private static LoadProgressObject m_unicode_progress_object; private static bool m_loaded_unicode = false; private static string m_warning_message = ""; private ThemedRGBA m_rgba; private Gtk.Box m_vbox; /* If emojier is emoji category list or Unicode category list, * m_annotation is "" and preedit is also "". * If emojier is candidate mode, m_annotation is an annotation and * get_current_candidate() returns the current emoji. * But the current preedit can be "" in candidate mode in case that * Unicode candidate window has U+0000. */ private string m_annotation = ""; private string? m_backward; private int m_backward_index = -1; private EScrolledWindow? m_scrolled_window = null; private EListBox m_list_box; private bool m_is_running = false; private string m_input_context_path = ""; private GLib.MainLoop? m_loop; private string? m_result; /* If m_candidate_panel_is_visible is true, emojier is candidate mode and * the emoji lookup window is visible. * If m_candidate_panel_is_visible is false, the emoji lookup window is * not visible but the mode is not clear. */ private bool m_candidate_panel_is_visible; /* If m_candidate_panel_mode is true, emojier is candidate mode and * it does not depend on whether the window is visible or not. * I.E. the first candidate does not show the lookup window and the * second one shows the window. * If m_candidate_panel_mode is false, emojier is emoji category list or * Unicode category list. */ private bool m_candidate_panel_mode; private int m_category_active_index = -1; private IBus.LookupTable m_lookup_table; private Gtk.Label[] m_candidates; private bool m_enter_notify_enable = true; private uint m_entry_notify_show_id; private uint m_entry_notify_disable_id; protected static double m_mouse_x; protected static double m_mouse_y; private Gtk.ProgressBar m_unicode_progress_bar; private uint m_unicode_progress_id; private Gtk.Label m_unicode_percent_label; private double m_unicode_percent; private Gdk.Rectangle m_cursor_location; private bool m_is_up_side_down = false; private uint m_redraw_window_id; public signal void candidate_clicked(uint index, uint button, uint state); public signal void commit_text(string text); public signal void cancel(); public IBusEmojier() { GLib.Object( type : Gtk.WindowType.POPUP ); // GLib.ActionEntry accepts const variables only. var action = new GLib.SimpleAction.stateful( "variant", null, new GLib.Variant.boolean(m_show_emoji_variant)); action.activate.connect(check_action_variant_cb); add_action(action); action = new GLib.SimpleAction("close", null); action.activate.connect(action_close_cb); add_action(action); if (m_current_lang_id == null) m_current_lang_id = "en"; if (m_emoji_font_family == null) { m_emoji_font_family = "Monospace"; m_emoji_font_changed = true; } if (m_emoji_font_size == 0) { m_emoji_font_size = 16; m_emoji_font_changed = true; } if (m_favorites == null) m_favorites = {}; if (m_favorite_annotations == null) m_favorite_annotations = {}; set_css_data(); m_vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); add(m_vbox); // The constructor of IBus.LookupTable does not support more than // 16 pages. m_lookup_table = new IBus.LookupTable(1, 0, true, true); m_lookup_table.set_page_size(EMOJI_GRID_PAGE * EMOJI_GRID_PAGE); hide.connect(() => { if (m_loop != null && m_loop.is_running()) m_loop.quit(); }); size_allocate.connect((w, a) => { adjust_window_position(); }); if (m_annotation_to_emojis_dict == null) { reload_emoji_dict(); } get_load_progress_object(); } private static void reload_emoji_dict() { init_emoji_dict(); make_emoji_dict("en"); if (m_current_lang_id != "en") { var lang_ids = m_current_lang_id.split("_"); if (lang_ids.length > 1) { string sub_id = lang_ids[0]; make_emoji_dict(sub_id); } make_emoji_dict(m_current_lang_id); } add_variants_to_component(); GLib.List annotations = m_annotation_to_emojis_dict.get_keys(); foreach (unowned string annotation in annotations) { if (m_emoji_max_seq_len < annotation.length) m_emoji_max_seq_len = annotation.length; } update_favorite_emoji_dict(); } private static void init_emoji_dict() { m_annotation_to_emojis_dict = new GLib.HashTable>(GLib.str_hash, GLib.str_equal); m_emoji_to_data_dict = new GLib.HashTable(GLib.str_hash, GLib.str_equal); m_category_to_emojis_dict = new GLib.HashTable>(GLib.str_hash, GLib.str_equal); m_emoji_to_emoji_variants_dict = new GLib.HashTable>(GLib.str_hash, GLib.str_equal); if (m_unicode_to_data_dict == null) { m_unicode_to_data_dict = new GLib.HashTable( GLib.direct_hash, GLib.direct_equal); } if (m_name_to_unicodes_dict == null) { m_name_to_unicodes_dict = new GLib.HashTable>(GLib.str_hash, GLib.str_equal); } } private static void make_emoji_dict(string lang) { GLib.SList emoji_list = IBus.EmojiData.load( Config.PKGDATADIR + "/dicts/emoji-" + lang + ".dict"); if (emoji_list == null) return; foreach (IBus.EmojiData data in emoji_list) { update_emoji_to_data_dict(data, lang); update_annotation_to_emojis_dict(data); update_category_to_emojis_dict(data, lang); } } private static void add_variants_to_component() { string category = "Component"; unowned GLib.SList hits = m_category_to_emojis_dict.lookup(category); if (hits == null) { category = "component"; hits = m_category_to_emojis_dict.lookup(category); } if (hits == null) return; GLib.SList emoji_list = new GLib.SList(); GLib.SList annotations = new GLib.SList(); annotations.append("zero"); IBus.EmojiData _data; _data = new IBus.EmojiData("emoji", "\u200d", "annotations", annotations, "description", "ZERO WIDTH JOINER", "category", category); emoji_list.append(_data); annotations = null; annotations.append("text"); annotations.append("variation"); annotations.append("selector"); _data = new IBus.EmojiData("emoji", "\ufe0e", "annotations", annotations, "description", "VARIATION SELECTOR-15", "category", category); emoji_list.append(_data); annotations = null; annotations.append("emoji"); annotations.append("variation"); annotations.append("selector"); _data = new IBus.EmojiData("emoji", "\ufe0f", "annotations", annotations, "description", "VARIATION SELECTOR-16", "category", category); emoji_list.append(_data); foreach (IBus.EmojiData data in emoji_list) { update_emoji_to_data_dict(data, "en"); update_annotation_to_emojis_dict(data); update_category_to_emojis_dict(data, "en"); } } private static void update_annotation_to_emojis_dict(IBus.EmojiData data) { string emoji = data.get_emoji(); unowned GLib.SList annotations = data.get_annotations(); foreach (string annotation in annotations) { bool has_emoji = false; GLib.SList hits = m_annotation_to_emojis_dict.lookup(annotation).copy_deep( GLib.strdup); foreach (string hit_emoji in hits) { if (hit_emoji == emoji) { has_emoji = true; break; } } if (!has_emoji) { hits.append(emoji); m_annotation_to_emojis_dict.replace( annotation, hits.copy_deep(GLib.strdup)); } } } private static string utf8_code_point(string str) { var buff = new GLib.StringBuilder(); int length = str.char_count(); if (length == 0) { buff.append("U+%04X".printf(0)); return buff.str; } for (int i = 0; i < length; i++) { unichar ch = str.get_char(0); if (i == 0) buff.append("U+%04X".printf(ch)); else buff.append(" %04X".printf(ch)); str = str.next_char(); } return buff.str; } private static string utf8_entity(string str) { var buff = new GLib.StringBuilder(); int length = str.char_count(); for (int i = 0; i < length; i++) { unichar ch = str.get_char(0); switch(ch) { case '<': buff.append("<"); break; case '>': buff.append(">"); break; case '&': buff.append("&"); break; default: buff.append_unichar(ch); break; } str = str.next_char(); } return buff.str; } private static void update_annotations_with_description (IBus.EmojiData data, string description) { GLib.SList annotations = data.get_annotations().copy_deep(GLib.strdup); bool update_annotations = false; string former = null; string later = null; int index = description.index_of(": "); if (index > 0) { former = description.substring(0, index); if (annotations.find_custom(former, GLib.strcmp) == null) { annotations.append(former); update_annotations = true; } later = description.substring(index + 2); } else { later = description.dup(); } var words = later.split(" "); // If the description has less than 3 words, add it to annotations // FIXME: How to cast GLib.CompareFunc to strcmp? if (words.length < 3 && annotations.find_custom( later, GLib.strcmp) == null) { annotations.append(later); update_annotations = true; } if (update_annotations) data.set_annotations(annotations.copy_deep(GLib.strdup)); } private static void update_emoji_to_data_dict(IBus.EmojiData data, string lang) { string emoji = data.get_emoji(); if (lang == "en") { string description = data.get_description().down(); update_annotations_with_description (data, description); m_emoji_to_data_dict.replace(emoji, data); } else { unowned IBus.EmojiData? en_data = null; en_data = m_emoji_to_data_dict.lookup(emoji); if (en_data == null) { m_emoji_to_data_dict.insert(emoji, data); return; } string trans_description = data.get_description(); en_data.set_description(trans_description); trans_description = trans_description.down(); update_annotations_with_description (data, trans_description); unowned GLib.SList annotations = data.get_annotations(); unowned GLib.SList en_annotations = en_data.get_annotations(); foreach (string annotation in en_annotations) { // FIXME: How to cast GLib.CompareFunc to strcmp? if (annotations.find_custom( annotation, GLib.strcmp) == null) { annotations.append(annotation.dup()); } } en_data.set_annotations(annotations.copy_deep(GLib.strdup)); } } private static void update_category_to_emojis_dict(IBus.EmojiData data, string lang) { string emoji = data.get_emoji(); string category = data.get_category(); if (category == "") category = EMOJI_CATEGORY_OTHERS; if (lang == "en") { bool has_variant = false; if (category.ascii_casecmp("component") != 0) { foreach (unichar ch in EMOJI_VARIANT_LIST) { if (emoji.index_of_char(ch) >= 0) { has_variant = true; break; } } } // If emoji includes variants (skin colors and items), // it's escaped in m_emoji_to_emoji_variants_dict and // not shown by default. if (has_variant) { unichar base_ch = emoji.get_char(); string base_emoji = base_ch.to_string(); var buff = new GLib.StringBuilder(); buff.append_unichar(base_ch); buff.append_unichar(0xfe0f); if (m_emoji_to_data_dict.lookup(buff.str) != null) base_emoji = buff.str; GLib.SList? variants = m_emoji_to_emoji_variants_dict.lookup( base_emoji).copy_deep(GLib.strdup); if (variants.find_custom(emoji, GLib.strcmp) == null) { if (variants == null) variants.append(base_emoji); if (base_emoji != emoji) variants.append(emoji); m_emoji_to_emoji_variants_dict.replace( base_emoji, variants.copy_deep(GLib.strdup)); } return; } bool has_emoji = false; GLib.SList hits = m_category_to_emojis_dict.lookup(category).copy_deep( GLib.strdup); foreach (string hit_emoji in hits) { if (hit_emoji == emoji) { has_emoji = true; break; } } if (!has_emoji) { hits.append(emoji); m_category_to_emojis_dict.replace(category, hits.copy_deep(GLib.strdup)); } } } private static void make_unicode_block_dict() { m_unicode_block_list = IBus.UnicodeBlock.load( Config.PKGDATADIR + "/dicts/unicode-blocks.dict"); foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { unowned string name = block.get_name(); if (m_emoji_max_seq_len < name.length) m_emoji_max_seq_len = name.length; } } private static void make_unicode_name_dict(Object source_object) { IBus.UnicodeData.load_async( Config.PKGDATADIR + "/dicts/unicode-names.dict", source_object, null, (IBus.UnicodeDataLoadAsyncFinish)make_unicode_name_dict_finish); } private static void make_unicode_name_dict_finish(GLib.SList unicode_list) { if (unicode_list == null) return; foreach (IBus.UnicodeData data in unicode_list) { update_unicode_to_data_dict(data); update_name_to_unicodes_dict(data); } GLib.List names = m_name_to_unicodes_dict.get_keys(); foreach (unowned string name in names) { if (m_emoji_max_seq_len < name.length) m_emoji_max_seq_len = name.length; } m_loaded_unicode = true; } private static void update_unicode_to_data_dict(IBus.UnicodeData data) { unichar code = data.get_code(); m_unicode_to_data_dict.replace(code, data); } private static void update_name_to_unicodes_dict(IBus.UnicodeData data) { unichar code = data.get_code(); string[] names = {data.get_name().down(), data.get_alias().down()}; foreach (unowned string name in names) { if (name == "") continue; bool has_code = false; GLib.SList hits = m_name_to_unicodes_dict.lookup(name).copy(); foreach (unichar hit_code in hits) { if (hit_code == code) { has_code = true; break; } } if (!has_code) { hits.append(code); m_name_to_unicodes_dict.replace(name, hits.copy()); } } } private void set_css_data() { 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; } // Set en locale because de_DE's decimal_point is ',' instead of '.' string? backup_locale = Intl.setlocale(LocaleCategory.NUMERIC, null).dup(); if (Intl.setlocale(LocaleCategory.NUMERIC, "en_US.UTF-8") == null) { if (Intl.setlocale(LocaleCategory.NUMERIC, "C.UTF-8") == null) { if (Intl.setlocale(LocaleCategory.NUMERIC, "C") == null) { warning("You don't install either en_US.UTF-8 or C.UTF-8 " + "or C locale"); } } } if (m_rgba == null) m_rgba = new ThemedRGBA(this); uint bg_red = (uint)(m_rgba.normal_bg.red * 255); uint bg_green = (uint)(m_rgba.normal_bg.green * 255); uint bg_blue = (uint)(m_rgba.normal_bg.blue * 255); double bg_alpha = m_rgba.normal_bg.alpha; string data = "#IBusEmojierWhiteLabel { background-color: " + "rgba(%u, %u, %u, %lf); ".printf( bg_red, bg_green, bg_blue, bg_alpha) + "font-family: %s; font-size: %dpt; ".printf( m_emoji_font_family, m_emoji_font_size) + "border-width: 4px; border-radius: 3px; } "; uint fg_red = (uint)(m_rgba.selected_fg.red * 255); uint fg_green = (uint)(m_rgba.selected_fg.green * 255); uint fg_blue = (uint)(m_rgba.selected_fg.blue * 255); double fg_alpha = m_rgba.selected_fg.alpha; bg_red = (uint)(m_rgba.selected_bg.red * 255); bg_green = (uint)(m_rgba.selected_bg.green * 255); bg_blue = (uint)(m_rgba.selected_bg.blue * 255); bg_alpha = m_rgba.selected_bg.alpha; data += "#IBusEmojierSelectedLabel { color: " + "rgba(%u, %u, %u, %lf); ".printf( fg_red, fg_green, fg_blue, fg_alpha) + "font-family: %s; font-size: %dpt; ".printf( m_emoji_font_family, m_emoji_font_size) + "background-color: " + "rgba(%u, %u, %u, %lf); ".printf( bg_red, bg_green, bg_blue, bg_alpha) + "border-width: 4px; border-radius: 3px; }"; data += "#IBusEmojierGoldLabel { color: " + "rgba(%u, %u, %u, %lf); ".printf( fg_red, fg_green, fg_blue, fg_alpha) + "font-family: %s; font-size: %dpt; ".printf( m_emoji_font_family, m_emoji_font_size) + "background-color: #b09c5f; " + "border-width: 4px; border-radius: 3px; }"; Gtk.CssProvider css_provider = new Gtk.CssProvider(); try { css_provider.load_from_data(data, -1); } catch (GLib.Error e) { warning("Failed css_provider_from_data: %s", e.message); return; } if (backup_locale != null) Intl.setlocale(LocaleCategory.NUMERIC, backup_locale); else Intl.setlocale(LocaleCategory.NUMERIC, ""); Gtk.StyleContext.add_provider_for_screen( screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } private void set_fixed_size() { resize(20, 1); } private void remove_all_children() { if (m_list_box != null) { foreach (Gtk.Widget w in m_list_box.get_children()) { w.destroy(); } m_list_box = null; } foreach (Gtk.Widget w in m_vbox.get_children()) { if (w.name == "IBusEmojierEntry" || w.name == "IBusEmojierTitleLabelBox") { continue; } w.destroy(); } } private void clamp_page() { Gtk.ListBoxRow row; if (m_category_active_index >= 0) { row = m_list_box.get_row_at_index(m_category_active_index); m_list_box.select_row(row); } else { row = m_list_box.get_row_at_index(0); } Gtk.Allocation alloc = { 0, 0, 0, 0 }; row.get_allocation(out alloc); var adjustment = m_scrolled_window.get_vadjustment(); adjustment.clamp_page(alloc.y, alloc.y + alloc.height); return_if_fail(m_category_active_index >= 0); m_lookup_table.set_cursor_pos((uint)m_category_active_index); } private void show_category_list() { // Do not call remove_all_children() to work adjustment.clamp_page() // with PageUp/Down. // After show_candidate_panel() is called, m_category_active_index // is saved for Escape key but m_list_box is null by // remove_all_children(). if (m_category_active_index >= 0 && m_list_box != null) { var row = m_list_box.get_row_at_index(m_category_active_index); m_list_box.select_row(row); return; } if (m_category_active_index < 0) m_category_active_index = 0; remove_all_children(); m_scrolled_window = new EScrolledWindow(); set_fixed_size(); m_vbox.add(m_scrolled_window); Gtk.Viewport viewport = new Gtk.Viewport(null, null); m_scrolled_window.add(viewport); m_list_box = new EListBox(); viewport.add(m_list_box); Gtk.Adjustment adjustment = m_scrolled_window.get_vadjustment(); m_list_box.set_adjustment(adjustment); m_list_box.row_activated.connect((box, gtkrow) => { m_category_active_index = gtkrow.get_index(); EBoxRow row = gtkrow as EBoxRow; show_emoji_for_category(row.text); show_all(); }); uint ncandidates = m_lookup_table.get_number_of_candidates(); for (uint i = 0; i < ncandidates; i++) { string category = m_lookup_table.get_candidate(i).text; EBoxRow row = new EBoxRow(category); EPaddedLabelBox widget = new EPaddedLabelBox(_(category), Gtk.Align.CENTER); row.add(widget); m_list_box.add(row); if (i == m_category_active_index) m_list_box.select_row(row); } m_scrolled_window.show_all(); if (m_category_active_index == -1) m_list_box.unselect_all(); m_list_box.invalidate_filter(); m_list_box.set_selection_mode(Gtk.SelectionMode.SINGLE); } private void show_emoji_for_category(string category) { if (category == EMOJI_CATEGORY_FAVORITES) { m_lookup_table.clear(); m_candidate_panel_mode = true; foreach (unowned string favorate in m_favorites) { IBus.Text text = new IBus.Text.from_string(favorate); m_lookup_table.append_candidate(text); } m_backward = category; } else if (category == EMOJI_CATEGORY_UNICODE) { m_category_active_index = -1; m_show_unicode = true; update_unicode_blocks(); return; } else { // Use copy_deep() since vala 0.43.4 does not allow to assign // a weak pointer to the full one in SList: // emojier.vala:885.48-886.62: error: Assignment: Cannot convert // from `GLib.SList' to `GLib.SList?' GLib.SList emojis = m_category_to_emojis_dict.lookup(category).copy_deep( GLib.strdup); m_lookup_table.clear(); m_candidate_panel_mode = true; foreach (unowned string emoji in emojis) { IBus.Text text = new IBus.Text.from_string(emoji); m_lookup_table.append_candidate(text); } m_backward = category; } m_annotation = m_lookup_table.get_candidate(0).text; // Restore the cursor position before the special table of // emoji variants is shown. if (m_backward_index >= 0) { m_lookup_table.set_cursor_pos((uint)m_backward_index); m_backward_index = -1; } } private void show_emoji_variants(GLib.SList? emojis) { m_backward_index = (int)m_lookup_table.get_cursor_pos(); m_lookup_table.clear(); foreach (unowned string emoji in emojis) { IBus.Text text = new IBus.Text.from_string(emoji); m_lookup_table.append_candidate(text); } } private void show_unicode_blocks() { // Do not call remove_all_children() to work adjustment.clamp_page() // with PageUp/Down. // After show_candidate_panel() is called, m_category_active_index // is saved for Escape key but m_list_box is null by // remove_all_children(). if (m_category_active_index >= 0 && m_list_box != null) { var row = m_list_box.get_row_at_index(m_category_active_index); m_list_box.select_row(row); return; } if (m_category_active_index < 0) m_category_active_index = 0; m_show_unicode = true; if (m_default_window_width == 0 && m_default_window_height == 0) get_size(out m_default_window_width, out m_default_window_height); remove_all_children(); set_fixed_size(); EPaddedLabelBox label = new EPaddedLabelBox(_("Bring back emoji choice"), Gtk.Align.CENTER, TravelDirection.BACKWARD); Gtk.Button button = new Gtk.Button(); button.add(label); m_vbox.add(button); button.show_all(); button.button_press_event.connect((w, e) => { m_category_active_index = -1; m_show_unicode = false; hide_candidate_panel(); show_all(); return true; }); m_scrolled_window = new EScrolledWindow(); m_vbox.add(m_scrolled_window); Gtk.Viewport viewport = new Gtk.Viewport(null, null); m_scrolled_window.add(viewport); m_list_box = new EListBox(); viewport.add(m_list_box); Gtk.Adjustment adjustment = m_scrolled_window.get_vadjustment(); m_list_box.set_adjustment(adjustment); m_list_box.row_activated.connect((box, gtkrow) => { m_category_active_index = gtkrow.get_index(); EBoxRow row = gtkrow as EBoxRow; show_unicode_for_block(row.text); show_candidate_panel(); }); uint n = 0; foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { string name = block.get_name(); string caption = "U+%08X".printf(block.get_start()); EBoxRow row = new EBoxRow(name); EPaddedLabelBox widget = new EPaddedLabelBox(_(name), Gtk.Align.CENTER, TravelDirection.NONE, caption); row.add(widget); m_list_box.add(row); if (n++ == m_category_active_index) { m_list_box.select_row(row); } } set_size_request(-1, m_default_window_height + 100); m_scrolled_window.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); m_scrolled_window.show_all(); if (m_category_active_index == -1) m_list_box.unselect_all(); m_list_box.invalidate_filter(); m_list_box.set_selection_mode(Gtk.SelectionMode.SINGLE); Gtk.ListBoxRow row = m_list_box.get_row_at_index((int)n - 1); // If clamp_page() would be called without the allocation signal, // the jumping page could be failed when returns from // show_unicode_for_block() with Escape key. row.size_allocate.connect((w, a) => { clamp_page(); }); } private void show_unicode_for_block(string block_name) { unichar start = 0; unichar end = 0; foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { string name = block.get_name(); if (block_name == name) { start = block.get_start(); end = block.get_end(); } } m_lookup_table.clear(); m_candidate_panel_mode = true; for (unichar ch = start; ch < end; ch++) { unowned IBus.UnicodeData? data = m_unicode_to_data_dict.lookup(ch); if (data == null) continue; IBus.Text text = new IBus.Text.from_unichar(ch); m_lookup_table.append_candidate(text); } m_backward = block_name; if (m_lookup_table.get_number_of_candidates() > 0) m_annotation = m_lookup_table.get_candidate(0).text; } private void show_arrow_buttons() { Gtk.Button next_button = new Gtk.Button(); next_button.clicked.connect(() => { m_lookup_table.page_down(); show_candidate_panel(); }); next_button.set_image(new Gtk.Image.from_icon_name( "go-down", Gtk.IconSize.MENU)); next_button.set_relief(Gtk.ReliefStyle.NONE); next_button.set_tooltip_text(_("Page Down")); Gtk.Button prev_button = new Gtk.Button(); prev_button.clicked.connect(() => { m_lookup_table.page_up(); show_candidate_panel(); }); prev_button.set_image(new Gtk.Image.from_icon_name( "go-up", Gtk.IconSize.MENU)); prev_button.set_relief(Gtk.ReliefStyle.NONE); prev_button.set_tooltip_text(_("Page Up")); var menu = new GLib.Menu(); menu.append(_("Show emoji variants"), "win.variant"); menu.append(_("Close"), "win.close"); var menu_button = new Gtk.MenuButton(); menu_button.set_direction(Gtk.ArrowType.NONE); menu_button.set_valign(Gtk.Align.CENTER); menu_button.set_menu_model(menu); menu_button.set_relief(Gtk.ReliefStyle.NONE); menu_button.set_tooltip_text(_("Menu")); IBus.Text text = this.get_title_text(); Pango.AttrList attrs = get_pango_attr_list_from_ibus_text(text); Gtk.Label title_label = new Gtk.Label(text.get_text()); title_label.set_attributes(attrs); Gtk.Button? warning_button = null; if (m_warning_message != "") { warning_button = new Gtk.Button(); warning_button.set_tooltip_text( _("Click to view a warning message")); warning_button.set_image(new Gtk.Image.from_icon_name( "dialog-warning", Gtk.IconSize.MENU)); warning_button.set_relief(Gtk.ReliefStyle.NONE); warning_button.clicked.connect(() => { Gtk.Label warning_label = new Gtk.Label(m_warning_message); warning_label.set_line_wrap(true); warning_label.set_max_width_chars(40); Gtk.Popover popover = new Gtk.Popover(warning_button); popover.add(warning_label); popover.show_all(); popover.popup(); }); } Gtk.Box buttons_hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); Gtk.Label state_label = new Gtk.Label(null); state_label.set_size_request(10, -1); state_label.set_halign(Gtk.Align.CENTER); state_label.set_valign(Gtk.Align.CENTER); buttons_hbox.pack_start(state_label, false, true, 0); buttons_hbox.pack_start(prev_button, false, false, 0); buttons_hbox.pack_start(next_button, false, false, 0); buttons_hbox.pack_start(title_label, false, false, 0); if (warning_button != null) buttons_hbox.pack_start(warning_button, false, false, 0); buttons_hbox.pack_end(menu_button, false, false, 0); m_vbox.pack_start(buttons_hbox, false, false, 0); buttons_hbox.show_all(); } private void show_unicode_progress_bar() { m_unicode_progress_bar = new Gtk.ProgressBar(); m_unicode_progress_bar.set_ellipsize(Pango.EllipsizeMode.MIDDLE); m_unicode_progress_bar.set_halign(Gtk.Align.CENTER); m_unicode_progress_bar.set_valign(Gtk.Align.CENTER); m_vbox.add(m_unicode_progress_bar); m_unicode_progress_bar.show(); var hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 5); hbox.set_halign(Gtk.Align.CENTER); hbox.set_valign(Gtk.Align.CENTER); m_vbox.add(hbox); var label = new Gtk.Label(_("Loading a Unicode dictionary:")); hbox.pack_start(label, false, true, 0); m_unicode_percent_label = new Gtk.Label(""); hbox.pack_start(m_unicode_percent_label, false, true, 0); hbox.show_all(); m_unicode_progress_object.deserialize_unicode.connect((i, n) => { m_unicode_percent = (double)i / n; }); if (m_unicode_progress_id > 0) { GLib.Source.remove(m_unicode_progress_id); } m_unicode_progress_id = GLib.Timeout.add(100, () => { m_unicode_progress_id = 0; m_unicode_progress_bar.set_fraction(m_unicode_percent); m_unicode_percent_label.set_text( "%.0f%%\n".printf(m_unicode_percent * 100)); m_unicode_progress_bar.show(); m_unicode_percent_label.show(); if (m_loaded_unicode) { show_candidate_panel(); } return !m_loaded_unicode; }); } private static string? check_unicode_point(string annotation) { string unicode_point = null; // Add "0x" because uint64.ascii_strtoull() is not accessible // and need to use uint64.parse() var buff = new GLib.StringBuilder("0x"); var retval = new GLib.StringBuilder(); for (int i = 0; i < annotation.char_count(); i++) { unichar ch = annotation.get_char(i); if (ch == 0) return null; if (ch.isspace()) { unichar code = (unichar)uint64.parse(buff.str); buff.assign("0x"); if (!code.validate()) return null; retval.append(code.to_string()); continue; } if (!ch.isxdigit()) return null; buff.append_unichar(ch); } unichar code = (unichar)uint64.parse(buff.str); if (!code.validate()) return null; retval.append(code.to_string()); unicode_point = retval.str; if (unicode_point == null) return null; return unicode_point; } private static GLib.SList? lookup_emojis_from_annotation(string annotation) { GLib.SList? total_emojis = null; unowned GLib.SList? sub_emojis = null; unowned GLib.SList? sub_exact_unicodes = null; unowned GLib.SList? sub_unicodes = null; int length = annotation.length; if (m_has_partial_match && length >= m_partial_match_length) { GLib.SList? sorted_emojis = null; foreach (unowned string key in m_annotation_to_emojis_dict.get_keys()) { if (key.length < length) continue; bool matched = false; switch(m_partial_match_condition) { case 0: if (key.has_prefix(annotation)) matched = true; break; case 1: if (key.has_suffix(annotation)) matched = true; break; case 2: if (key.index_of(annotation) >= 0) matched = true; break; default: break; } if (!matched) continue; sub_emojis = m_annotation_to_emojis_dict.lookup(key); foreach (unowned string emoji in sub_emojis) { if (total_emojis.find_custom(emoji, GLib.strcmp) == null) { sorted_emojis.insert_sorted(emoji, GLib.strcmp); } } } foreach (string emoji in sorted_emojis) { if (total_emojis.find_custom(emoji, GLib.strcmp) == null) { total_emojis.append(emoji); } } } else { sub_emojis = m_annotation_to_emojis_dict.lookup(annotation); foreach (unowned string emoji in sub_emojis) total_emojis.append(emoji); } sub_exact_unicodes = m_name_to_unicodes_dict.lookup(annotation); foreach (unichar code in sub_exact_unicodes) { string ch = code.to_string(); if (total_emojis.find_custom(ch, GLib.strcmp) == null) { total_emojis.append(ch); } } if (length >= m_partial_match_length) { GLib.SList? sorted_unicodes = null; foreach (unowned string key in m_name_to_unicodes_dict.get_keys()) { bool matched = false; if (key.index_of(annotation) >= 0) matched = true; if (!matched) continue; sub_unicodes = m_name_to_unicodes_dict.lookup(key); foreach (unichar code in sub_unicodes) { string ch = code.to_string(); if (sorted_unicodes.find_custom(ch, GLib.strcmp) == null) { sorted_unicodes.insert_sorted(ch, GLib.strcmp); } } } foreach (string ch in sorted_unicodes) { if (total_emojis.find_custom(ch, GLib.strcmp) == null) { total_emojis.append(ch); } } } return total_emojis; } private void update_candidate_window() { string annotation = m_annotation; if (annotation.length == 0) { m_backward = null; return; } m_lookup_table.clear(); m_category_active_index = -1; if (annotation.length > m_emoji_max_seq_len) { return; } string? unicode_point = check_unicode_point(annotation); GLib.SList? total_emojis = null; if (annotation.ascii_casecmp("history") == 0) { for (int i = 0; i < m_favorites.length; i++) { total_emojis.append(m_favorites[i].dup()); } } if (total_emojis == null) total_emojis = lookup_emojis_from_annotation(annotation); if (total_emojis == null) { /* Users can type title strings against lower case. * E.g. "Smile" against "smile" * But the dictionary has the case sensitive annotations. * E.g. ":D" and ":q" * So need to call lookup_emojis_from_annotation() twice. */ annotation = annotation.down(); total_emojis = lookup_emojis_from_annotation(annotation); } if (total_emojis == null && unicode_point == null) { return; } if (unicode_point != null) { IBus.Text text = new IBus.Text.from_string(unicode_point); m_lookup_table.append_candidate(text); } foreach (unowned string emoji in total_emojis) { IBus.Text text = new IBus.Text.from_string(emoji); m_lookup_table.append_candidate(text); } m_candidate_panel_is_visible = (m_lookup_table.get_number_of_candidates() > 0) ? true : false; m_candidate_panel_mode = true; } private void update_category_list() { // Always update m_lookup_table even if the contents are same // because m_category_active_index needs to be kept after // bring back this API from show_emoji_for_category(). reset_window_mode(); m_lookup_table.clear(); IBus.Text text; if (m_favorites.length > 0) { text = new IBus.Text.from_string(EMOJI_CATEGORY_FAVORITES); m_lookup_table.append_candidate(text); } GLib.List categories = m_category_to_emojis_dict.get_keys(); // FIXME: How to cast GLib.CompareFunc to strcmp? categories.sort((a, b) => { if (a == EMOJI_CATEGORY_OTHERS && b != EMOJI_CATEGORY_OTHERS) return 1; else if (a != EMOJI_CATEGORY_OTHERS && b == EMOJI_CATEGORY_OTHERS) return -1; return GLib.strcmp(_(a), _(b)); }); foreach (unowned string category in categories) { // "Others" category includes next unicode chars and fonts do not // support the base and varints yet. if (category == EMOJI_CATEGORY_OTHERS) continue; text = new IBus.Text.from_string(category); m_lookup_table.append_candidate(text); } if (m_unicode_block_list.length() > 0) { text = new IBus.Text.from_string(EMOJI_CATEGORY_UNICODE); m_lookup_table.append_candidate(text); } // Do not set m_category_active_index to 0 here so that // show_category_list() handles it. } private void update_unicode_blocks() { // Always update m_lookup_table even if the contents are same // because m_category_active_index needs to be kept after // bring back this API from show_emoji_for_category(). reset_window_mode(); m_lookup_table.clear(); m_show_unicode = true; foreach (unowned IBus.UnicodeBlock block in m_unicode_block_list) { string name = block.get_name(); IBus.Text text = new IBus.Text.from_string(name); m_lookup_table.append_candidate(text); } // Do not set m_category_active_index to 0 here so that // show_unicode_blocks() handles it. } private void show_code_point_description(string text) { EPaddedLabelBox widget_code = new EPaddedLabelBox( _("Code point: %s").printf(utf8_code_point(text)), Gtk.Align.START); m_vbox.add(widget_code); widget_code.show_all(); if (m_emoji_to_emoji_variants_dict.lookup(text) != null) { EPaddedLabelBox widget_has_variant = new EPaddedLabelBox( _("Has emoji variants"), Gtk.Align.START); m_vbox.add(widget_has_variant); widget_has_variant.show_all(); } } private void show_candidate_panel() { remove_all_children(); set_fixed_size(); if (m_emoji_font_changed) { set_css_data(); m_emoji_font_changed = false; } uint page_size = m_lookup_table.get_page_size(); uint ncandidates = m_lookup_table.get_number_of_candidates(); uint cursor = m_lookup_table.get_cursor_pos(); uint page_start_pos = cursor / page_size * page_size; uint page_end_pos = uint.min(page_start_pos + page_size, ncandidates); Gtk.Button? backward_button = null; if (m_backward != null) { string backward_desc = _(m_backward); EPaddedLabelBox label = new EPaddedLabelBox(backward_desc, Gtk.Align.CENTER, TravelDirection.BACKWARD); backward_button = new Gtk.Button(); backward_button.add(label); backward_button.button_press_event.connect((w, e) => { // Bring back to emoji candidate panel in case // m_show_emoji_variant is enabled and shows variants. if (m_backward_index >= 0 && m_backward != null) { show_emoji_for_category(m_backward); show_candidate_panel(); } else { hide_candidate_panel(); show_all(); } return true; }); } EGrid grid = new EGrid(); int n = 0; for (uint i = page_start_pos; i < page_end_pos; i++) { string text = m_lookup_table.get_candidate(i).text; bool has_variant = (m_emoji_to_emoji_variants_dict.lookup(text) != null); Gtk.Label label; // If 'i' is the cursor position, use the selected color. // If the emoji has emoji variants, use the gold color. // Otherwise the white color. if (i == cursor) { label = new ESelectedLabel(text) as Gtk.Label; } else if (m_show_emoji_variant && has_variant && m_backward_index < 0) { label = new EGoldLabel(text) as Gtk.Label; } else { label = new EWhiteLabel(text) as Gtk.Label; } if (text.char_count() > 2) { string font_family = m_emoji_font_family; int font_size = m_emoji_font_size - 2; string emoji_font = "%s %d".printf(font_family, font_size); string markup = "%s". printf(emoji_font, utf8_entity(text)); label.set_markup(markup); } label.set_halign(Gtk.Align.FILL); label.set_valign(Gtk.Align.FILL); Gtk.EventBox candidate_ebox = new Gtk.EventBox(); candidate_ebox.add_events(Gdk.EventMask.POINTER_MOTION_MASK); candidate_ebox.add(label); // Make a copy of i to workaround a bug in vala. // https://bugzilla.gnome.org/show_bug.cgi?id=628336 uint index = i; candidate_ebox.button_press_event.connect((w, e) => { candidate_clicked(index, e.button, e.state); return true; }); candidate_ebox.motion_notify_event.connect((e) => { // m_enter_notify_enable is added because // enter_notify_event conflicts with keyboard operations. if (!m_enter_notify_enable) return false; if (m_lookup_table.get_cursor_pos() == index) return false; #if VALA_0_24 Gdk.EventMotion pe = e; #else Gdk.EventMotion *pe = &e; #endif if (m_mouse_x == pe.x_root && m_mouse_y == pe.y_root) return false; m_mouse_x = pe.x_root; m_mouse_y = pe.y_root; m_lookup_table.set_cursor_pos(index); if (m_entry_notify_show_id > 0 && GLib.MainContext.default().find_source_by_id( m_entry_notify_show_id) != null) { GLib.Source.remove(m_entry_notify_show_id); } // If timeout is not added, memory leak happens and // button_press_event signal does not work above. m_entry_notify_show_id = GLib.Timeout.add(100, () => { show_candidate_panel(); return false; }); return false; }); grid.attach(candidate_ebox, n % (int)EMOJI_GRID_PAGE, n / (int)EMOJI_GRID_PAGE, 1, 1); n++; m_candidates += label; } m_candidate_panel_is_visible = true; if (!m_is_up_side_down) { show_arrow_buttons(); if (backward_button != null) { m_vbox.add(backward_button); backward_button.show_all(); } if (n > 0) { m_vbox.add(grid); grid.show_all(); show_description(); } if (!m_loaded_unicode) show_unicode_progress_bar(); } else { if (!m_loaded_unicode) show_unicode_progress_bar(); if (n > 0) { show_description(); m_vbox.add(grid); grid.show_all(); } if (backward_button != null) { m_vbox.add(backward_button); backward_button.show_all(); } show_arrow_buttons(); } } private void show_description() { uint cursor = m_lookup_table.get_cursor_pos(); string text = m_lookup_table.get_candidate(cursor).text; unowned IBus.EmojiData? data = m_emoji_to_data_dict.lookup(text); if (data != null) { show_emoji_description(data, text); return; } if (text.char_count() <= 1) { unichar code = text.get_char(); unowned IBus.UnicodeData? udata = m_unicode_to_data_dict.lookup(code); if (udata != null) { show_unicode_description(udata, text); return; } } EPaddedLabelBox widget = new EPaddedLabelBox( _("Description: %s").printf(_("None")), Gtk.Align.START); m_vbox.add(widget); widget.show_all(); show_code_point_description(text); } private void show_emoji_description(IBus.EmojiData data, string text) { unowned string description = data.get_description(); { EPaddedLabelBox widget = new EPaddedLabelBox( _("Description: %s").printf(description), Gtk.Align.START); m_vbox.add(widget); widget.show_all(); } GLib.SList annotations = data.get_annotations().copy_deep(GLib.strdup); var buff = new GLib.StringBuilder(); int i = 0; foreach (unowned string annotation in annotations) { if (i++ == 0) buff.append_printf(_("Annotations: %s"), annotation); else buff.append_printf(" | %s", annotation); if (buff.str.char_count() > 30) { EPaddedLabelBox widget = new EPaddedLabelBox(buff.str, Gtk.Align.START); m_vbox.add(widget); widget.show_all(); buff.erase(); } } if (buff.str != "") { EPaddedLabelBox widget = new EPaddedLabelBox(buff.str, Gtk.Align.START); m_vbox.add(widget); widget.show_all(); } show_code_point_description(text); } private void show_unicode_description(IBus.UnicodeData data, string text) { unowned string name = data.get_name(); { EPaddedLabelBox widget = new EPaddedLabelBox( _("Name: %s").printf(name), Gtk.Align.START); m_vbox.add(widget); widget.show_all(); } unowned string alias = data.get_alias(); { EPaddedLabelBox widget = new EPaddedLabelBox( _("Alias: %s").printf(alias), Gtk.Align.START); m_vbox.add(widget); widget.show_all(); } show_code_point_description(text); } private void hide_candidate_panel() { hide(); m_enter_notify_enable = true; m_annotation = ""; // Call remove_all_children() instead of show_category_list() // so that show_category_list do not remove children with // PageUp/PageDown. remove_all_children(); if (m_show_unicode) update_unicode_blocks(); else update_category_list(); } private void enter_notify_disable_with_timer() { // Enable keyboard operation and disable mouse operation. m_enter_notify_enable = false; if (m_entry_notify_disable_id > 0) { GLib.Source.remove(m_entry_notify_disable_id); } // Bring back the mouse operation after a timeout. m_entry_notify_show_id = GLib.Timeout.add(100, () => { m_enter_notify_enable = true; return false; }); } private void candidate_panel_cursor_down() { enter_notify_disable_with_timer(); uint ncandidates = m_lookup_table.get_number_of_candidates(); uint cursor = m_lookup_table.get_cursor_pos(); if ((cursor + EMOJI_GRID_PAGE) < ncandidates) { m_lookup_table.set_cursor_pos(cursor + EMOJI_GRID_PAGE); } else if (cursor % EMOJI_GRID_PAGE < ncandidates) { m_lookup_table.set_cursor_pos(cursor % EMOJI_GRID_PAGE); } else { m_lookup_table.set_cursor_pos(0); } } private void candidate_panel_cursor_up() { enter_notify_disable_with_timer(); int ncandidates = (int)m_lookup_table.get_number_of_candidates(); int cursor = (int)m_lookup_table.get_cursor_pos(); int highest_pos = ((ncandidates - 1)/ (int)EMOJI_GRID_PAGE * (int)EMOJI_GRID_PAGE) + (cursor % (int)EMOJI_GRID_PAGE); if ((cursor - (int)EMOJI_GRID_PAGE) >= 0) { m_lookup_table.set_cursor_pos(cursor - (int)EMOJI_GRID_PAGE); } else if (highest_pos < ncandidates) { m_lookup_table.set_cursor_pos(highest_pos); } else { m_lookup_table.set_cursor_pos(0); } } private int get_page_num() { if (m_category_active_index < 0) m_category_active_index = 0; var row = m_list_box.get_row_at_index(m_category_active_index); Gtk.Allocation alloc = { 0, 0, 0, 0 }; row.get_allocation(out alloc); var adjustment = m_scrolled_window.get_vadjustment(); var page_size = (int)adjustment.get_page_size(); int page_num = page_size / alloc.height; page_num += ((page_size % alloc.height) > 0) ? 1 : 0; return page_num; } private bool category_list_cursor_move(uint keyval) { return_val_if_fail (m_list_box != null, false); GLib.List list = m_list_box.get_children(); int length = (int)list.length(); if (length == 0) return false; switch(keyval) { case Gdk.Key.Down: if (++m_category_active_index == length) m_category_active_index = 0; break; case Gdk.Key.Up: if (--m_category_active_index < 0) m_category_active_index = length - 1; break; case Gdk.Key.Home: m_category_active_index = 0; break; case Gdk.Key.End: m_category_active_index = length - 1; break; case Gdk.Key.Page_Down: var page_num = get_page_num(); if (m_category_active_index + 1 == length) m_category_active_index = 0; else if (m_category_active_index + page_num >= length) m_category_active_index = length - 1; else m_category_active_index += page_num; break; case Gdk.Key.Page_Up: var page_num = get_page_num(); if (m_category_active_index == 0) m_category_active_index = length - 1; else if (m_category_active_index - page_num < 0) m_category_active_index = 0; else m_category_active_index -= page_num; break; } var row = m_list_box.get_selected_row(); if (row != null) m_list_box.unselect_row(row); clamp_page (); return true; } public bool has_variants(uint index, bool need_commit_signal) { if (index >= m_lookup_table.get_number_of_candidates()) return false; string text = m_lookup_table.get_candidate(index).text; unowned GLib.SList? emojis = m_emoji_to_emoji_variants_dict.lookup(text); if (m_show_emoji_variant && emojis != null && m_backward_index < 0) { show_emoji_variants(emojis); return true; } m_result = text; if (need_commit_signal) commit_text(text); return false; } public bool key_press_cursor_horizontal(uint keyval, uint modifiers) { assert (keyval == Gdk.Key.Left || keyval == Gdk.Key.Right); if (m_candidate_panel_mode && m_lookup_table.get_number_of_candidates() > 0) { enter_notify_disable_with_timer(); if (keyval == Gdk.Key.Left) m_lookup_table.cursor_up(); else if (keyval == Gdk.Key.Right) m_lookup_table.cursor_down(); } else { // For Gdk.Key.f and Gdk.Key.b if (keyval == Gdk.Key.Left) keyval = Gdk.Key.Up; else if (keyval == Gdk.Key.Right) keyval = Gdk.Key.Down; return category_list_cursor_move(keyval); } return true; } public bool key_press_cursor_vertical(uint keyval, uint modifiers) { assert (keyval == Gdk.Key.Down || keyval == Gdk.Key.Up || keyval == Gdk.Key.Page_Down || keyval == Gdk.Key.Page_Up); if ((modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { if (keyval == Gdk.Key.Down) keyval = Gdk.Key.Page_Down; else if (keyval == Gdk.Key.Up) keyval = Gdk.Key.Page_Up; } if ((m_candidate_panel_is_visible || m_annotation.length > 0) && m_lookup_table.get_number_of_candidates() > 0) { switch (keyval) { case Gdk.Key.Down: candidate_panel_cursor_down(); break; case Gdk.Key.Up: candidate_panel_cursor_up(); break; case Gdk.Key.Page_Down: enter_notify_disable_with_timer(); m_lookup_table.page_down(); break; case Gdk.Key.Page_Up: enter_notify_disable_with_timer(); m_lookup_table.page_up(); break; } } else { return category_list_cursor_move(keyval); } return true; } public bool key_press_cursor_home_end(uint keyval, uint modifiers) { assert (keyval == Gdk.Key.Home || keyval == Gdk.Key.End); uint ncandidates = m_lookup_table.get_number_of_candidates(); if (m_candidate_panel_mode && ncandidates > 0) { enter_notify_disable_with_timer(); if (keyval == Gdk.Key.Home) { m_lookup_table.set_cursor_pos(0); } else if (keyval == Gdk.Key.End) { m_lookup_table.set_cursor_pos(ncandidates - 1); } return true; } return category_list_cursor_move(keyval); } public bool key_press_escape() { if (m_show_unicode) { if (!m_candidate_panel_is_visible) { m_show_unicode = false; m_category_active_index = -1; } hide_candidate_panel(); return true; } else if (m_backward_index >= 0 && m_backward != null) { show_emoji_for_category(m_backward); return true; } else if (m_candidate_panel_is_visible && m_backward != null) { hide_candidate_panel(); return true; } hide(); if (m_candidate_panel_mode && m_lookup_table.get_number_of_candidates() > 0) { // Call remove_all_children() instead of show_category_list() // so that show_category_list do not remove children with // PageUp/PageDown. remove_all_children(); } cancel(); return false; } public bool key_press_enter(bool need_commit_signal) { if (m_candidate_panel_is_visible) { uint index = m_lookup_table.get_cursor_pos(); return has_variants(index, need_commit_signal); } else if (m_category_active_index >= 0) { Gtk.ListBoxRow gtkrow = m_list_box.get_selected_row(); EBoxRow row = gtkrow as EBoxRow; if (m_show_unicode) show_unicode_for_block(row.text); else show_emoji_for_category(row.text); } return true; } private Gdk.Rectangle get_monitor_geometry() { Gdk.Rectangle monitor_area = { 0, }; // Use get_monitor_geometry() instead of get_monitor_area(). // get_monitor_area() excludes docks, but the lookup window should be // shown over them. #if VALA_0_34 Gdk.Monitor monitor = Gdk.Display.get_default().get_monitor_at_point( m_cursor_location.x, m_cursor_location.y); monitor_area = monitor.get_geometry(); #else Gdk.Screen screen = Gdk.Screen.get_default(); int monitor_num = screen.get_monitor_at_point(m_cursor_location.x, m_cursor_location.y); screen.get_monitor_geometry(monitor_num, out monitor_area); #endif return monitor_area; } 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; get_allocation(out allocation); Gdk.Point window_right_bottom = { cursor_right_bottom.x + allocation.width, cursor_right_bottom.y + allocation.height }; Gdk.Rectangle monitor_area = get_monitor_geometry(); int monitor_right = monitor_area.x + monitor_area.width; int monitor_bottom = monitor_area.y + monitor_area.height; int x, y; if (window_right_bottom.x > monitor_right) x = monitor_right - allocation.width; else x = cursor_right_bottom.x; if (x < 0) x = 0; bool changed = false; // Do not up side down frequently. // The first pos does not show the lookup table yet but the // preedit only and the second pos shows the lookup table. if (m_lookup_table.get_cursor_pos() != 1) { if (m_is_up_side_down) y = m_cursor_location.y - allocation.height; else y = cursor_right_bottom.y; } else if (window_right_bottom.y > monitor_bottom) { y = m_cursor_location.y - allocation.height; // Do not up side down in Wayland if (m_input_context_path == "") { changed = (m_is_up_side_down == false); m_is_up_side_down = true; } else { changed = (m_is_up_side_down == true); m_is_up_side_down = false; } } else { y = cursor_right_bottom.y; changed = (m_is_up_side_down == true); m_is_up_side_down = false; } if (y < 0) y = 0; move(x, y); if (changed) { if (m_redraw_window_id > 0) GLib.Source.remove(m_redraw_window_id); m_redraw_window_id = GLib.Timeout.add(100, () => { m_redraw_window_id = 0; this.show_all(); return false; }); } } #if 0 private void check_action_variant_cb(Gtk.MenuItem item) { Gtk.CheckMenuItem check = item as Gtk.CheckMenuItem; m_show_emoji_variant = check.get_active(); // Redraw emoji candidate panel for m_show_emoji_variant if (m_candidate_panel_is_visible) { // DOTO: queue_draw() does not effect at the real time. this.queue_draw(); } } #else private void check_action_variant_cb(GLib.SimpleAction action, GLib.Variant? parameter) { m_show_emoji_variant = !action.get_state().get_boolean(); action.set_state(new GLib.Variant.boolean(m_show_emoji_variant)); // Redraw emoji candidate panel for m_show_emoji_variant if (m_candidate_panel_is_visible) { // DOTO: queue_draw() does not effect at the real time. this.queue_draw(); } } #endif private void action_close_cb(GLib.SimpleAction action, GLib.Variant? parameter) { candidate_clicked(0, BUTTON_CLOSE_BUTTON, 0); } public static void update_favorite_emoji_dict() { if (m_emoji_to_data_dict == null || m_annotation_to_emojis_dict == null) return; for(int i = 0; i < m_favorites.length; i++) { var favorite = m_favorites[i]; string? annotation = ""; if (i < m_favorite_annotations.length) { annotation = m_favorite_annotations[i]; } if (annotation == "") continue; unowned IBus.EmojiData? data = m_emoji_to_data_dict.lookup(favorite); if (data == null) { GLib.SList new_annotations = new GLib.SList(); new_annotations.append(annotation); IBus.EmojiData new_data = GLib.Object.new( typeof(IBus.EmojiData), "emoji", favorite.dup(), "annotations", new_annotations, "description", annotation.dup() ) as IBus.EmojiData; m_emoji_to_data_dict.insert(favorite, new_data); } else { GLib.SList annotations = data.get_annotations().copy_deep(GLib.strdup); if (annotations.find_custom(annotation, GLib.strcmp) == null) { annotations.append(annotation); data.set_annotations(annotations.copy_deep(GLib.strdup)); } } unowned GLib.SList emojis = m_annotation_to_emojis_dict.lookup(annotation); if (emojis.find_custom(favorite, GLib.strcmp) == null) { emojis.append(favorite); m_annotation_to_emojis_dict.replace( annotation, emojis.copy_deep(GLib.strdup)); } } } public void set_annotation(string annotation) { m_annotation = annotation; remove_all_children(); if (annotation.length > 0) { update_candidate_window(); } else { if (m_show_unicode) update_unicode_blocks(); else update_category_list(); } } public IBus.LookupTable get_one_dimension_lookup_table() { var lookup_table = new IBus.LookupTable(EMOJI_GRID_PAGE, 0, true, true); uint i = 0; for (; i < m_lookup_table.get_number_of_candidates(); i++) { IBus.Text text = new IBus.Text.from_string(""); text.copy(m_lookup_table.get_candidate(i)); lookup_table.append_candidate(text); } if (i > 0) lookup_table.set_cursor_pos(m_lookup_table.get_cursor_pos()); return lookup_table; } public uint get_number_of_candidates() { return m_lookup_table.get_number_of_candidates(); } public uint get_cursor_pos() { return m_lookup_table.get_cursor_pos(); } public void set_cursor_pos(uint cursor_pos) { m_lookup_table.set_cursor_pos(cursor_pos); } public string get_current_candidate() { // If category_list mode, do not show the category name on preedit. // If candidate_panel mode, the first space key does not show the // lookup table but the first candidate is available on preedit. if (!m_candidate_panel_mode) return ""; uint cursor = m_lookup_table.get_cursor_pos(); return m_lookup_table.get_candidate(cursor).text; } public IBus.Text get_title_text() { var language = _(IBus.get_language_name(m_current_lang_id)); uint ncandidates = this.get_number_of_candidates(); string main_title = _("Emoji Choice"); if (m_show_unicode) main_title = _("Unicode Choice"); var text = new IBus.Text.from_string( "%s (%s) (%u / %u)".printf( main_title, language, this.get_cursor_pos() + 1, ncandidates)); int char_count = text.text.char_count(); int start_index = -1; unowned string title = text.text; for (int i = 0; i < char_count; i++) { if (title.has_prefix(language)) { start_index = i; break; } title = title.next_char(); } if (start_index >= 0) { var attr = new IBus.Attribute( IBus.AttrType.FOREGROUND, 0x808080, start_index, start_index + language.char_count()); var attrs = new IBus.AttrList(); attrs.append(attr); text.set_attributes(attrs); } return text; } #if 0 public GLib.SList? get_candidates() { if (m_annotation.length == 0) { return null; } if (m_annotation.length > m_emoji_max_seq_len) { return null; } string? unicode_point = check_unicode_point(m_annotation); GLib.SList? total_emojis = lookup_emojis_from_annotation(m_annotation); if (total_emojis == null) { /* Users can type title strings against lower case. * E.g. "Smile" against "smile" * But the dictionary has the case sensitive annotations. * E.g. ":D" and ":q" * So need to call lookup_emojis_from_annotation() twice. */ string lower_annotation = m_annotation.down(); total_emojis = lookup_emojis_from_annotation(lower_annotation); } if (unicode_point != null) total_emojis.prepend(unicode_point); return total_emojis; } #endif #if 0 public string run(string input_context_path, Gdk.Event event) { assert (m_loop == null); m_is_running = true; m_input_context_path = input_context_path; m_candidate_panel_is_visible = false; m_result = null; m_enter_notify_enable = true; m_show_unicode = false; /* Let gtk recalculate the window size. */ resize(1, 1); show_category_list(); show_all(); /* Some window managers, e.g. MATE, GNOME, Plasma desktops, * does not give the keyboard focus when Emojier is lauched * twice with Ctrl-Shift-e via XIEvent, if present_with_time() * is not applied. * But XFCE4 desktop does not effect this bug. * Seems this is caused by the window manager's focus stealing * prevention logic: * https://mail.gnome.org/archives/gtk-devel-list/2017-May/msg00026.html */ present_centralize(event); Gdk.Device pointer; #if VALA_0_34 Gdk.Seat seat = event.get_seat(); if (seat == null) { var display = get_display(); seat = display.get_default_seat(); } pointer = seat.get_pointer(); #else Gdk.Device device = event.get_device(); if (device == null) { var display = get_display(); device = display.list_devices().data; } if (device.get_source() == Gdk.InputSource.KEYBOARD) pointer = device.get_associated_device(); else pointer = device; #endif pointer.get_position_double(null, out m_mouse_x, out m_mouse_y); m_loop = new GLib.MainLoop(); m_loop.run(); m_loop = null; hide(); // Make sure the switcher is hidden before returning from this function. while (Gtk.events_pending()) Gtk.main_iteration(); m_is_running = false; return m_result; } #endif /* override virtual functions */ public override void show_all() { base.show_all(); if (m_candidate_panel_mode) show_candidate_panel(); else if (m_show_unicode) show_unicode_blocks(); else show_category_list(); } public override void hide() { base.hide(); m_candidate_panel_is_visible = false; // m_candidate_panel_mode is not false in when you type something // during enabling the candidate panel. if (m_redraw_window_id > 0) { GLib.Source.remove(m_redraw_window_id); m_redraw_window_id = 0; } if (m_unicode_progress_id > 0) { GLib.Source.remove(m_unicode_progress_id); m_unicode_progress_id = 0; } } public override bool key_press_event(Gdk.EventKey event) { uint keyval = event.keyval; uint modifiers = event.state; /* Need to handle events in key_press_event() instead of * key_release_event() so that this can know if the event * was handled by IME. */ switch (keyval) { case Gdk.Key.Escape: if (key_press_escape()) show_all(); return true; case Gdk.Key.Return: case Gdk.Key.KP_Enter: if (key_press_enter(true)) show_all(); else hide(); return true; case Gdk.Key.space: case Gdk.Key.KP_Space: if (m_candidate_panel_is_visible) { enter_notify_disable_with_timer(); m_lookup_table.cursor_down(); show_candidate_panel(); } else { category_list_cursor_move(Gdk.Key.Down); show_all(); } return true; case Gdk.Key.Right: case Gdk.Key.KP_Right: key_press_cursor_horizontal(Gdk.Key.Right, modifiers); show_all(); return true; case Gdk.Key.Left: case Gdk.Key.KP_Left: key_press_cursor_horizontal(Gdk.Key.Left, modifiers); show_all(); return true; case Gdk.Key.Down: case Gdk.Key.KP_Down: key_press_cursor_vertical(Gdk.Key.Down, modifiers); show_all(); return true; case Gdk.Key.Up: case Gdk.Key.KP_Up: key_press_cursor_vertical(Gdk.Key.Up, modifiers); show_all(); return true; case Gdk.Key.Page_Down: case Gdk.Key.KP_Page_Down: key_press_cursor_vertical(Gdk.Key.Page_Down, modifiers); show_all(); return true; case Gdk.Key.Page_Up: case Gdk.Key.KP_Page_Up: key_press_cursor_vertical(Gdk.Key.Page_Up, modifiers); show_all(); return true; case Gdk.Key.Home: case Gdk.Key.KP_Home: key_press_cursor_home_end(Gdk.Key.Home, modifiers); show_all(); return true; case Gdk.Key.End: case Gdk.Key.KP_End: key_press_cursor_home_end(Gdk.Key.End, modifiers); show_all(); return true; } if ((modifiers & Gdk.ModifierType.CONTROL_MASK) != 0) { switch (keyval) { case Gdk.Key.f: key_press_cursor_horizontal(Gdk.Key.Right, modifiers); show_all(); return true; case Gdk.Key.b: key_press_cursor_horizontal(Gdk.Key.Left, modifiers); show_all(); return true; case Gdk.Key.n: case Gdk.Key.N: key_press_cursor_vertical(Gdk.Key.Down, modifiers); show_all(); return true; case Gdk.Key.p: case Gdk.Key.P: key_press_cursor_vertical(Gdk.Key.Up, modifiers); show_all(); return true; case Gdk.Key.h: key_press_cursor_home_end(Gdk.Key.Home, modifiers); show_all(); return true; case Gdk.Key.e: key_press_cursor_home_end(Gdk.Key.End, modifiers); show_all(); return true; case Gdk.Key.C: case Gdk.Key.c: if ((modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { if (m_candidate_panel_is_visible) { uint index = m_lookup_table.get_cursor_pos(); var text = m_lookup_table.get_candidate(index).text; Gtk.Clipboard clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD); clipboard.set_text(text, -1); clipboard.store(); return true; } } break; } return false; } return true; } public bool is_running() { return m_is_running; } public string get_input_context_path() { return m_input_context_path; } public void set_input_context_path(string input_context_path) { m_input_context_path = input_context_path; if (input_context_path == "") { m_warning_message = _("" + "Failed to get the current text application. " + "Please re-focus your application. E.g. Press Esc key " + "several times to release the emoji typing mode, " + "click your desktop and click your text application again." ); } else { m_warning_message = ""; } } public string get_selected_string() { return m_result; } private void reset_window_mode() { m_backward_index = -1; m_backward = null; m_candidate_panel_is_visible = false; m_candidate_panel_mode = false; // Do not clear m_lookup_table to work with space key later. } public void reset() { reset_window_mode(); m_input_context_path = ""; m_result = null; m_category_active_index = -1; m_show_unicode = false; } public void present_centralize(Gdk.Event event) { Gtk.Allocation allocation; get_allocation(out allocation); Gdk.Rectangle monitor_area; Gdk.Rectangle work_area; #if VALA_0_34 Gdk.Display display = Gdk.Display.get_default(); Gdk.Monitor monitor = display.get_monitor_at_window(this.get_window()); monitor_area = monitor.get_geometry(); work_area = monitor.get_workarea(); #else Gdk.Screen screen = Gdk.Screen.get_default(); int monitor_num = screen.get_monitor_at_window(this.get_window()); screen.get_monitor_geometry(monitor_num, out monitor_area); work_area = screen.get_monitor_workarea(monitor_num); #endif int x = (monitor_area.x + monitor_area.width - allocation.width)/2; int y = (monitor_area.y + monitor_area.height - allocation.height)/2; // Do not hide a bottom panel in XFCE4 if (work_area.y < y) y = work_area.y; // FIXME: move() does not work in Wayland move(x, y); uint32 timestamp = event.get_time(); present_with_time(timestamp); } 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; } public bool is_candidate_panel_mode() { return m_candidate_panel_mode; } public static bool has_loaded_emoji_dict() { if (m_emoji_to_data_dict == null) return false; GLib.List keys = m_emoji_to_data_dict.get_keys(); if (keys.length() == 0) return false; return true; } public static void set_annotation_lang(string? lang) { if (lang == null || lang == "") lang = "en"; if (m_current_lang_id == lang) return; m_current_lang_id = lang; reload_emoji_dict(); } public static string get_annotation_lang() { return m_current_lang_id; } public static void set_emoji_font(string? emoji_font) { return_if_fail(emoji_font != null && emoji_font != ""); Pango.FontDescription font_desc = Pango.FontDescription.from_string(emoji_font); string font_family = font_desc.get_family(); if (font_family != null) { m_emoji_font_family = font_family; m_emoji_font_changed = true; } int font_size = font_desc.get_size() / Pango.SCALE; if (font_size != 0) { m_emoji_font_size = font_size; m_emoji_font_changed = true; } } public static void set_partial_match(bool has_partial_match) { m_has_partial_match = has_partial_match; } public static void set_partial_match_length(int length) { if (length < 1) return; m_partial_match_length = length; } public static void set_partial_match_condition(int condition) { if (condition < 0) return; m_partial_match_condition = condition; } public static void set_favorites(string[]? unowned_favorites, string[]? unowned_favorite_annotations) { m_favorites = {}; m_favorite_annotations = {}; for(int i = 0; i < unowned_favorites.length; i++) { string? favorite = unowned_favorites[i]; // Avoid gsetting value error by manual setting GLib.return_if_fail(favorite != null); m_favorites += favorite; } for(int i = 0; i < unowned_favorite_annotations.length; i++) { string? favorite_annotation = unowned_favorite_annotations[i]; GLib.return_if_fail(favorite_annotation != null); m_favorite_annotations += favorite_annotation; } update_favorite_emoji_dict(); } private static GLib.Object get_load_progress_object() { if (m_unicode_progress_object == null) m_unicode_progress_object = new LoadProgressObject(); return m_unicode_progress_object as GLib.Object; } public static void load_unicode_dict() { if (m_unicode_block_list.length() == 0) make_unicode_block_dict(); if (m_name_to_unicodes_dict.size() == 0) make_unicode_name_dict(IBusEmojier.get_load_progress_object()); } } ibus-1.5.22/ui/gtk3/keybindingmanager.c0000644000000000000000000013321313623751710014551 00000000000000/* keybindingmanager.c generated by valac 0.47.91, 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 #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; enum { KEYBINDING_MANAGER_0_PROPERTY, KEYBINDING_MANAGER_NUM_PROPERTIES }; static GParamSpec* keybinding_manager_properties[KEYBINDING_MANAGER_NUM_PROPERTIES]; typedef void (*KeybindingManagerKeybindingHandlerFunc) (GdkEvent* event, gpointer user_data); #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; }; 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 gint KeybindingManager_private_offset; static gpointer keybinding_manager_parent_class = NULL; static KeybindingManager* keybinding_manager_m_instance; static KeybindingManager* keybinding_manager_m_instance = NULL; static gint KeybindingManagerKeybinding_private_offset; static gpointer keybinding_manager_keybinding_parent_class = NULL; GType keybinding_manager_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (KeybindingManager, g_object_unref) 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (KeybindingManagerKeybinding, keybinding_manager_keybinding_unref) #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 _keybinding_manager_keybinding_unref0_ (gpointer var); static inline void _g_list_free__keybinding_manager_keybinding_unref0_ (GList* self); 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, gpointer 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, gpointer handler_target); static KeybindingManagerKeybinding* keybinding_manager_keybinding_construct (GType object_type, guint keysym, GdkModifierType modifiers, KeybindingManagerKeybindingHandlerFunc handler, gpointer 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, gint* result_length1); static void _vala_array_add4 (gint* * array, gint* length, gint* size, gint value); static void _vala_array_add5 (gint* * array, gint* length, gint* size, gint value); static void _vala_array_add6 (gint* * array, gint* length, gint* size, gint value); static void _vala_array_add7 (XIGrabModifiers* * array, gint* length, gint* size, const XIGrabModifiers* value); static void _vala_XIGrabModifiers_array_free (XIGrabModifiers * array, gint array_length); 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 GType keybinding_manager_keybinding_get_type_once (void); static void keybinding_manager_finalize (GObject * obj); static GType keybinding_manager_get_type_once (void); static inline gpointer keybinding_manager_get_instance_private (KeybindingManager* self) { return G_STRUCT_MEMBER_P (self, KeybindingManager_private_offset); } static void _keybinding_manager_keybinding_unref0_ (gpointer var) { (var == NULL) ? NULL : (var = (keybinding_manager_keybinding_unref (var), NULL)); } static inline void _g_list_free__keybinding_manager_keybinding_unref0_ (GList* self) { g_list_free_full (self, (GDestroyNotify) _keybinding_manager_keybinding_unref0_); } 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, gpointer handler_target) { Display* display = NULL; Display* _tmp0_; gint keycode = 0; Display* _tmp1_; GdkDisplay* _tmp2_; KeybindingManagerKeybinding* binding = NULL; KeybindingManagerKeybinding* _tmp3_; KeybindingManagerKeybinding* _tmp4_; KeybindingManagerKeybinding* _tmp5_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = gdk_x11_get_default_xdisplay (); display = _tmp0_; _tmp1_ = display; keycode = (gint) XKeysymToKeycode (_tmp1_, (gulong) keysym); if (keycode == 0) { result = FALSE; return result; } _tmp2_ = gdk_display_get_default (); keybinding_manager_grab_keycode (self, _tmp2_, keysym, (guint) modifiers); _tmp3_ = keybinding_manager_keybinding_new (keysym, modifiers, handler, handler_target); binding = _tmp3_; _tmp4_ = binding; _tmp5_ = _keybinding_manager_keybinding_ref0 (_tmp4_); self->priv->m_bindings = g_list_append (self->priv->m_bindings, _tmp5_); 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_; GList* _tmp18_; 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_; KeybindingManagerKeybinding* binding = NULL; _tmp1_ = _keybinding_manager_keybinding_ref0 ((KeybindingManagerKeybinding*) binding_it->data); binding = _tmp1_; { gboolean _tmp2_ = FALSE; KeybindingManagerKeybinding* _tmp3_; guint _tmp4_; guint _tmp5_; _tmp3_ = binding; _tmp4_ = keybinding_manager_keybinding_get_keysym (_tmp3_); _tmp5_ = _tmp4_; if (_tmp5_ == keysym) { KeybindingManagerKeybinding* _tmp6_; GdkModifierType _tmp7_; GdkModifierType _tmp8_; _tmp6_ = binding; _tmp7_ = keybinding_manager_keybinding_get_modifiers (_tmp6_); _tmp8_ = _tmp7_; _tmp2_ = _tmp8_ == modifiers; } else { _tmp2_ = FALSE; } if (_tmp2_) { GdkDisplay* _tmp9_; KeybindingManagerKeybinding* _tmp10_; guint _tmp11_; guint _tmp12_; KeybindingManagerKeybinding* _tmp13_; GdkModifierType _tmp14_; GdkModifierType _tmp15_; KeybindingManagerKeybinding* _tmp16_; KeybindingManagerKeybinding* _tmp17_; _tmp9_ = gdk_display_get_default (); _tmp10_ = binding; _tmp11_ = keybinding_manager_keybinding_get_keysym (_tmp10_); _tmp12_ = _tmp11_; _tmp13_ = binding; _tmp14_ = keybinding_manager_keybinding_get_modifiers (_tmp13_); _tmp15_ = _tmp14_; keybinding_manager_ungrab_keycode (self, _tmp9_, _tmp12_, (guint) _tmp15_); _tmp16_ = binding; _tmp17_ = _keybinding_manager_keybinding_ref0 (_tmp16_); remove_bindings = g_list_append (remove_bindings, _tmp17_); } _keybinding_manager_keybinding_unref0 (binding); } } } _tmp18_ = remove_bindings; { GList* binding_collection = NULL; GList* binding_it = NULL; binding_collection = _tmp18_; for (binding_it = binding_collection; binding_it != NULL; binding_it = binding_it->next) { KeybindingManagerKeybinding* _tmp19_; KeybindingManagerKeybinding* binding = NULL; _tmp19_ = _keybinding_manager_keybinding_ref0 ((KeybindingManagerKeybinding*) binding_it->data); binding = _tmp19_; { KeybindingManagerKeybinding* _tmp20_; _tmp20_ = binding; self->priv->m_bindings = g_list_remove (self->priv->m_bindings, _tmp20_); _keybinding_manager_keybinding_unref0 (binding); } } } (remove_bindings == NULL) ? NULL : (remove_bindings = (_g_list_free__keybinding_manager_keybinding_unref0_ (remove_bindings), NULL)); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } KeybindingManager* keybinding_manager_get_instance (void) { KeybindingManager* _tmp0_; KeybindingManager* _tmp2_; KeybindingManager* _tmp3_; KeybindingManager* result = NULL; _tmp0_ = keybinding_manager_m_instance; if (_tmp0_ == NULL) { KeybindingManager* _tmp1_; _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) { static const GdkModifierType masks[8] = {GDK_MOD5_MASK, GDK_MOD4_MASK, GDK_MOD3_MASK, GDK_MOD2_MASK, GDK_MOD1_MASK, GDK_CONTROL_MASK, GDK_SHIFT_MASK, GDK_LOCK_MASK}; GdkModifierType result = 0U; { gint i = 0; i = 0; { gboolean _tmp0_ = FALSE; _tmp0_ = TRUE; while (TRUE) { GdkModifierType mask = 0U; GdkModifierType _tmp2_; GdkModifierType _tmp3_; GdkModifierType _tmp4_; if (!_tmp0_) { gint _tmp1_; _tmp1_ = i; i = _tmp1_ + 1; } _tmp0_ = FALSE; if (!(i < G_N_ELEMENTS (masks))) { break; } _tmp2_ = masks[i]; mask = _tmp2_; _tmp3_ = mask; _tmp4_ = mask; if ((binding_mask & _tmp3_) == ((guint) _tmp4_)) { 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) { GdkEventKey* keyevent = NULL; GdkEventKey* _tmp0_; GdkEventKey* _tmp1_; GdkEventKey* _tmp2_; GdkDevice* device = NULL; GdkDevice* _tmp3_; GdkDevice* _tmp4_; GdkDevice* pointer = NULL; GdkDevice* _tmp5_; gdouble* axes = NULL; gint axes_length1; gint _axes_size_; guint modifier = 0U; GdkDevice* _tmp11_; GdkEventKey* _tmp12_; GdkWindow* _tmp13_; gdouble* _tmp14_; gint _tmp14__length1; GdkModifierType _tmp15_ = 0U; gboolean result = FALSE; g_return_val_if_fail (event != NULL, FALSE); _tmp0_ = (GdkEventKey *) (event); _tmp1_ = _tmp0_; _tmp2_ = __vala_GdkEventKey_copy0 (_tmp1_); keyevent = _tmp2_; if (primary_modifier == ((guint) 0)) { result = FALSE; __vala_GdkEventKey_free0 (keyevent); return result; } _tmp3_ = gdk_event_get_device (event); _tmp4_ = _g_object_ref0 (_tmp3_); device = _tmp4_; _tmp5_ = device; if (gdk_device_get_source (_tmp5_) == GDK_SOURCE_KEYBOARD) { GdkDevice* _tmp6_; GdkDevice* _tmp7_; GdkDevice* _tmp8_; _tmp6_ = device; _tmp7_ = gdk_device_get_associated_device (_tmp6_); _tmp8_ = _g_object_ref0 (_tmp7_); _g_object_unref0 (pointer); pointer = _tmp8_; } else { GdkDevice* _tmp9_; GdkDevice* _tmp10_; _tmp9_ = device; _tmp10_ = _g_object_ref0 (_tmp9_); _g_object_unref0 (pointer); pointer = _tmp10_; } axes = NULL; axes_length1 = 0; _axes_size_ = axes_length1; modifier = (guint) 0; _tmp11_ = pointer; _tmp12_ = keyevent; _tmp13_ = _tmp12_->window; _tmp14_ = axes; _tmp14__length1 = axes_length1; gdk_device_get_state (_tmp11_, _tmp13_, _tmp14_, &_tmp15_); modifier = (guint) _tmp15_; if ((primary_modifier & modifier) == primary_modifier) { 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; switch (keyval) { 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) { g_return_if_fail (self != NULL); g_return_if_fail (event != NULL); { gboolean _tmp0_ = FALSE; _tmp0_ = TRUE; while (TRUE) { GdkEventAny* _tmp1_; GdkEventAny* _tmp2_; GdkWindow* _tmp3_; GdkWindow* _tmp4_; GdkEventType _tmp5_; if (!_tmp0_) { if (!FALSE) { break; } } _tmp0_ = FALSE; _tmp1_ = (GdkEventAny *) (event); _tmp2_ = _tmp1_; _tmp3_ = _tmp2_->window; _tmp4_ = gdk_get_default_root_window (); if (_tmp3_ != _tmp4_) { break; } _tmp5_ = event->type; if (_tmp5_ == GDK_KEY_PRESS) { guint modifiers = 0U; GdkEventKey* _tmp6_; GdkEventKey* _tmp7_; GdkModifierType _tmp8_; guint keyval = 0U; GdkEventKey* _tmp9_; GdkEventKey* _tmp10_; gboolean _tmp11_ = FALSE; gboolean _tmp12_ = FALSE; GList* _tmp13_; _tmp6_ = (GdkEventKey *) (event); _tmp7_ = _tmp6_; _tmp8_ = _tmp7_->state; modifiers = (guint) (_tmp8_ & KEYBINDING_MANAGER_MODIFIER_FILTER); _tmp9_ = (GdkEventKey *) (event); _tmp10_ = _tmp9_; keyval = _tmp10_->keyval; if (keyval >= ((guint) IBUS_KEY_A)) { _tmp12_ = keyval <= ((guint) IBUS_KEY_Z); } else { _tmp12_ = FALSE; } if (_tmp12_) { _tmp11_ = (modifiers & GDK_SHIFT_MASK) != ((guint) 0); } else { _tmp11_ = FALSE; } if (_tmp11_) { keyval = (keyval - IBUS_KEY_A) + IBUS_KEY_a; } _tmp13_ = self->priv->m_bindings; { GList* binding_collection = NULL; GList* binding_it = NULL; binding_collection = _tmp13_; for (binding_it = binding_collection; binding_it != NULL; binding_it = binding_it->next) { KeybindingManagerKeybinding* _tmp14_; KeybindingManagerKeybinding* binding = NULL; _tmp14_ = _keybinding_manager_keybinding_ref0 ((KeybindingManagerKeybinding*) binding_it->data); binding = _tmp14_; { gboolean _tmp15_ = FALSE; KeybindingManagerKeybinding* _tmp16_; guint _tmp17_; guint _tmp18_; KeybindingManagerKeybinding* _tmp22_; KeybindingManagerKeybindingHandlerFunc _tmp23_ = NULL; gpointer _tmp23__target = NULL; KeybindingManagerKeybindingHandlerFunc _tmp24_; gpointer _tmp24__target; _tmp16_ = binding; _tmp17_ = keybinding_manager_keybinding_get_keysym (_tmp16_); _tmp18_ = _tmp17_; if (keyval != _tmp18_) { _tmp15_ = TRUE; } else { KeybindingManagerKeybinding* _tmp19_; GdkModifierType _tmp20_; GdkModifierType _tmp21_; _tmp19_ = binding; _tmp20_ = keybinding_manager_keybinding_get_modifiers (_tmp19_); _tmp21_ = _tmp20_; _tmp15_ = modifiers != ((guint) _tmp21_); } if (_tmp15_) { _keybinding_manager_keybinding_unref0 (binding); continue; } _tmp22_ = binding; _tmp23_ = keybinding_manager_keybinding_get_handler (_tmp22_, &_tmp23__target); _tmp24_ = _tmp23_; _tmp24__target = _tmp23__target; _tmp24_ (event, _tmp24__target); _keybinding_manager_keybinding_unref0 (binding); return; } } } } } } gtk_main_do_event (event); } static void _vala_array_add4 (gint* * array, gint* length, gint* size, gint value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gint, *array, *size); } (*array)[(*length)++] = value; } static void _vala_array_add5 (gint* * array, gint* length, gint* size, gint value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gint, *array, *size); } (*array)[(*length)++] = value; } static void _vala_array_add6 (gint* * array, gint* length, gint* size, gint value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (gint, *array, *size); } (*array)[(*length)++] = value; } static void _vala_array_add7 (XIGrabModifiers* * array, gint* length, gint* 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) { gint 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, gint* result_length1) { static const gint ignored_modifiers[3] = {(gint) LockMask, (gint) Mod2Mask, (gint) Mod5Mask}; gint* masks = NULL; gint* _tmp0_; gint masks_length1; gint _masks_size_; gint* _tmp11_; gint _tmp11__length1; XIGrabModifiers* ximodifiers = NULL; XIGrabModifiers* _tmp12_; gint ximodifiers_length1; gint _ximodifiers_size_; gint* _tmp13_; gint _tmp13__length1; XIGrabModifiers* _tmp16_; gint _tmp16__length1; XIGrabModifiers* result = NULL; 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 modifier = 0; gint _tmp3_; gint* _tmp4_; gint _tmp4__length1; gint length = 0; gint* _tmp5_; gint _tmp5__length1; if (!_tmp1_) { gint _tmp2_; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; if (!(i < G_N_ELEMENTS (ignored_modifiers))) { break; } _tmp3_ = ignored_modifiers[i]; modifier = _tmp3_; _tmp4_ = masks; _tmp4__length1 = masks_length1; _vala_array_add4 (&masks, &masks_length1, &_masks_size_, modifier); _tmp5_ = masks; _tmp5__length1 = masks_length1; length = _tmp5__length1; { gint j = 0; j = 0; { gboolean _tmp6_ = FALSE; _tmp6_ = TRUE; while (TRUE) { gint* _tmp8_; gint _tmp8__length1; gint* _tmp9_; gint _tmp9__length1; gint _tmp10_; if (!_tmp6_) { gint _tmp7_; _tmp7_ = j; j = _tmp7_ + 1; } _tmp6_ = FALSE; if (!(j < (length - 1))) { break; } _tmp8_ = masks; _tmp8__length1 = masks_length1; _tmp9_ = masks; _tmp9__length1 = masks_length1; _tmp10_ = _tmp9_[j]; _vala_array_add5 (&masks, &masks_length1, &_masks_size_, _tmp10_ | modifier); } } } } } } _tmp11_ = masks; _tmp11__length1 = masks_length1; _vala_array_add6 (&masks, &masks_length1, &_masks_size_, 0); _tmp12_ = g_new0 (XIGrabModifiers, 0); ximodifiers = _tmp12_; ximodifiers_length1 = 0; _ximodifiers_size_ = ximodifiers_length1; _tmp13_ = masks; _tmp13__length1 = masks_length1; { gint* mask_collection = NULL; gint mask_collection_length1 = 0; gint _mask_collection_size_ = 0; gint mask_it = 0; mask_collection = _tmp13_; mask_collection_length1 = _tmp13__length1; for (mask_it = 0; mask_it < mask_collection_length1; mask_it = mask_it + 1) { gint mask = 0; mask = mask_collection[mask_it]; { XIGrabModifiers* _tmp14_; gint _tmp14__length1; XIGrabModifiers _tmp15_ = {0}; _tmp14_ = ximodifiers; _tmp14__length1 = ximodifiers_length1; memset (&_tmp15_, 0, sizeof (XIGrabModifiers)); _tmp15_.modifiers = mask | modifiers; _tmp15_.status = 0; _vala_array_add7 (&ximodifiers, &ximodifiers_length1, &_ximodifiers_size_, &_tmp15_); } } } _tmp16_ = ximodifiers; _tmp16__length1 = ximodifiers_length1; if (result_length1) { *result_length1 = _tmp16__length1; } result = _tmp16_; masks = (g_free (masks), NULL); return result; } static gboolean keybinding_manager_grab_keycode (KeybindingManager* self, GdkDisplay* display, guint keyval, guint modifiers) { Display* xdisplay = NULL; Display* _tmp0_; gint keycode = 0; Display* _tmp1_; XIEventMask evmask = {0}; guchar* _tmp2_; XIEventMask _tmp3_ = {0}; XIEventMask _tmp4_; guchar* _tmp5_; gint _tmp5__length1; XIEventMask _tmp6_; guchar* _tmp7_; gint _tmp7__length1; gint retval = 0; Display* _tmp8_; Display* _tmp9_; XIEventMask _tmp10_; gint _tmp11_ = 0; XIGrabModifiers* _tmp12_; XIGrabModifiers* _tmp13_; gint _tmp13__length1; gint _tmp14_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (display != NULL, FALSE); _tmp0_ = gdk_x11_display_get_xdisplay (G_TYPE_CHECK_INSTANCE_TYPE (display, gdk_x11_display_get_type ()) ? ((GdkX11Display*) display) : NULL); xdisplay = _tmp0_; _tmp1_ = xdisplay; keycode = (gint) XKeysymToKeycode (_tmp1_, (gulong) keyval); if (keycode == 0) { g_warning ("keybindingmanager.vala:260: Can not convert keyval=%u to keycode!", keyval); result = FALSE; return result; } _tmp2_ = g_new0 (guchar, (XI_LASTEVENT + 7) / 8); memset (&_tmp3_, 0, sizeof (XIEventMask)); _tmp3_.deviceid = XIAllMasterDevices; _tmp3_.mask = (g_free (_tmp3_.mask), NULL); _tmp3_.mask = _tmp2_; _tmp3_.mask_len = (XI_LASTEVENT + 7) / 8; evmask = _tmp3_; _tmp4_ = evmask; _tmp5_ = _tmp4_.mask; _tmp5__length1 = _tmp4_.mask_len; XISetMask (_tmp5_, XI_KeyPress); _tmp6_ = evmask; _tmp7_ = _tmp6_.mask; _tmp7__length1 = _tmp6_.mask_len; XISetMask (_tmp7_, XI_KeyRelease); _tmp8_ = xdisplay; _tmp9_ = xdisplay; _tmp10_ = evmask; _tmp12_ = keybinding_manager_get_grab_modifiers (self, modifiers, &_tmp11_); _tmp13_ = _tmp12_; _tmp13__length1 = _tmp11_; _tmp14_ = XIGrabKeycode (_tmp8_, XIAllMasterDevices, keycode, DefaultRootWindow (_tmp9_), (gint) GrabModeAsync, (gint) GrabModeAsync, TRUE, &_tmp10_, (gint) _tmp11_, _tmp13_); _tmp13_ = (_vala_XIGrabModifiers_array_free (_tmp13_, _tmp13__length1), NULL); retval = _tmp14_; result = retval == 0; (&evmask); return result; } static gboolean keybinding_manager_ungrab_keycode (KeybindingManager* self, GdkDisplay* display, guint keyval, guint modifiers) { Display* xdisplay = NULL; Display* _tmp0_; gint keycode = 0; Display* _tmp1_; gint retval = 0; Display* _tmp2_; Display* _tmp3_; gint _tmp4_ = 0; XIGrabModifiers* _tmp5_; XIGrabModifiers* _tmp6_; gint _tmp6__length1; gint _tmp7_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); g_return_val_if_fail (display != NULL, FALSE); _tmp0_ = gdk_x11_display_get_xdisplay (G_TYPE_CHECK_INSTANCE_TYPE (display, gdk_x11_display_get_type ()) ? ((GdkX11Display*) display) : NULL); xdisplay = _tmp0_; _tmp1_ = xdisplay; keycode = (gint) XKeysymToKeycode (_tmp1_, (gulong) keyval); if (keycode == 0) { g_warning ("keybindingmanager.vala:293: Can not convert keyval=%u to keycode!", keyval); result = FALSE; return result; } _tmp2_ = xdisplay; _tmp3_ = xdisplay; _tmp5_ = keybinding_manager_get_grab_modifiers (self, modifiers, &_tmp4_); _tmp6_ = _tmp5_; _tmp6__length1 = _tmp4_; _tmp7_ = XIUngrabKeycode (_tmp2_, XIAllMasterDevices, keycode, DefaultRootWindow (_tmp3_), (gint) _tmp4_, _tmp6_); _tmp6_ = (_vala_XIGrabModifiers_array_free (_tmp6_, _tmp6__length1), NULL); retval = _tmp7_; result = retval == 0; return result; } static inline gpointer keybinding_manager_keybinding_get_instance_private (KeybindingManagerKeybinding* self) { return G_STRUCT_MEMBER_P (self, KeybindingManagerKeybinding_private_offset); } static KeybindingManagerKeybinding* keybinding_manager_keybinding_construct (GType object_type, guint keysym, GdkModifierType modifiers, KeybindingManagerKeybindingHandlerFunc handler, gpointer handler_target) { KeybindingManagerKeybinding* self = NULL; self = (KeybindingManagerKeybinding*) g_type_create_instance (object_type); keybinding_manager_keybinding_set_keysym (self, keysym); keybinding_manager_keybinding_set_modifiers (self, modifiers); keybinding_manager_keybinding_set_handler (self, handler, handler_target); return self; } static KeybindingManagerKeybinding* keybinding_manager_keybinding_new (guint keysym, GdkModifierType modifiers, KeybindingManagerKeybindingHandlerFunc handler, gpointer 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; g_return_val_if_fail (self != NULL, 0U); result = self->priv->_keysym; return result; } static void keybinding_manager_keybinding_set_keysym (KeybindingManagerKeybinding* self, guint value) { g_return_if_fail (self != NULL); self->priv->_keysym = value; } static GdkModifierType keybinding_manager_keybinding_get_modifiers (KeybindingManagerKeybinding* self) { GdkModifierType result; GdkModifierType _tmp0_; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = self->priv->_modifiers; result = _tmp0_; return result; } static void keybinding_manager_keybinding_set_modifiers (KeybindingManagerKeybinding* self, GdkModifierType value) { g_return_if_fail (self != NULL); self->priv->_modifiers = value; } static KeybindingManagerKeybindingHandlerFunc keybinding_manager_keybinding_get_handler (KeybindingManagerKeybinding* self, gpointer* result_target) { KeybindingManagerKeybindingHandlerFunc result; KeybindingManagerKeybindingHandlerFunc _tmp0_; gpointer _tmp0__target; KeybindingManagerKeybindingHandlerFunc _tmp1_; gpointer _tmp1__target; 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) { g_return_if_fail (self != NULL); self->priv->_handler = value; self->priv->_handler_target = value_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, gpointer klass_data) { keybinding_manager_keybinding_parent_class = g_type_class_peek_parent (klass); ((KeybindingManagerKeybindingClass *) klass)->finalize = keybinding_manager_keybinding_finalize; g_type_class_adjust_private_offset (klass, &KeybindingManagerKeybinding_private_offset); } static void keybinding_manager_keybinding_instance_init (KeybindingManagerKeybinding * self, gpointer klass) { self->priv = keybinding_manager_keybinding_get_instance_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_once (void) { 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); KeybindingManagerKeybinding_private_offset = g_type_add_instance_private (keybinding_manager_keybinding_type_id, sizeof (KeybindingManagerKeybindingPrivate)); return keybinding_manager_keybinding_type_id; } 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)) { GType keybinding_manager_keybinding_type_id; keybinding_manager_keybinding_type_id = keybinding_manager_keybinding_get_type_once (); 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, gpointer klass_data) { keybinding_manager_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &KeybindingManager_private_offset); G_OBJECT_CLASS (klass)->finalize = keybinding_manager_finalize; } static void keybinding_manager_instance_init (KeybindingManager * self, gpointer klass) { self->priv = keybinding_manager_get_instance_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); (self->priv->m_bindings == NULL) ? NULL : (self->priv->m_bindings = (_g_list_free__keybinding_manager_keybinding_unref0_ (self->priv->m_bindings), NULL)); 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 registered * handler methods. * * @author Oliver Sauder */ static GType keybinding_manager_get_type_once (void) { 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); KeybindingManager_private_offset = g_type_add_instance_private (keybinding_manager_type_id, sizeof (KeybindingManagerPrivate)); return keybinding_manager_type_id; } 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)) { GType keybinding_manager_type_id; keybinding_manager_type_id = keybinding_manager_get_type_once (); g_once_init_leave (&keybinding_manager_type_id__volatile, keybinding_manager_type_id); } return keybinding_manager_type_id__volatile; } ibus-1.5.22/ui/gtk3/Makefile.in0000644000000000000000000014473013623751265013007 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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) 2015-2019 Takao Fujwiara # Copyright (c) 2007-2019 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_APPINDICATOR_TRUE@am__append_1 = --define=INDICATOR @ENABLE_APPINDICATOR_ENGINE_ICON_TRUE@am__append_2 = --define=INDICATOR_ENGINE_ICON @ENABLE_GDK3_WAYLAND_TRUE@am__append_3 = --pkg=gdk-wayland --define=USE_GDK_WAYLAND libexec_PROGRAMS = ibus-ui-gtk3$(EXEEXT) $(am__EXEEXT_1) @ENABLE_EMOJI_DICT_TRUE@am__append_4 = --define=EMOJI_DICT @ENABLE_EMOJI_DICT_TRUE@am__append_5 = ibus-ui-emojier \ @ENABLE_EMOJI_DICT_TRUE@ ibus-extension-gtk3 @ENABLE_EMOJI_DICT_TRUE@am__append_6 = emojierapp.c extension.c \ @ENABLE_EMOJI_DICT_TRUE@ panelbinding.c @ENABLE_EMOJI_DICT_TRUE@am__append_7 = gtkextension.xml @ENABLE_EMOJI_DICT_TRUE@am__append_8 = gtkextension.xml \ @ENABLE_EMOJI_DICT_TRUE@ $(desktop_DATA) \ @ENABLE_EMOJI_DICT_TRUE@ $(desktop_notrans_files) \ @ENABLE_EMOJI_DICT_TRUE@ $(man_seven_DATA) $(man_seven_files) \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) subdir = ui/gtk3 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 = @ENABLE_EMOJI_DICT_TRUE@am__EXEEXT_1 = ibus-ui-emojier$(EXEEXT) \ @ENABLE_EMOJI_DICT_TRUE@ ibus-extension-gtk3$(EXEEXT) am__installdirs = "$(DESTDIR)$(libexecdir)" \ "$(DESTDIR)$(componentdir)" "$(DESTDIR)$(desktopdir)" \ "$(DESTDIR)$(man_sevendir)" PROGRAMS = $(libexec_PROGRAMS) am__ibus_extension_gtk3_SOURCES_DIST = bindingcommon.c emojier.c \ extension.c iconwidget.c keybindingmanager.c panelbinding.c \ pango.c am__objects_1 = @ENABLE_EMOJI_DICT_TRUE@am__objects_2 = bindingcommon.$(OBJEXT) \ @ENABLE_EMOJI_DICT_TRUE@ emojier.$(OBJEXT) extension.$(OBJEXT) \ @ENABLE_EMOJI_DICT_TRUE@ iconwidget.$(OBJEXT) \ @ENABLE_EMOJI_DICT_TRUE@ keybindingmanager.$(OBJEXT) \ @ENABLE_EMOJI_DICT_TRUE@ panelbinding.$(OBJEXT) pango.$(OBJEXT) \ @ENABLE_EMOJI_DICT_TRUE@ $(am__objects_1) @ENABLE_EMOJI_DICT_TRUE@am_ibus_extension_gtk3_OBJECTS = \ @ENABLE_EMOJI_DICT_TRUE@ $(am__objects_2) $(am__objects_1) ibus_extension_gtk3_OBJECTS = $(am_ibus_extension_gtk3_OBJECTS) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(libibus) $(am__DEPENDENCIES_1) @ENABLE_EMOJI_DICT_TRUE@ibus_extension_gtk3_DEPENDENCIES = \ @ENABLE_EMOJI_DICT_TRUE@ $(am__DEPENDENCIES_2) \ @ENABLE_EMOJI_DICT_TRUE@ $(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__ibus_ui_emojier_SOURCES_DIST = emojierapp.c emojier.c iconwidget.c \ separator.c pango.c @ENABLE_EMOJI_DICT_TRUE@am__objects_3 = emojierapp.$(OBJEXT) \ @ENABLE_EMOJI_DICT_TRUE@ emojier.$(OBJEXT) iconwidget.$(OBJEXT) \ @ENABLE_EMOJI_DICT_TRUE@ separator.$(OBJEXT) pango.$(OBJEXT) \ @ENABLE_EMOJI_DICT_TRUE@ $(am__objects_1) @ENABLE_EMOJI_DICT_TRUE@am_ibus_ui_emojier_OBJECTS = $(am__objects_3) \ @ENABLE_EMOJI_DICT_TRUE@ $(am__objects_1) ibus_ui_emojier_OBJECTS = $(am_ibus_ui_emojier_OBJECTS) @ENABLE_EMOJI_DICT_TRUE@ibus_ui_emojier_DEPENDENCIES = \ @ENABLE_EMOJI_DICT_TRUE@ $(am__DEPENDENCIES_2) \ @ENABLE_EMOJI_DICT_TRUE@ $(am__DEPENDENCIES_1) am_ibus_ui_gtk3_OBJECTS = application.$(OBJEXT) \ bindingcommon.$(OBJEXT) candidatearea.$(OBJEXT) \ candidatepanel.$(OBJEXT) emojier.$(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) ibus_ui_gtk3_DEPENDENCIES = $(am__DEPENDENCIES_2) \ $(am__DEPENDENCIES_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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/application.Po \ ./$(DEPDIR)/bindingcommon.Po ./$(DEPDIR)/candidatearea.Po \ ./$(DEPDIR)/candidatepanel.Po ./$(DEPDIR)/emojier.Po \ ./$(DEPDIR)/emojierapp.Po ./$(DEPDIR)/extension.Po \ ./$(DEPDIR)/gen-notification-item.xml.Po \ ./$(DEPDIR)/gen-notification-watcher.xml.Po \ ./$(DEPDIR)/handle.Po ./$(DEPDIR)/iconwidget.Po \ ./$(DEPDIR)/indicator.Po ./$(DEPDIR)/keybindingmanager.Po \ ./$(DEPDIR)/panel.Po ./$(DEPDIR)/panelbinding.Po \ ./$(DEPDIR)/pango.Po ./$(DEPDIR)/property.Po \ ./$(DEPDIR)/propertypanel.Po ./$(DEPDIR)/separator.Po \ ./$(DEPDIR)/switcher.Po ./$(DEPDIR)/xkblayout.Po 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_extension_gtk3_SOURCES) $(ibus_ui_emojier_SOURCES) \ $(ibus_ui_gtk3_SOURCES) DIST_SOURCES = $(am__ibus_extension_gtk3_SOURCES_DIST) \ $(am__ibus_ui_emojier_SOURCES_DIST) $(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) $(desktop_DATA) $(man_seven_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 bindingcommon.c candidatearea.c candidatepanel.c \ emojier.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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ NULL = libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la component_DATA = gtkpanel.xml $(NULL) $(am__append_7) 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)\" \ -DPKGDATADIR=\"$(pkgdatadir)\" \ -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) \ $(am__append_1) $(am__append_2) $(am__append_3) \ $(am__append_4) ibus_ui_gtk3_SOURCES = \ application.vala \ bindingcommon.vala \ candidatearea.vala \ candidatepanel.vala \ emojier.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) $(am__append_8) MAINTAINERCLEANFILES = $(am__append_6) emoji_headers = \ ibusemojidialog.h \ $(NULL) man_seven_in_files = ibus-emoji.7.in # 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 = \ $(emoji_headers) \ $(man_seven_in_files) \ emojierapp.vala \ extension.vala \ gtkextension.xml.in \ gtkpanel.xml.in \ notification-item.xml \ notification-watcher.xml \ ibus-ui-emojier.desktop.in \ ibus-extension-gtk3.desktop.in \ panelbinding.vala \ $(NULL) @ENABLE_EMOJI_DICT_TRUE@ibus_ui_emojier_VALASOURCES = \ @ENABLE_EMOJI_DICT_TRUE@ emojierapp.vala \ @ENABLE_EMOJI_DICT_TRUE@ emojier.vala \ @ENABLE_EMOJI_DICT_TRUE@ iconwidget.vala \ @ENABLE_EMOJI_DICT_TRUE@ separator.vala \ @ENABLE_EMOJI_DICT_TRUE@ pango.vala \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@ibus_ui_emojier_SOURCES = \ @ENABLE_EMOJI_DICT_TRUE@ $(ibus_ui_emojier_VALASOURCES:.vala=.c) \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@ibus_ui_emojier_LDADD = \ @ENABLE_EMOJI_DICT_TRUE@ $(AM_LDADD) \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@ibus_ui_emojier_VALAFLAGS = \ @ENABLE_EMOJI_DICT_TRUE@ $(AM_VALAFLAGS) \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@ibus_extension_gtk3_VALASOURCES = \ @ENABLE_EMOJI_DICT_TRUE@ bindingcommon.vala \ @ENABLE_EMOJI_DICT_TRUE@ emojier.vala \ @ENABLE_EMOJI_DICT_TRUE@ extension.vala \ @ENABLE_EMOJI_DICT_TRUE@ iconwidget.vala \ @ENABLE_EMOJI_DICT_TRUE@ keybindingmanager.vala \ @ENABLE_EMOJI_DICT_TRUE@ panelbinding.vala \ @ENABLE_EMOJI_DICT_TRUE@ pango.vala \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@ibus_extension_gtk3_SOURCES = \ @ENABLE_EMOJI_DICT_TRUE@ $(ibus_extension_gtk3_VALASOURCES:.vala=.c) \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@ibus_extension_gtk3_LDADD = \ @ENABLE_EMOJI_DICT_TRUE@ $(AM_LDADD) \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@ibus_extension_gtk3_VALAFLAGS = \ @ENABLE_EMOJI_DICT_TRUE@ $(AM_VALAFLAGS) \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@man_seven_files = $(man_seven_in_files:.7.in=.7) @ENABLE_EMOJI_DICT_TRUE@man_seven_DATA = $(man_seven_files:.7=.7.gz) @ENABLE_EMOJI_DICT_TRUE@man_sevendir = $(mandir)/man7 @ENABLE_EMOJI_DICT_TRUE@desktop_in_files = \ @ENABLE_EMOJI_DICT_TRUE@ ibus-ui-emojier.desktop.in \ @ENABLE_EMOJI_DICT_TRUE@ ibus-extension-gtk3.desktop.in \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@desktop_notrans_files = $(desktop_in_files:.desktop.in=.desktop) @ENABLE_EMOJI_DICT_TRUE@desktop_DATA = \ @ENABLE_EMOJI_DICT_TRUE@ org.freedesktop.IBus.Panel.Emojier.desktop \ @ENABLE_EMOJI_DICT_TRUE@ org.freedesktop.IBus.Panel.Extension.Gtk3.desktop \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@desktopdir = $(datadir)/applications 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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-extension-gtk3$(EXEEXT): $(ibus_extension_gtk3_OBJECTS) $(ibus_extension_gtk3_DEPENDENCIES) $(EXTRA_ibus_extension_gtk3_DEPENDENCIES) @rm -f ibus-extension-gtk3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_extension_gtk3_OBJECTS) $(ibus_extension_gtk3_LDADD) $(LIBS) ibus-ui-emojier$(EXEEXT): $(ibus_ui_emojier_OBJECTS) $(ibus_ui_emojier_DEPENDENCIES) $(EXTRA_ibus_ui_emojier_DEPENDENCIES) @rm -f ibus-ui-emojier$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ibus_ui_emojier_OBJECTS) $(ibus_ui_emojier_LDADD) $(LIBS) 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@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bindingcommon.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/candidatearea.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/candidatepanel.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emojier.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emojierapp.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extension.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen-notification-item.xml.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gen-notification-watcher.xml.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/handle.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iconwidget.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/indicator.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keybindingmanager.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panelbinding.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pango.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/property.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/propertypanel.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/separator.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/switcher.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xkblayout.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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)/bindingcommon.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)/emojier.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 bindingcommon.vala candidatearea.vala candidatepanel.vala emojier.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 bindingcommon.vala candidatearea.vala candidatepanel.vala emojier.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) 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-man_sevenDATA: $(man_seven_DATA) @$(NORMAL_INSTALL) @list='$(man_seven_DATA)'; test -n "$(man_sevendir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(man_sevendir)'"; \ $(MKDIR_P) "$(DESTDIR)$(man_sevendir)" || 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_sevendir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man_sevendir)" || exit $$?; \ done uninstall-man_sevenDATA: @$(NORMAL_UNINSTALL) @list='$(man_seven_DATA)'; test -n "$(man_sevendir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(man_sevendir)'; $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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)" "$(DESTDIR)$(desktopdir)" "$(DESTDIR)$(man_sevendir)"; 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)/bindingcommon.c -rm -f $(srcdir)/candidatearea.c -rm -f $(srcdir)/candidatepanel.c -rm -f $(srcdir)/emojier.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 bindingcommon.c -rm -f candidatearea.c -rm -f candidatepanel.c -rm -f emojier.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 -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libexecPROGRAMS clean-libtool \ mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/application.Po -rm -f ./$(DEPDIR)/bindingcommon.Po -rm -f ./$(DEPDIR)/candidatearea.Po -rm -f ./$(DEPDIR)/candidatepanel.Po -rm -f ./$(DEPDIR)/emojier.Po -rm -f ./$(DEPDIR)/emojierapp.Po -rm -f ./$(DEPDIR)/extension.Po -rm -f ./$(DEPDIR)/gen-notification-item.xml.Po -rm -f ./$(DEPDIR)/gen-notification-watcher.xml.Po -rm -f ./$(DEPDIR)/handle.Po -rm -f ./$(DEPDIR)/iconwidget.Po -rm -f ./$(DEPDIR)/indicator.Po -rm -f ./$(DEPDIR)/keybindingmanager.Po -rm -f ./$(DEPDIR)/panel.Po -rm -f ./$(DEPDIR)/panelbinding.Po -rm -f ./$(DEPDIR)/pango.Po -rm -f ./$(DEPDIR)/property.Po -rm -f ./$(DEPDIR)/propertypanel.Po -rm -f ./$(DEPDIR)/separator.Po -rm -f ./$(DEPDIR)/switcher.Po -rm -f ./$(DEPDIR)/xkblayout.Po -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-desktopDATA \ install-man_sevenDATA 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 -f ./$(DEPDIR)/application.Po -rm -f ./$(DEPDIR)/bindingcommon.Po -rm -f ./$(DEPDIR)/candidatearea.Po -rm -f ./$(DEPDIR)/candidatepanel.Po -rm -f ./$(DEPDIR)/emojier.Po -rm -f ./$(DEPDIR)/emojierapp.Po -rm -f ./$(DEPDIR)/extension.Po -rm -f ./$(DEPDIR)/gen-notification-item.xml.Po -rm -f ./$(DEPDIR)/gen-notification-watcher.xml.Po -rm -f ./$(DEPDIR)/handle.Po -rm -f ./$(DEPDIR)/iconwidget.Po -rm -f ./$(DEPDIR)/indicator.Po -rm -f ./$(DEPDIR)/keybindingmanager.Po -rm -f ./$(DEPDIR)/panel.Po -rm -f ./$(DEPDIR)/panelbinding.Po -rm -f ./$(DEPDIR)/pango.Po -rm -f ./$(DEPDIR)/property.Po -rm -f ./$(DEPDIR)/propertypanel.Po -rm -f ./$(DEPDIR)/separator.Po -rm -f ./$(DEPDIR)/switcher.Po -rm -f ./$(DEPDIR)/xkblayout.Po -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-desktopDATA \ uninstall-libexecPROGRAMS uninstall-man_sevenDATA .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles 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-desktopDATA 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-man_sevenDATA 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-desktopDATA \ uninstall-libexecPROGRAMS uninstall-man_sevenDATA .PRECIOUS: Makefile %.xml: %.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 ";" >> $@ # This line and foo_VALASOURCES line can delete the duplicated entries # of emojier.c: emojier.vala @ENABLE_EMOJI_DICT_TRUE@emojierapp.c: $(ibus_ui_emojier_VALASOURCES) @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) \ @ENABLE_EMOJI_DICT_TRUE@$(VALAFLAGS) -C $(ibus_ui_emojier_VALASOURCES) @ENABLE_EMOJI_DICT_TRUE@ $(NULL) # make dist creates .c files in a different srcdir @ENABLE_EMOJI_DICT_TRUE@emojierapp.o: $(srcdir)/emojierapp.c @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_CC)source='$<' object='$@' libtool=no \ @ENABLE_EMOJI_DICT_TRUE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_CC_no)$(COMPILE) -c -o $@ $< @ENABLE_EMOJI_DICT_TRUE@ $(NULL) # This line and foo_VALASOURCES line can delete the duplicated entries # of emojier.c: emojier.vala @ENABLE_EMOJI_DICT_TRUE@extension.c: $(ibus_extension_gtk3_VALASOURCES) @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) \ @ENABLE_EMOJI_DICT_TRUE@$(VALAFLAGS) -C $(ibus_extension_gtk3_VALASOURCES) @ENABLE_EMOJI_DICT_TRUE@ $(NULL) # make dist creates .c files in a different srcdir @ENABLE_EMOJI_DICT_TRUE@extension.o: $(srcdir)/extension.c @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_CC)source='$<' object='$@' libtool=no \ @ENABLE_EMOJI_DICT_TRUE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_CC_no)$(COMPILE) -c -o $@ $< @ENABLE_EMOJI_DICT_TRUE@ $(NULL) # of emojier.c: emojier.vala @ENABLE_EMOJI_DICT_TRUE@panelbinding.c: $(ibus_extension_gtk3_VALASOURCES) @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_VALAC)$(am__cd) $(srcdir) && $(VALAC) $(AM_VALAFLAGS) \ @ENABLE_EMOJI_DICT_TRUE@$(VALAFLAGS) -C $(ibus_extension_gtk3_VALASOURCES) @ENABLE_EMOJI_DICT_TRUE@ $(NULL) # make dist creates .c files in a different srcdir @ENABLE_EMOJI_DICT_TRUE@panelbinding.o: $(srcdir)/panelbinding.c @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_CC)source='$<' object='$@' libtool=no \ @ENABLE_EMOJI_DICT_TRUE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_CC_no)$(COMPILE) -c -o $@ $< @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@%.7: %.7.in @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_GEN) sed \ @ENABLE_EMOJI_DICT_TRUE@ -e 's|@VERSION[@]|$(VERSION)|g' $< > $@.tmp && \ @ENABLE_EMOJI_DICT_TRUE@ mv $@.tmp $@ @ENABLE_EMOJI_DICT_TRUE@%.7.gz: %.7 @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_GEN) gzip -c $< > $@.tmp && mv $@.tmp $@ @ENABLE_EMOJI_DICT_TRUE@%.desktop: %.desktop.in @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_GEN) sed \ @ENABLE_EMOJI_DICT_TRUE@ -e 's|@libexecdir[@]|$(libexecdir)|g' $< > $@.tmp && \ @ENABLE_EMOJI_DICT_TRUE@ mv $@.tmp $@ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@org.freedesktop.IBus.Panel.Emojier.desktop: ibus-ui-emojier.desktop @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@org.freedesktop.IBus.Panel.Extension.Gtk3.desktop: ibus-extension-gtk3.desktop @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) # end of ENABLE_EMOJI_DICT -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.22/ui/gtk3/property.vala0000644000000000000000000001726613623750431013470 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.22/ui/gtk3/bindingcommon.vala0000644000000000000000000001716713623750431014427 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2018 Peng Huang * Copyright(c) 2018-2019 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 */ /* This file depends on keybindingmanager.vala */ class BindingCommon { public enum KeyEventFuncType { ANY, IME_SWITCHER, EMOJI_TYPING, } public class Keybinding : GLib.Object { public Keybinding(uint keysym, Gdk.ModifierType modifiers, bool reverse, KeyEventFuncType ftype) { this.keysym = keysym; this.modifiers = modifiers; this.reverse = reverse; this.ftype = ftype; } public uint keysym { get; set; } public Gdk.ModifierType modifiers { get; set; } public bool reverse { get; set; } public KeyEventFuncType ftype { get; set; } } public delegate void KeybindingFuncHandlerFunc(Gdk.Event event); public static void keybinding_manager_bind(KeybindingManager keybinding_manager, ref GLib.List keybindings, string? accelerator, KeyEventFuncType ftype, KeybindingManager.KeybindingHandlerFunc handler_normal, KeybindingManager.KeybindingHandlerFunc? handler_reverse) { 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_for_display(Gdk.Display.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, ftype); keybindings.append(keybinding); keybinding_manager.bind(switch_keysym, switch_modifiers, handler_normal); if (ftype == KeyEventFuncType.EMOJI_TYPING) { return; } // accelerator already has Shift mask if ((switch_modifiers & reverse_modifier) != 0) { return; } switch_modifiers |= reverse_modifier; keybinding = new Keybinding(switch_keysym, switch_modifiers, true, ftype); keybindings.append(keybinding); if (ftype == KeyEventFuncType.IME_SWITCHER) { keybinding_manager.bind(switch_keysym, switch_modifiers, handler_reverse); } return; } public static void unbind_switch_shortcut(KeyEventFuncType ftype, GLib.List keybindings) { var keybinding_manager = KeybindingManager.get_instance(); while (keybindings != null) { Keybinding keybinding = keybindings.data; if (ftype == KeyEventFuncType.ANY || ftype == keybinding.ftype) { keybinding_manager.unbind(keybinding.keysym, keybinding.modifiers); } keybindings = keybindings.next; } } public static void set_custom_font(GLib.Settings? settings_panel, GLib.Settings? settings_emoji, ref Gtk.CssProvider? css_provider) { 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; } if (settings_emoji != null) { string emoji_font = settings_emoji.get_string("font"); if (emoji_font == null) { warning("No config emoji:font."); return; } IBusEmojier.set_emoji_font(emoji_font); } if (settings_panel == null) return; bool use_custom_font = settings_panel.get_boolean("use-custom-font"); if (css_provider != null) { Gtk.StyleContext.remove_provider_for_screen(screen, css_provider); css_provider = null; } if (use_custom_font == false) { return; } string custom_font = settings_panel.get_string("custom-font"); if (custom_font == null) { warning("No config panel:custom-font."); return; } Pango.FontDescription font_desc = Pango.FontDescription.from_string(custom_font); string font_family = font_desc.get_family(); int font_size = font_desc.get_size() / Pango.SCALE; string data; if (Gtk.MAJOR_VERSION < 3 || (Gtk.MAJOR_VERSION == 3 && Gtk.MINOR_VERSION < 20)) { data = "GtkLabel { font: %s; }".printf(custom_font); } else { data = "label { font-family: %s; font-size: %dpt; }" .printf(font_family, font_size); } css_provider = new Gtk.CssProvider(); try { css_provider.load_from_data(data, -1); } catch (GLib.Error e) { warning("Failed css_provider_from_data: %s: %s", custom_font, e.message); return; } Gtk.StyleContext.add_provider_for_screen( screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); } } ibus-1.5.22/ui/gtk3/notification-watcher.xml0000644000000000000000000000240113623750431015563 00000000000000 ibus-1.5.22/ui/gtk3/application.c0000644000000000000000000005133513623751707013410 00000000000000/* application.c generated by valac 0.47.91, 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 * Copyright(c) 2017 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 #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 gint Application_private_offset; 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Application, application_unref) GType panel_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Panel, g_object_unref) Application* application_new (gchar** argv, gint argv_length1); Application* application_construct (GType object_type, gchar** argv, gint 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 panel_disconnect_signals (Panel* self); void application_main (gchar** argv, gint argv_length1); static void application_finalize (Application * obj); static GType application_get_type_once (void); static inline gpointer application_get_instance_private (Application* self) { return G_STRUCT_MEMBER_P (self, Application_private_offset); } 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, gint argv_length1) { Application* self = NULL; IBusBus* _tmp0_; IBusBus* _tmp1_; IBusBus* _tmp2_; IBusBus* _tmp3_; self = (Application*) g_type_create_instance (object_type); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); ibus_init (); gtk_init ((gint*) (&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; if (ibus_bus_is_connected (_tmp3_)) { application_init (self); } return self; } Application* application_new (gchar** argv, gint 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_; GDBusConnection* _tmp1_; GDBusConnection* _tmp2_; IBusBusNameFlag flags = 0U; IBusBus* _tmp3_; 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) { IBusBus* _tmp0_; Panel* _tmp1_; Panel* _tmp2_; 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); g_debug ("application.vala:77: signal_name = %s", signal_name); _tmp0_ = self->priv->m_bus; _tmp1_ = panel_new (_tmp0_); g_object_ref_sink (_tmp1_); _g_object_unref0 (self->priv->m_panel); self->priv->m_panel = _tmp1_; _tmp2_ = self->priv->m_panel; panel_load_settings (_tmp2_); } 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) { Panel* _tmp0_; 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); g_debug ("application.vala:94: signal_name = %s", signal_name); _tmp0_ = self->priv->m_panel; panel_disconnect_signals (_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:102: 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, gint argv_length1) { Application* app = NULL; Application* _tmp0_; g_unsetenv ("GDK_CORE_DEVICE_EVENTS"); gdk_set_allowed_backends ("x11"); _tmp0_ = application_new (argv, argv_length1); app = _tmp0_; application_run (app); _application_unref0 (app); } int main (int argc, char ** argv) { 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, gpointer klass_data) { application_parent_class = g_type_class_peek_parent (klass); ((ApplicationClass *) klass)->finalize = application_finalize; g_type_class_adjust_private_offset (klass, &Application_private_offset); } static void application_instance_init (Application * self, gpointer klass) { self->priv = application_get_instance_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); } static GType application_get_type_once (void) { 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); Application_private_offset = g_type_add_instance_private (application_type_id, sizeof (ApplicationPrivate)); return application_type_id; } GType application_get_type (void) { static volatile gsize application_type_id__volatile = 0; if (g_once_init_enter (&application_type_id__volatile)) { GType application_type_id; application_type_id = application_get_type_once (); 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.22/ui/gtk3/switcher.vala0000644000000000000000000004351413623750431013427 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2016 Peng Huang * Copyright(c) 2015-2019 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 Switcher : Gtk.Window { private class IBusEngineButton : Gtk.Button { public IBusEngineButton(IBus.EngineDesc engine, Switcher switcher) { GLib.Object(); var longname = engine.get_longname(); var textdomain = engine.get_textdomain(); this.transname = GLib.dgettext(textdomain, 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 transname { 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 bool m_is_running = false; private string m_input_context_path = ""; private GLib.MainLoop m_loop; private int m_result = -1; private IBus.EngineDesc? m_result_engine = null; 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 double m_mouse_init_x; private double m_mouse_init_y; private bool m_mouse_moved; 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); m_label.set_margin_start(3); m_label.set_margin_end(3); m_label.set_margin_top(3); m_label.set_margin_bottom(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, string input_context_path) { assert (m_loop == null); assert (index < engines.length); m_is_running = true; m_keyval = keyval; m_modifiers = state; m_primary_modifier = KeybindingManager.get_primary_modifier( state & KeybindingManager.MODIFIER_FILTER); m_selected_engine = m_result = index; m_input_context_path = input_context_path; m_result_engine = null; update_engines(engines); /* Let gtk recalculate the window size. */ resize(1, 1); m_label.set_text(m_buttons[index].transname); m_buttons[index].grab_focus(); // 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.Device pointer; #if VALA_0_34 Gdk.Seat seat = event.get_seat(); if (seat == null) { var display = get_display(); seat = display.get_default_seat(); } //keyboard = seat.get_keyboard(); pointer = seat.get_pointer(); Gdk.GrabStatus status; // Grab all keyboard events status = seat.grab(get_window(), Gdk.SeatCapabilities.KEYBOARD, true, null, event, null); if (status != Gdk.GrabStatus.SUCCESS) warning("Grab keyboard failed! status = %d", status); status = seat.grab(get_window(), Gdk.SeatCapabilities.POINTER, true, null, event, null); if (status != Gdk.GrabStatus.SUCCESS) warning("Grab pointer failed! status = %d", status); #else 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; if (device.get_source() == Gdk.InputSource.KEYBOARD) { keyboard = device; pointer = device.get_associated_device(); } else { pointer = device; keyboard = device.get_associated_device(); } 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); #endif // Probably we can delete m_popup_delay_time in 1.6 pointer.get_position_double(null, out m_mouse_init_x, out m_mouse_init_y); m_mouse_moved = false; m_loop = new GLib.MainLoop(); m_loop.run(); m_loop = null; #if VALA_0_34 seat.ungrab(); #else keyboard.ungrab(Gdk.CURRENT_TIME); pointer.ungrab(Gdk.CURRENT_TIME); #endif hide(); // Make sure the switcher is hidden before returning from this function. while (Gtk.events_pending()) Gtk.main_iteration (); GLib.assert(m_result < m_engines.length); m_result_engine = m_engines[m_result]; m_is_running = false; 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(); var textdomain = engine.get_textdomain(); var transname = GLib.dgettext(textdomain, longname); button.set_relief(Gtk.ReliefStyle.NONE); button.add_events(Gdk.EventMask.POINTER_MOTION_MASK); button.show(); button.enter_notify_event.connect((e) => { // avoid gtk_button_update_state() return true; }); button.motion_notify_event.connect((e) => { #if VALA_0_24 Gdk.EventMotion pe = e; #else Gdk.EventMotion *pe = &e; #endif if (m_selected_engine == index) return false; if (!m_mouse_moved && m_mouse_init_x == pe.x_root && m_mouse_init_y == pe.y_root) { return false; } m_mouse_moved = true; button.grab_focus(); m_selected_engine = index; return false; }); button.button_press_event.connect((e) => { m_selected_engine = index; m_result = (int)m_selected_engine; m_loop.quit(); return true; }); button.transname = transname; m_label.set_label(transname); 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].transname); m_label.set_ellipsize(Pango.EllipsizeMode.END); Gdk.Display display = Gdk.Display.get_default(); int screen_width = 0; #if VALA_0_34 // display.get_monitor_at_window() is null because of unrealized window Gdk.Monitor monitor = display.get_primary_monitor(); Gdk.Rectangle area = monitor.get_geometry(); screen_width = area.width; #else Gdk.Screen screen = (display != null) ? display.get_default_screen() : null; if (screen != null) { screen_width = screen.get_width(); } #endif 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].transname); 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].transname); 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(); int length = language.length; /* Maybe invalid layout */ if (length < 2) return language; language = language.up(); int index = 0; foreach (var saved_language in m_xkb_languages.get_values()) { if (language == saved_language[0:length]) index++; } if (index > 0) { unichar u = 0x2081 + index; language = "%s%s".printf(language, u.to_string()); } m_xkb_languages.insert(name, language); return language; } public bool is_running() { return m_is_running; } public string get_input_context_path() { return m_input_context_path; } public IBus.EngineDesc? get_selected_engine() { return m_result_engine; } public void reset() { m_input_context_path = ""; m_result = -1; m_result_engine = null; } } ibus-1.5.22/ui/gtk3/iconwidget.c0000644000000000000000000006347113623751710013237 00000000000000/* iconwidget.c generated by valac 0.47.91, 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 * Copyright(c) 2018 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 #define TYPE_THEMED_RGBA (themed_rgba_get_type ()) #define THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THEMED_RGBA, ThemedRGBA)) #define THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THEMED_RGBA, ThemedRGBAClass)) #define IS_THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THEMED_RGBA)) #define IS_THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THEMED_RGBA)) #define THEMED_RGBA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THEMED_RGBA, ThemedRGBAClass)) typedef struct _ThemedRGBA ThemedRGBA; typedef struct _ThemedRGBAClass ThemedRGBAClass; typedef struct _ThemedRGBAPrivate ThemedRGBAPrivate; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _gtk_widget_path_unref0(var) ((var == NULL) ? NULL : (var = (gtk_widget_path_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) typedef struct _ParamSpecThemedRGBA ParamSpecThemedRGBA; #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; enum { ICON_WIDGET_0_PROPERTY, ICON_WIDGET_NUM_PROPERTIES }; static GParamSpec* icon_widget_properties[ICON_WIDGET_NUM_PROPERTIES]; #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) struct _ThemedRGBA { GTypeInstance parent_instance; volatile int ref_count; ThemedRGBAPrivate * priv; }; struct _ThemedRGBAClass { GTypeClass parent_class; void (*finalize) (ThemedRGBA *self); }; struct _ThemedRGBAPrivate { GdkRGBA* _normal_fg; GdkRGBA* _normal_bg; GdkRGBA* _selected_fg; GdkRGBA* _selected_bg; GtkStyleContext* m_style_context; }; struct _ParamSpecThemedRGBA { GParamSpec parent_instance; }; struct _IconWidget { GtkImage parent_instance; IconWidgetPrivate * priv; }; struct _IconWidgetClass { GtkImageClass parent_class; }; static gint ThemedRGBA_private_offset; static gpointer themed_rgba_parent_class = NULL; static gpointer icon_widget_parent_class = NULL; gpointer themed_rgba_ref (gpointer instance); void themed_rgba_unref (gpointer instance); GParamSpec* param_spec_themed_rgba (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_themed_rgba (GValue* value, gpointer v_object); void value_take_themed_rgba (GValue* value, gpointer v_object); gpointer value_get_themed_rgba (const GValue* value); GType themed_rgba_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (ThemedRGBA, themed_rgba_unref) static void themed_rgba_reset_rgba (ThemedRGBA* self); ThemedRGBA* themed_rgba_new (GtkWidget* widget); ThemedRGBA* themed_rgba_construct (GType object_type, GtkWidget* widget); void themed_rgba_set_normal_fg (ThemedRGBA* self, GdkRGBA* value); void themed_rgba_set_normal_bg (ThemedRGBA* self, GdkRGBA* value); void themed_rgba_set_selected_fg (ThemedRGBA* self, GdkRGBA* value); void themed_rgba_set_selected_bg (ThemedRGBA* self, GdkRGBA* value); static void themed_rgba_get_rgba (ThemedRGBA* self); static void __lambda4_ (ThemedRGBA* self); static void ___lambda4__gtk_style_context_changed (GtkStyleContext* _sender, gpointer self); GdkRGBA* themed_rgba_get_normal_fg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_normal_bg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_fg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_bg (ThemedRGBA* self); static void themed_rgba_finalize (ThemedRGBA * obj); static GType themed_rgba_get_type_once (void); GType icon_widget_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IconWidget, g_object_unref) 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 GType icon_widget_get_type_once (void); static inline gpointer themed_rgba_get_instance_private (ThemedRGBA* self) { return G_STRUCT_MEMBER_P (self, ThemedRGBA_private_offset); } static void __lambda4_ (ThemedRGBA* self) { themed_rgba_get_rgba (self); } static void ___lambda4__gtk_style_context_changed (GtkStyleContext* _sender, gpointer self) { __lambda4_ ((ThemedRGBA*) self); } ThemedRGBA* themed_rgba_construct (GType object_type, GtkWidget* widget) { ThemedRGBA* self = NULL; GtkWidgetPath* widget_path = NULL; GtkWidgetPath* _tmp0_; GtkStyleContext* _tmp1_; GtkStyleContext* _tmp2_; GtkStyleContext* _tmp3_; GtkStyleContext* _tmp4_; GtkStyleContext* _tmp5_; GtkStyleContext* _tmp6_; g_return_val_if_fail (widget != NULL, NULL); self = (ThemedRGBA*) g_type_create_instance (object_type); themed_rgba_set_normal_fg (self, NULL); themed_rgba_set_normal_bg (self, NULL); themed_rgba_set_selected_fg (self, NULL); themed_rgba_set_selected_bg (self, NULL); _tmp0_ = gtk_widget_path_new (); widget_path = _tmp0_; gtk_widget_path_append_type (widget_path, gtk_text_view_get_type ()); _tmp1_ = gtk_style_context_new (); _g_object_unref0 (self->priv->m_style_context); self->priv->m_style_context = _tmp1_; _tmp2_ = self->priv->m_style_context; gtk_style_context_set_path (_tmp2_, widget_path); _tmp3_ = self->priv->m_style_context; gtk_style_context_add_class (_tmp3_, GTK_STYLE_CLASS_VIEW); _tmp4_ = self->priv->m_style_context; _tmp5_ = gtk_widget_get_style_context (widget); gtk_style_context_set_parent (_tmp4_, _tmp5_); themed_rgba_get_rgba (self); _tmp6_ = self->priv->m_style_context; g_signal_connect (_tmp6_, "changed", (GCallback) ___lambda4__gtk_style_context_changed, self); _gtk_widget_path_unref0 (widget_path); return self; } ThemedRGBA* themed_rgba_new (GtkWidget* widget) { return themed_rgba_construct (TYPE_THEMED_RGBA, widget); } static void themed_rgba_reset_rgba (ThemedRGBA* self) { GdkRGBA* _tmp0_; GdkRGBA* _tmp2_; GdkRGBA* _tmp4_; GdkRGBA* _tmp6_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->_normal_fg; if (_tmp0_ != NULL) { GdkRGBA* _tmp1_; _tmp1_ = self->priv->_normal_fg; gdk_rgba_free (_tmp1_); themed_rgba_set_normal_fg (self, NULL); } _tmp2_ = self->priv->_normal_bg; if (_tmp2_ != NULL) { GdkRGBA* _tmp3_; _tmp3_ = self->priv->_normal_bg; gdk_rgba_free (_tmp3_); themed_rgba_set_normal_bg (self, NULL); } _tmp4_ = self->priv->_selected_fg; if (_tmp4_ != NULL) { GdkRGBA* _tmp5_; _tmp5_ = self->priv->_selected_fg; gdk_rgba_free (_tmp5_); themed_rgba_set_selected_fg (self, NULL); } _tmp6_ = self->priv->_selected_bg; if (_tmp6_ != NULL) { GdkRGBA* _tmp7_; _tmp7_ = self->priv->_selected_bg; gdk_rgba_free (_tmp7_); themed_rgba_set_selected_bg (self, NULL); } } static void themed_rgba_get_rgba (ThemedRGBA* self) { GdkRGBA* normal_fg = NULL; GdkRGBA* normal_bg = NULL; GdkRGBA* selected_fg = NULL; GdkRGBA* selected_bg = NULL; GtkStyleContext* _tmp0_; GdkRGBA* _tmp1_ = NULL; GtkStyleContext* _tmp2_; GdkRGBA* _tmp3_ = NULL; gchar* bg_prop = NULL; gchar* _tmp4_; GtkStyleContext* _tmp5_; const gchar* _tmp6_; GdkRGBA* _tmp7_ = NULL; GtkStyleContext* _tmp8_; const gchar* _tmp9_; GdkRGBA* _tmp10_ = NULL; gboolean _tmp11_ = FALSE; gboolean _tmp12_ = FALSE; gboolean _tmp13_ = FALSE; GdkRGBA* _tmp14_; GdkRGBA* _tmp15_; GdkRGBA* _tmp29_; GdkRGBA* _tmp30_; GdkRGBA* _tmp31_; GdkRGBA* _tmp32_; g_return_if_fail (self != NULL); themed_rgba_reset_rgba (self); normal_fg = NULL; normal_bg = NULL; selected_fg = NULL; selected_bg = NULL; _tmp0_ = self->priv->m_style_context; gtk_style_context_get (_tmp0_, GTK_STATE_FLAG_NORMAL, "color", &_tmp1_, NULL); normal_fg = _tmp1_; _tmp2_ = self->priv->m_style_context; gtk_style_context_get (_tmp2_, GTK_STATE_FLAG_SELECTED, "color", &_tmp3_, NULL); selected_fg = _tmp3_; _tmp4_ = g_strdup ("background-color"); bg_prop = _tmp4_; _tmp5_ = self->priv->m_style_context; _tmp6_ = bg_prop; gtk_style_context_get (_tmp5_, GTK_STATE_FLAG_NORMAL, _tmp6_, &_tmp7_, NULL); normal_bg = _tmp7_; _tmp8_ = self->priv->m_style_context; _tmp9_ = bg_prop; gtk_style_context_get (_tmp8_, GTK_STATE_FLAG_SELECTED, _tmp9_, &_tmp10_, NULL); selected_bg = _tmp10_; _tmp14_ = normal_bg; _tmp15_ = selected_bg; if ((*_tmp14_).red == (*_tmp15_).red) { GdkRGBA* _tmp16_; GdkRGBA* _tmp17_; _tmp16_ = normal_bg; _tmp17_ = selected_bg; _tmp13_ = (*_tmp16_).green == (*_tmp17_).green; } else { _tmp13_ = FALSE; } if (_tmp13_) { GdkRGBA* _tmp18_; GdkRGBA* _tmp19_; _tmp18_ = normal_bg; _tmp19_ = selected_bg; _tmp12_ = (*_tmp18_).blue == (*_tmp19_).blue; } else { _tmp12_ = FALSE; } if (_tmp12_) { GdkRGBA* _tmp20_; GdkRGBA* _tmp21_; _tmp20_ = normal_bg; _tmp21_ = selected_bg; _tmp11_ = (*_tmp20_).alpha == (*_tmp21_).alpha; } else { _tmp11_ = FALSE; } if (_tmp11_) { gchar* _tmp22_; GtkStyleContext* _tmp23_; const gchar* _tmp24_; GdkRGBA* _tmp25_ = NULL; GtkStyleContext* _tmp26_; const gchar* _tmp27_; GdkRGBA* _tmp28_ = NULL; gdk_rgba_free (normal_bg); normal_bg = NULL; gdk_rgba_free (normal_bg); normal_bg = NULL; _tmp22_ = g_strdup ("-gtk-secondary-caret-color"); _g_free0 (bg_prop); bg_prop = _tmp22_; _tmp23_ = self->priv->m_style_context; _tmp24_ = bg_prop; gtk_style_context_get (_tmp23_, GTK_STATE_FLAG_NORMAL, _tmp24_, &_tmp25_, NULL); normal_bg = _tmp25_; _tmp26_ = self->priv->m_style_context; _tmp27_ = bg_prop; gtk_style_context_get (_tmp26_, GTK_STATE_FLAG_SELECTED, _tmp27_, &_tmp28_, NULL); selected_bg = _tmp28_; } _tmp29_ = normal_fg; themed_rgba_set_normal_fg (self, _tmp29_); _tmp30_ = normal_bg; themed_rgba_set_normal_bg (self, _tmp30_); _tmp31_ = selected_fg; themed_rgba_set_selected_fg (self, _tmp31_); _tmp32_ = selected_bg; themed_rgba_set_selected_bg (self, _tmp32_); _g_free0 (bg_prop); } GdkRGBA* themed_rgba_get_normal_fg (ThemedRGBA* self) { GdkRGBA* result; GdkRGBA* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_normal_fg; result = _tmp0_; return result; } void themed_rgba_set_normal_fg (ThemedRGBA* self, GdkRGBA* value) { g_return_if_fail (self != NULL); self->priv->_normal_fg = value; } GdkRGBA* themed_rgba_get_normal_bg (ThemedRGBA* self) { GdkRGBA* result; GdkRGBA* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_normal_bg; result = _tmp0_; return result; } void themed_rgba_set_normal_bg (ThemedRGBA* self, GdkRGBA* value) { g_return_if_fail (self != NULL); self->priv->_normal_bg = value; } GdkRGBA* themed_rgba_get_selected_fg (ThemedRGBA* self) { GdkRGBA* result; GdkRGBA* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_selected_fg; result = _tmp0_; return result; } void themed_rgba_set_selected_fg (ThemedRGBA* self, GdkRGBA* value) { g_return_if_fail (self != NULL); self->priv->_selected_fg = value; } GdkRGBA* themed_rgba_get_selected_bg (ThemedRGBA* self) { GdkRGBA* result; GdkRGBA* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_selected_bg; result = _tmp0_; return result; } void themed_rgba_set_selected_bg (ThemedRGBA* self, GdkRGBA* value) { g_return_if_fail (self != NULL); self->priv->_selected_bg = value; } static void value_themed_rgba_init (GValue* value) { value->data[0].v_pointer = NULL; } static void value_themed_rgba_free_value (GValue* value) { if (value->data[0].v_pointer) { themed_rgba_unref (value->data[0].v_pointer); } } static void value_themed_rgba_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = themed_rgba_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer value_themed_rgba_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* value_themed_rgba_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { ThemedRGBA * 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 = themed_rgba_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* value_themed_rgba_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { ThemedRGBA ** 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 = themed_rgba_ref (value->data[0].v_pointer); } return NULL; } GParamSpec* param_spec_themed_rgba (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { ParamSpecThemedRGBA* spec; g_return_val_if_fail (g_type_is_a (object_type, TYPE_THEMED_RGBA), 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_themed_rgba (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_THEMED_RGBA), NULL); return value->data[0].v_pointer; } void value_set_themed_rgba (GValue* value, gpointer v_object) { ThemedRGBA * old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_THEMED_RGBA)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_THEMED_RGBA)); 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; themed_rgba_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { themed_rgba_unref (old); } } void value_take_themed_rgba (GValue* value, gpointer v_object) { ThemedRGBA * old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_THEMED_RGBA)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_THEMED_RGBA)); 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) { themed_rgba_unref (old); } } static void themed_rgba_class_init (ThemedRGBAClass * klass, gpointer klass_data) { themed_rgba_parent_class = g_type_class_peek_parent (klass); ((ThemedRGBAClass *) klass)->finalize = themed_rgba_finalize; g_type_class_adjust_private_offset (klass, &ThemedRGBA_private_offset); } static void themed_rgba_instance_init (ThemedRGBA * self, gpointer klass) { self->priv = themed_rgba_get_instance_private (self); self->ref_count = 1; } static void themed_rgba_finalize (ThemedRGBA * obj) { ThemedRGBA * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_THEMED_RGBA, ThemedRGBA); g_signal_handlers_destroy (self); themed_rgba_reset_rgba (self); _g_object_unref0 (self->priv->m_style_context); } static GType themed_rgba_get_type_once (void) { static const GTypeValueTable g_define_type_value_table = { value_themed_rgba_init, value_themed_rgba_free_value, value_themed_rgba_copy_value, value_themed_rgba_peek_pointer, "p", value_themed_rgba_collect_value, "p", value_themed_rgba_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (ThemedRGBAClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) themed_rgba_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ThemedRGBA), 0, (GInstanceInitFunc) themed_rgba_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 themed_rgba_type_id; themed_rgba_type_id = g_type_register_fundamental (g_type_fundamental_next (), "ThemedRGBA", &g_define_type_info, &g_define_type_fundamental_info, 0); ThemedRGBA_private_offset = g_type_add_instance_private (themed_rgba_type_id, sizeof (ThemedRGBAPrivate)); return themed_rgba_type_id; } GType themed_rgba_get_type (void) { static volatile gsize themed_rgba_type_id__volatile = 0; if (g_once_init_enter (&themed_rgba_type_id__volatile)) { GType themed_rgba_type_id; themed_rgba_type_id = themed_rgba_get_type_once (); g_once_init_leave (&themed_rgba_type_id__volatile, themed_rgba_type_id); } return themed_rgba_type_id__volatile; } gpointer themed_rgba_ref (gpointer instance) { ThemedRGBA * self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } void themed_rgba_unref (gpointer instance) { ThemedRGBA * self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { THEMED_RGBA_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } /** * 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 _tmp0_; gchar result = '\0'; g_return_val_if_fail (self != NULL, '\0'); _tmp0_ = ((gchar*) self)[index]; result = _tmp0_; 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; gint _tmp0_ = 0; gint _tmp1_ = 0; GdkPixbuf* _tmp17_; gfloat width = 0.0F; GdkPixbuf* _tmp18_; gfloat height = 0.0F; GdkPixbuf* _tmp19_; gfloat _tmp20_ = 0.0F; gfloat scale = 0.0F; GdkPixbuf* _tmp21_; GdkPixbuf* _tmp22_; GdkPixbuf* _tmp23_; GError* _inner_error0_ = NULL; g_return_val_if_fail (icon_name_or_path != NULL, NULL); self = (IconWidget*) g_object_new (object_type, NULL); pixbuf = NULL; gtk_icon_size_lookup (size, &_tmp0_, &_tmp1_); fixed_width = _tmp0_; fixed_height = _tmp1_; { if (string_get (icon_name_or_path, (glong) 0) == '/') { GdkPixbuf* _tmp2_ = NULL; GdkPixbuf* _tmp3_; GdkPixbuf* _tmp4_; _tmp3_ = gdk_pixbuf_new_from_file (icon_name_or_path, &_inner_error0_); _tmp2_ = _tmp3_; if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch0_g_error; } _tmp4_ = _tmp2_; _tmp2_ = NULL; _g_object_unref0 (pixbuf); pixbuf = _tmp4_; _g_object_unref0 (_tmp2_); } else { GtkIconTheme* theme = NULL; GtkIconTheme* _tmp5_; GtkIconTheme* _tmp6_; GdkPixbuf* _tmp7_ = NULL; GtkIconTheme* _tmp8_; GdkPixbuf* _tmp9_; GdkPixbuf* _tmp10_; _tmp5_ = gtk_icon_theme_get_default (); _tmp6_ = _g_object_ref0 (_tmp5_); theme = _tmp6_; _tmp8_ = theme; _tmp9_ = gtk_icon_theme_load_icon (_tmp8_, icon_name_or_path, fixed_width, 0, &_inner_error0_); _tmp7_ = _tmp9_; if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_object_unref0 (theme); goto __catch0_g_error; } _tmp10_ = _tmp7_; _tmp7_ = NULL; _g_object_unref0 (pixbuf); pixbuf = _tmp10_; _g_object_unref0 (_tmp7_); _g_object_unref0 (theme); } } goto __finally0; __catch0_g_error: { GError* e = NULL; e = _inner_error0_; _inner_error0_ = NULL; { GtkIconTheme* theme = NULL; GtkIconTheme* _tmp11_; GtkIconTheme* _tmp12_; GdkPixbuf* _tmp13_ = NULL; GtkIconTheme* _tmp14_; GdkPixbuf* _tmp15_; GdkPixbuf* _tmp16_; _tmp11_ = gtk_icon_theme_get_default (); _tmp12_ = _g_object_ref0 (_tmp11_); theme = _tmp12_; _tmp14_ = theme; _tmp15_ = gtk_icon_theme_load_icon (_tmp14_, "ibus-engine", fixed_width, 0, &_inner_error0_); _tmp13_ = _tmp15_; if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_object_unref0 (theme); goto __catch1_g_error; } _tmp16_ = _tmp13_; _tmp13_ = NULL; _g_object_unref0 (pixbuf); pixbuf = _tmp16_; _g_object_unref0 (_tmp13_); _g_object_unref0 (theme); } goto __finally1; __catch1_g_error: { GError* e = NULL; e = _inner_error0_; _inner_error0_ = NULL; gtk_image_set_from_icon_name ((GtkImage*) self, "image-missing", (GtkIconSize) size); _g_error_free0 (e); _g_error_free0 (e); _g_object_unref0 (pixbuf); return self; } __finally1: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_error_free0 (e); _g_object_unref0 (pixbuf); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return NULL; } _g_error_free0 (e); } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_object_unref0 (pixbuf); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return NULL; } _tmp17_ = pixbuf; if (_tmp17_ == NULL) { _g_object_unref0 (pixbuf); return self; } _tmp18_ = pixbuf; width = (gfloat) gdk_pixbuf_get_width (_tmp18_); _tmp19_ = pixbuf; height = (gfloat) gdk_pixbuf_get_height (_tmp19_); if (width > height) { _tmp20_ = width; } else { _tmp20_ = height; } scale = fixed_width / _tmp20_; width *= scale; height *= scale; _tmp21_ = pixbuf; _tmp22_ = gdk_pixbuf_scale_simple (_tmp21_, (gint) width, (gint) height, GDK_INTERP_BILINEAR); _g_object_unref0 (pixbuf); pixbuf = _tmp22_; _tmp23_ = pixbuf; gtk_image_set_from_pixbuf ((GtkImage*) self, _tmp23_); 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, gpointer klass_data) { icon_widget_parent_class = g_type_class_peek_parent (klass); } static void icon_widget_instance_init (IconWidget * self, gpointer klass) { } static GType icon_widget_get_type_once (void) { 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); return icon_widget_type_id; } 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)) { GType icon_widget_type_id; icon_widget_type_id = icon_widget_get_type_once (); g_once_init_leave (&icon_widget_type_id__volatile, icon_widget_type_id); } return icon_widget_type_id__volatile; } ibus-1.5.22/ui/gtk3/indicator.c0000644000000000000000000023711013623751707013056 00000000000000/* indicator.c generated by valac 0.47.91, the Vala compiler * generated from indicator.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2015-2017 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 #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; enum { INDICATOR_0_PROPERTY, INDICATOR_ID_PROPERTY, INDICATOR_CATEGORY_S_PROPERTY, INDICATOR_STATUS_S_PROPERTY, INDICATOR_ICON_NAME_PROPERTY, INDICATOR_ICON_DESC_PROPERTY, INDICATOR_ATTENTION_ICON_NAME_PROPERTY, INDICATOR_ATTENTION_ICON_DESC_PROPERTY, INDICATOR_TITLE_PROPERTY, INDICATOR_ICON_THEME_PATH_PROPERTY, INDICATOR_CONNECTED_PROPERTY, INDICATOR_LABEL_S_PROPERTY, INDICATOR_LABEL_GUIDE_S_PROPERTY, INDICATOR_ORDERING_INDEX_PROPERTY, INDICATOR_ICON_VECTOR_PROPERTY, INDICATOR_NUM_PROPERTIES }; static GParamSpec* indicator_properties[INDICATOR_NUM_PROPERTIES]; typedef enum { INDICATOR_CATEGORY_APPLICATION_STATUS, INDICATOR_CATEGORY_COMMUNICATIONS, INDICATOR_CATEGORY_SYSTEM_SERVICES, INDICATOR_CATEGORY_HARDWARE, INDICATOR_CATEGORY_OTHER } IndicatorCategory; #define INDICATOR_TYPE_CATEGORY (indicator_category_get_type ()) typedef enum { INDICATOR_STATUS_PASSIVE, INDICATOR_STATUS_ACTIVE, INDICATOR_STATUS_ATTENTION } IndicatorStatus; #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))) enum { INDICATOR_CONTEXT_MENU_SIGNAL, INDICATOR_ACTIVATE_SIGNAL, INDICATOR_REGISTERED_STATUS_NOTIFIER_ITEM_SIGNAL, INDICATOR_NUM_SIGNALS }; static guint indicator_signals[INDICATOR_NUM_SIGNALS] = {0}; 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; GdkWindow* m_indicator_window; }; extern gchar* _notification_item; extern gchar* _notification_watcher; static gint Indicator_private_offset; static gpointer indicator_parent_class = NULL; GType indicator_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Indicator, g_object_unref) 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 GdkWindow* indicator_query_gdk_window (Indicator* self); 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); void indicator_unregister_connection (Indicator* self); 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__INT_INT_OBJECT_UINT_UINT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data); static void g_cclosure_user_marshal_VOID__INT_INT_OBJECT (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 GType indicator_get_type_once (void); 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); static inline gpointer indicator_get_instance_private (Indicator* self) { return G_STRUCT_MEMBER_P (self, Indicator_private_offset); } gchar* indicator_category_to_nick (IndicatorCategory self) { gchar* result = NULL; switch (self) { case INDICATOR_CATEGORY_APPLICATION_STATUS: { gchar* _tmp0_; _tmp0_ = g_strdup ("ApplicationStatus"); result = _tmp0_; return result; } case INDICATOR_CATEGORY_COMMUNICATIONS: { gchar* _tmp1_; _tmp1_ = g_strdup ("Communications"); result = _tmp1_; return result; } case INDICATOR_CATEGORY_SYSTEM_SERVICES: { gchar* _tmp2_; _tmp2_ = g_strdup ("SystemServices"); result = _tmp2_; return result; } case INDICATOR_CATEGORY_HARDWARE: { gchar* _tmp3_; _tmp3_ = g_strdup ("Hardware"); result = _tmp3_; return result; } case INDICATOR_CATEGORY_OTHER: { gchar* _tmp4_; _tmp4_ = g_strdup ("Other"); result = _tmp4_; return result; } default: { g_assert_not_reached (); } } } static GType indicator_category_get_type_once (void) { 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); return indicator_category_type_id; } 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)) { GType indicator_category_type_id; indicator_category_type_id = indicator_category_get_type_once (); 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_; _tmp0_ = g_strdup ("Passive"); result = _tmp0_; return result; } case INDICATOR_STATUS_ACTIVE: { gchar* _tmp1_; _tmp1_ = g_strdup ("Active"); result = _tmp1_; return result; } case INDICATOR_STATUS_ATTENTION: { gchar* _tmp2_; _tmp2_ = g_strdup ("NeedsAttention"); result = _tmp2_; return result; } default: { g_assert_not_reached (); } } } static GType indicator_status_get_type_once (void) { 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); return indicator_status_type_id; } 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)) { GType indicator_status_type_id; indicator_status_type_id = indicator_status_get_type_once (); 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* _tmp0_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (delimiters != NULL, NULL); _tmp0_ = g_strdup (self); _result_ = _tmp0_; g_strdelimit (_result_, delimiters, new_delimiter); result = _result_; return result; } Indicator* indicator_construct (GType object_type, const gchar* id, GDBusConnection* connection, IndicatorCategory category) { Indicator * self = NULL; gchar* path = NULL; gchar* _tmp0_; const gchar* _tmp1_; gchar* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; gchar* _tmp7_; const gchar* _tmp8_; GDBusNodeInfo* _tmp22_; GDBusInterfaceInfo* _tmp23_; GError* _inner_error0_ = NULL; g_return_val_if_fail (id != NULL, NULL); g_return_val_if_fail (connection != NULL, NULL); _tmp0_ = g_strconcat (INDICATOR_DEFAULT_ITEM_PATH "/", id, NULL); path = _tmp0_; _tmp1_ = path; _tmp2_ = string_delimit (_tmp1_, "-", '_'); _g_free0 (path); path = _tmp2_; _tmp3_ = path; _tmp4_ = indicator_category_to_nick (category); _tmp5_ = _tmp4_; self = (Indicator*) g_object_new (object_type, "object-path", _tmp3_, "id", id, "connection", connection, "category-s", _tmp5_, NULL); _g_free0 (_tmp5_); _tmp6_ = indicator_status_to_nick (INDICATOR_STATUS_PASSIVE); _tmp7_ = _tmp6_; indicator_set_status_s (self, _tmp7_); _g_free0 (_tmp7_); 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, ""); ibus_service_unregister ((IBusService*) self, connection); _tmp8_ = _notification_item; ibus_service_class_add_interfaces (IBUS_SERVICE_CLASS (G_OBJECT_GET_CLASS (self)), _tmp8_); { gboolean _tmp9_ = FALSE; _tmp9_ = ibus_service_register ((IBusService*) self, connection, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch0_g_error; } if (!_tmp9_) { _g_free0 (path); return self; } } goto __finally0; __catch0_g_error: { GError* e = NULL; GError* _tmp10_; const gchar* _tmp11_; gchar* _tmp12_; gchar* _tmp13_; e = _inner_error0_; _inner_error0_ = NULL; _tmp10_ = e; _tmp11_ = _tmp10_->message; _tmp12_ = g_strconcat ("Failed to register the application indicator xml: ", _tmp11_, NULL); _tmp13_ = _tmp12_; g_warning ("indicator.vala:129: %s", _tmp13_); _g_free0 (_tmp13_); _g_error_free0 (e); _g_free0 (path); return self; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_free0 (path); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return NULL; } { GDBusNodeInfo* _tmp14_ = NULL; const gchar* _tmp15_; GDBusNodeInfo* _tmp16_; GDBusNodeInfo* _tmp17_; _tmp15_ = _notification_watcher; _tmp16_ = g_dbus_node_info_new_for_xml (_tmp15_, &_inner_error0_); _tmp14_ = _tmp16_; if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch1_g_error; } _tmp17_ = _tmp14_; _tmp14_ = NULL; _g_dbus_node_info_unref0 (self->priv->m_watcher_node_info); self->priv->m_watcher_node_info = _tmp17_; _g_dbus_node_info_unref0 (_tmp14_); } goto __finally1; __catch1_g_error: { GError* e = NULL; GError* _tmp18_; const gchar* _tmp19_; gchar* _tmp20_; gchar* _tmp21_; e = _inner_error0_; _inner_error0_ = NULL; _tmp18_ = e; _tmp19_ = _tmp18_->message; _tmp20_ = g_strconcat ("Failed to create dbus node info: ", _tmp19_, NULL); _tmp21_ = _tmp20_; g_warning ("indicator.vala:138: %s", _tmp21_); _g_free0 (_tmp21_); _g_error_free0 (e); _g_free0 (path); return self; } __finally1: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_free0 (path); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return NULL; } _tmp22_ = self->priv->m_watcher_node_info; _tmp23_ = g_dbus_node_info_lookup_interface (_tmp22_, INDICATOR_NOTIFICATION_WATCHER_DBUS_IFACE); self->priv->m_watcher_interface_info = _tmp23_; 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) { g_return_if_fail (res != NULL); indicator_bus_watcher_ready (self, obj, res); } 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_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_proxy; if (_tmp0_ == NULL) { GDBusConnection* _tmp1_; GDBusConnection* _tmp2_; GDBusInterfaceInfo* _tmp3_; _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_; gchar* _tmp1_; const gchar* _tmp2_; 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_error0_ = NULL; g_return_if_fail (p_res != NULL); { GDBusProxy* _tmp0_; GVariant* _tmp1_; GVariant* _tmp2_; _tmp0_ = self->priv->m_proxy; _tmp1_ = g_dbus_proxy_call_finish (_tmp0_, p_res, &_inner_error0_); _tmp2_ = _tmp1_; _g_variant_unref0 (_tmp2_); if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch0_g_error; } g_signal_emit (self, indicator_signals[INDICATOR_REGISTERED_STATUS_NOTIFIER_ITEM_SIGNAL], 0); } goto __finally0; __catch0_g_error: { GError* e = NULL; GError* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; e = _inner_error0_; _inner_error0_ = NULL; _tmp3_ = e; _tmp4_ = _tmp3_->message; _tmp5_ = g_strconcat ("Failed to call " "RegisterStatusNotifierItem: ", _tmp4_, NULL); _tmp6_ = _tmp5_; g_warning ("indicator.vala:199: %s", _tmp6_); _g_free0 (_tmp6_); _g_error_free0 (e); } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); 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) { gchar* name = NULL; GDBusProxy* _tmp8_; gchar* _tmp9_; const gchar* _tmp10_; GDBusProxy* _tmp11_; const gchar* _tmp12_; const gchar* _tmp13_; GVariant* _tmp14_; GVariant* _tmp15_; GError* _inner_error0_ = NULL; g_return_if_fail (self != NULL); if (res != NULL) { GDBusProxy* _tmp7_; { GDBusProxy* _tmp0_ = NULL; GDBusProxy* _tmp1_; GDBusProxy* _tmp2_; _tmp1_ = g_dbus_proxy_new_finish (res, &_inner_error0_); _tmp0_ = _tmp1_; if (G_UNLIKELY (_inner_error0_ != NULL)) { if (_inner_error0_->domain == G_IO_ERROR) { goto __catch0_g_io_error; } g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } _tmp2_ = _tmp0_; _tmp0_ = NULL; _g_object_unref0 (self->priv->m_proxy); self->priv->m_proxy = _tmp2_; _g_object_unref0 (_tmp0_); } goto __finally0; __catch0_g_io_error: { GError* e = NULL; GError* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* _tmp6_; e = _inner_error0_; _inner_error0_ = NULL; _tmp3_ = e; _tmp4_ = _tmp3_->message; _tmp5_ = g_strconcat ("Failed to call dbus proxy: ", _tmp4_, NULL); _tmp6_ = _tmp5_; g_warning ("indicator.vala:173: %s", _tmp6_); _g_free0 (_tmp6_); _g_error_free0 (e); return; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } _tmp7_ = self->priv->m_proxy; g_signal_connect_object ((GObject*) _tmp7_, "notify::g-name-owner", (GCallback) ____lambda5__g_object_notify, self, 0); } _tmp8_ = self->priv->m_proxy; _tmp9_ = g_dbus_proxy_get_name_owner (_tmp8_); name = _tmp9_; _tmp10_ = name; if (_tmp10_ == NULL) { _g_free0 (name); return; } _tmp11_ = self->priv->m_proxy; _tmp12_ = ibus_service_get_object_path ((IBusService*) self); _tmp13_ = _tmp12_; _tmp14_ = g_variant_new ("(s)", _tmp13_, NULL); g_variant_ref_sink (_tmp14_); _tmp15_ = _tmp14_; g_dbus_proxy_call (_tmp11_, "RegisterStatusNotifierItem", _tmp15_, G_DBUS_CALL_FLAGS_NONE, -1, NULL, ___lambda6__gasync_ready_callback, g_object_ref (self)); _g_variant_unref0 (_tmp15_); _g_free0 (name); } static void _indicator_context_menu_cb (Indicator* self, GDBusConnection* connection, GVariant* parameters, GDBusMethodInvocation* invocation) { GVariant* var_x = NULL; GVariant* _tmp0_; GVariant* var_y = NULL; GVariant* _tmp1_; GdkWindow* window = NULL; GdkWindow* _tmp2_; 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_ = g_variant_get_child_value (parameters, (gsize) 0); var_x = _tmp0_; _tmp1_ = g_variant_get_child_value (parameters, (gsize) 1); var_y = _tmp1_; self->priv->m_context_menu_x = (gint) g_variant_get_int32 (var_x); self->priv->m_context_menu_y = (gint) g_variant_get_int32 (var_y); _tmp2_ = indicator_query_gdk_window (self); window = _tmp2_; g_signal_emit (self, indicator_signals[INDICATOR_CONTEXT_MENU_SIGNAL], 0, self->priv->m_context_menu_x, self->priv->m_context_menu_y, window, (guint) 2, (guint) 0); _g_object_unref0 (window); _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_; GVariant* var_y = NULL; GVariant* _tmp1_; GdkWindow* window = NULL; GdkWindow* _tmp2_; 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_ = g_variant_get_child_value (parameters, (gsize) 0); var_x = _tmp0_; _tmp1_ = g_variant_get_child_value (parameters, (gsize) 1); var_y = _tmp1_; self->priv->m_activate_menu_x = (gint) g_variant_get_int32 (var_x); self->priv->m_activate_menu_y = (gint) g_variant_get_int32 (var_y); _tmp2_ = indicator_query_gdk_window (self); window = _tmp2_; g_signal_emit (self, indicator_signals[INDICATOR_ACTIVATE_SIGNAL], 0, self->priv->m_activate_menu_x, self->priv->m_activate_menu_y, window); _g_object_unref0 (window); _g_variant_unref0 (var_y); _g_variant_unref0 (var_x); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static GdkWindow* indicator_query_gdk_window (Indicator* self) { GdkWindow* _tmp0_; GdkDisplay* display = NULL; GdkDisplay* _tmp3_; GdkDisplay* _tmp4_; Display* xdisplay = NULL; GdkDisplay* _tmp5_; Display* _tmp6_; Window current = 0; Display* _tmp7_; Window parent = 0; Window child = 0; gint root_x = 0; gint root_y = 0; gint win_x = 0; gint win_y = 0; guint mask = 0U; gboolean retval = FALSE; Display* _tmp22_; GdkDisplay* _tmp23_; GdkX11Window* _tmp24_; GdkWindow* _tmp25_; GdkWindow* _tmp26_; GdkDisplay* _tmp29_; GdkX11Window* _tmp30_; GdkWindow* _tmp31_; GdkWindow* _tmp32_; GdkWindow* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_indicator_window; if (_tmp0_ != NULL) { GdkWindow* _tmp1_; GdkWindow* _tmp2_; _tmp1_ = self->priv->m_indicator_window; _tmp2_ = _g_object_ref0 (_tmp1_); result = _tmp2_; return result; } _tmp3_ = gdk_display_get_default (); _tmp4_ = _g_object_ref0 (_tmp3_); display = _tmp4_; _tmp5_ = display; _tmp6_ = gdk_x11_display_get_xdisplay (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, gdk_x11_display_get_type ()) ? ((GdkX11Display*) _tmp5_) : NULL); xdisplay = _tmp6_; _tmp7_ = xdisplay; current = DefaultRootWindow (_tmp7_); parent = (Window) 0; child = (Window) 0; mask = (guint) 0; win_y = 0; win_x = win_y; root_y = win_x; root_x = root_y; while (TRUE) { Display* _tmp8_; Window _tmp9_ = 0; Window _tmp10_ = 0; gint _tmp11_ = 0; gint _tmp12_ = 0; gint _tmp13_ = 0; gint _tmp14_ = 0; guint _tmp15_ = 0U; gboolean _tmp16_; _tmp8_ = xdisplay; _tmp16_ = XQueryPointer (_tmp8_, current, &_tmp9_, &_tmp10_, &_tmp11_, &_tmp12_, &_tmp13_, &_tmp14_, &_tmp15_); parent = _tmp9_; child = _tmp10_; root_x = _tmp11_; root_y = _tmp12_; win_x = _tmp13_; win_y = _tmp14_; mask = _tmp15_; retval = _tmp16_; if (!retval) { break; } if (child == ((Window) 0)) { break; } current = child; } if (!retval) { gchar* format = NULL; gchar* _tmp17_; gchar* message = NULL; const gchar* _tmp18_; Display* _tmp19_; gchar* _tmp20_; const gchar* _tmp21_; _tmp17_ = g_strdup ("XQueryPointer is failed: current: %x root: %x " "child: %x (%d, %d), (%d, %d), %u"); format = _tmp17_; _tmp18_ = format; _tmp19_ = xdisplay; _tmp20_ = g_strdup_printf (_tmp18_, (guint) current, (guint) DefaultRootWindow (_tmp19_), (guint) child, root_x, root_y, win_x, win_y, mask); message = _tmp20_; _tmp21_ = message; g_warning ("indicator.vala:264: XQueryPointer is failed: %s", _tmp21_); result = NULL; _g_free0 (message); _g_free0 (format); _g_object_unref0 (display); return result; } _tmp22_ = xdisplay; if (current == DefaultRootWindow (_tmp22_)) { g_warning ("indicator.vala:268: The query window is root window"); } _tmp23_ = display; _tmp24_ = gdk_x11_window_lookup_for_display (G_TYPE_CHECK_INSTANCE_TYPE (_tmp23_, gdk_x11_display_get_type ()) ? ((GdkX11Display*) _tmp23_) : NULL, current); _tmp25_ = _g_object_ref0 ((GdkWindow*) _tmp24_); _g_object_unref0 (self->priv->m_indicator_window); self->priv->m_indicator_window = _tmp25_; _tmp26_ = self->priv->m_indicator_window; if (_tmp26_ != NULL) { GdkWindow* _tmp27_; GdkWindow* _tmp28_; _tmp27_ = self->priv->m_indicator_window; _tmp28_ = _g_object_ref0 (_tmp27_); result = _tmp28_; _g_object_unref0 (display); return result; } _tmp29_ = display; _tmp30_ = (GdkX11Window*) gdk_x11_window_foreign_new_for_display (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, gdk_x11_display_get_type ()) ? ((GdkX11Display*) _tmp29_) : NULL, current); _g_object_unref0 (self->priv->m_indicator_window); self->priv->m_indicator_window = (GdkWindow*) _tmp30_; _tmp31_ = self->priv->m_indicator_window; _tmp32_ = _g_object_ref0 (_tmp31_); result = _tmp32_; _g_object_unref0 (display); return result; } static GVariant* _indicator_get_id (Indicator* self, GDBusConnection* connection) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* result = 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) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* result = 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) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* result = 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) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* result = 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* _tmp0_; GVariant* _tmp1_; GVariant* result = 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) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* result = 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) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* result = 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) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* result = 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) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* result = 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) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* result = 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) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* result = 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) { const gchar* _tmp0_; GVariant* _tmp1_; GVariant* result = 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) { guint32 _tmp0_; GVariant* _tmp1_; GVariant* result = 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_; const gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; 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_ = ibus_service_get_object_path ((IBusService*) self); _tmp1_ = _tmp0_; g_return_if_fail (g_strcmp0 (object_path, _tmp1_) == 0); g_return_if_fail (g_strcmp0 (interface_name, INDICATOR_NOTIFICATION_ITEM_DBUS_IFACE) == 0); if (g_strcmp0 (method_name, "Activate") == 0) { _indicator_activate_menu_cb (self, connection, parameters, invocation); return; } if (g_strcmp0 (method_name, "ContextMenu") == 0) { _indicator_context_menu_cb (self, connection, parameters, invocation); return; } _tmp2_ = g_strconcat ("service_method_call() does not handle the method: ", method_name, NULL); _tmp3_ = _tmp2_; g_warning ("indicator.vala:376: %s", _tmp3_); _g_free0 (_tmp3_); } 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; const gchar* _tmp0_; const gchar* _tmp1_; gchar* _tmp16_; gchar* _tmp17_; GVariant* result = 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_ = ibus_service_get_object_path ((IBusService*) self); _tmp1_ = _tmp0_; g_return_val_if_fail (g_strcmp0 (object_path, _tmp1_) == 0, NULL); g_return_val_if_fail (g_strcmp0 (interface_name, INDICATOR_NOTIFICATION_ITEM_DBUS_IFACE) == 0, NULL); if (g_strcmp0 (property_name, "Id") == 0) { GVariant* _tmp2_; _tmp2_ = _indicator_get_id (self, connection); result = _tmp2_; return result; } if (g_strcmp0 (property_name, "Category") == 0) { GVariant* _tmp3_; _tmp3_ = _indicator_get_category (self, connection); result = _tmp3_; return result; } if (g_strcmp0 (property_name, "Status") == 0) { GVariant* _tmp4_; _tmp4_ = _indicator_get_status (self, connection); result = _tmp4_; return result; } if (g_strcmp0 (property_name, "IconName") == 0) { GVariant* _tmp5_; _tmp5_ = _indicator_get_icon_name (self, connection); result = _tmp5_; return result; } if (g_strcmp0 (property_name, "IconPixmap") == 0) { GVariant* _tmp6_; _tmp6_ = _indicator_get_icon_vector (self, connection); result = _tmp6_; return result; } if (g_strcmp0 (property_name, "IconAccessibleDesc") == 0) { GVariant* _tmp7_; _tmp7_ = _indicator_get_icon_desc (self, connection); result = _tmp7_; return result; } if (g_strcmp0 (property_name, "AttentionIconName") == 0) { GVariant* _tmp8_; _tmp8_ = _indicator_get_attention_icon_name (self, connection); result = _tmp8_; return result; } if (g_strcmp0 (property_name, "AttentionAccessibleDesc") == 0) { GVariant* _tmp9_; _tmp9_ = _indicator_get_attention_icon_desc (self, connection); result = _tmp9_; return result; } if (g_strcmp0 (property_name, "Title") == 0) { GVariant* _tmp10_; _tmp10_ = _indicator_get_title (self, connection); result = _tmp10_; return result; } if (g_strcmp0 (property_name, "IconThemePath") == 0) { GVariant* _tmp11_; _tmp11_ = _indicator_get_icon_theme_path (self, connection); result = _tmp11_; return result; } if (g_strcmp0 (property_name, "Menu") == 0) { GVariant* _tmp12_; _tmp12_ = _indicator_get_menu (self, connection); result = _tmp12_; return result; } if (g_strcmp0 (property_name, "XAyatanaLabel") == 0) { GVariant* _tmp13_; _tmp13_ = _indicator_get_xayatana_label (self, connection); result = _tmp13_; return result; } if (g_strcmp0 (property_name, "XAyatanaLabelGuide") == 0) { GVariant* _tmp14_; _tmp14_ = _indicator_get_xayatana_label_guide (self, connection); result = _tmp14_; return result; } if (g_strcmp0 (property_name, "XAyatanaOrderingIndex") == 0) { GVariant* _tmp15_; _tmp15_ = _indicator_get_xayatana_ordering_index (self, connection); result = _tmp15_; return result; } _tmp16_ = g_strconcat ("service_get_property() does not handle the property: ", property_name, NULL); _tmp17_ = _tmp16_; g_warning ("indicator.vala:421: %s", _tmp17_); _g_free0 (_tmp17_); 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; gchar* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; const gchar* _tmp3_; GDBusConnection* _tmp4_; GDBusConnection* _tmp5_; GError* _inner_error0_ = NULL; g_return_if_fail (self != NULL); _tmp0_ = indicator_status_to_nick (status); status_s = _tmp0_; _tmp1_ = self->priv->_status_s; _tmp2_ = status_s; if (g_strcmp0 (_tmp1_, _tmp2_) == 0) { _g_free0 (status_s); return; } _tmp3_ = status_s; indicator_set_status_s (self, _tmp3_); _tmp4_ = ibus_service_get_connection ((IBusService*) self); _tmp5_ = _tmp4_; if (_tmp5_ == NULL) { _g_free0 (status_s); return; } { GDBusConnection* _tmp6_; GDBusConnection* _tmp7_; const gchar* _tmp8_; const gchar* _tmp9_; const gchar* _tmp10_; GVariant* _tmp11_; GVariant* _tmp12_; _tmp6_ = ibus_service_get_connection ((IBusService*) self); _tmp7_ = _tmp6_; _tmp8_ = ibus_service_get_object_path ((IBusService*) self); _tmp9_ = _tmp8_; _tmp10_ = status_s; _tmp11_ = g_variant_new ("(s)", _tmp10_, NULL); g_variant_ref_sink (_tmp11_); _tmp12_ = _tmp11_; g_dbus_connection_emit_signal (_tmp7_, NULL, _tmp9_, INDICATOR_NOTIFICATION_ITEM_DBUS_IFACE, "NewStatus", _tmp12_, &_inner_error0_); _g_variant_unref0 (_tmp12_); if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch0_g_error; } } goto __finally0; __catch0_g_error: { GError* e = NULL; GError* _tmp13_; const gchar* _tmp14_; e = _inner_error0_; _inner_error0_ = NULL; _tmp13_ = e; _tmp14_ = _tmp13_->message; g_warning ("indicator.vala:460: Unable to send signal for NewIcon: %s", _tmp14_); _g_error_free0 (e); } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_free0 (status_s); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); 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_; const gchar* _tmp1_; GDBusConnection* _tmp2_; GDBusConnection* _tmp3_; GError* _inner_error0_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (icon_name != NULL); changed = FALSE; _tmp0_ = self->priv->_icon_name; if (g_strcmp0 (_tmp0_, icon_name) != 0) { indicator_set_icon_name (self, icon_name); indicator_set_icon_vector (self, NULL); changed = TRUE; } _tmp1_ = self->priv->_icon_desc; if (g_strcmp0 (_tmp1_, icon_desc) != 0) { indicator_set_icon_desc (self, icon_desc); changed = TRUE; } if (!changed) { return; } _tmp2_ = ibus_service_get_connection ((IBusService*) self); _tmp3_ = _tmp2_; if (_tmp3_ == NULL) { return; } { GDBusConnection* _tmp4_; GDBusConnection* _tmp5_; const gchar* _tmp6_; const gchar* _tmp7_; _tmp4_ = ibus_service_get_connection ((IBusService*) self); _tmp5_ = _tmp4_; _tmp6_ = ibus_service_get_object_path ((IBusService*) self); _tmp7_ = _tmp6_; g_dbus_connection_emit_signal (_tmp5_, NULL, _tmp7_, INDICATOR_NOTIFICATION_ITEM_DBUS_IFACE, "NewIcon", NULL, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch0_g_error; } } goto __finally0; __catch0_g_error: { GError* e = NULL; GError* _tmp8_; const gchar* _tmp9_; e = _inner_error0_; _inner_error0_ = NULL; _tmp8_ = e; _tmp9_ = _tmp8_->message; g_warning ("indicator.vala:494: Unable to send signal for NewIcon: %s", _tmp9_); _g_error_free0 (e); } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } } void indicator_set_cairo_image_surface_full (Indicator* self, cairo_surface_t* image, const gchar* icon_desc) { gint width = 0; gint height = 0; gint stride = 0; guint8* data = NULL; guchar* _tmp0_; gint data_length1; gint _data_size_; GBytes* bytes = NULL; guint8* _tmp1_; gint _tmp1__length1; GBytes* _tmp2_; GVariant* bs = NULL; const GVariantType* _tmp3_; GBytes* _tmp4_; GVariant* _tmp5_; GVariantBuilder* builder = NULL; GVariantType* _tmp6_; GVariantType* _tmp7_; GVariantBuilder* _tmp8_; GVariantBuilder* _tmp9_; GVariantBuilder* _tmp10_; GVariantType* _tmp11_; GVariantType* _tmp12_; GVariantBuilder* _tmp13_; GVariantBuilder* _tmp14_; GVariantBuilder* _tmp15_; GVariant* _tmp16_; GVariantBuilder* _tmp17_; GVariantBuilder* _tmp18_; GVariant* _tmp19_; GVariant* _tmp20_; const gchar* _tmp21_; GDBusConnection* _tmp22_; GDBusConnection* _tmp23_; GError* _inner_error0_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (image != NULL); width = cairo_image_surface_get_width (image); height = cairo_image_surface_get_height (image); stride = cairo_image_surface_get_stride (image); _tmp0_ = cairo_image_surface_get_data (image); data = (guint8*) _tmp0_; data_length1 = (-1 * sizeof (guchar)) / sizeof (guint8); _data_size_ = data_length1; data_length1 = stride * height; _tmp1_ = data; _tmp1__length1 = data_length1; _tmp2_ = g_bytes_new (_tmp1_, _tmp1__length1); bytes = _tmp2_; _tmp3_ = G_VARIANT_TYPE_BYTESTRING; _tmp4_ = bytes; _tmp5_ = g_variant_new_from_bytes (_tmp3_, _tmp4_, TRUE); g_variant_ref_sink (_tmp5_); bs = _tmp5_; _tmp6_ = g_variant_type_new ("a(iiay)"); _tmp7_ = _tmp6_; _tmp8_ = g_variant_builder_new (_tmp7_); _tmp9_ = _tmp8_; _g_variant_type_free0 (_tmp7_); builder = _tmp9_; _tmp10_ = builder; _tmp11_ = g_variant_type_new ("(iiay)"); _tmp12_ = _tmp11_; g_variant_builder_open (_tmp10_, _tmp12_); _g_variant_type_free0 (_tmp12_); _tmp13_ = builder; g_variant_builder_add (_tmp13_, "i", width, NULL); _tmp14_ = builder; g_variant_builder_add (_tmp14_, "i", height, NULL); _tmp15_ = builder; _tmp16_ = bs; g_variant_builder_add_value (_tmp15_, _tmp16_); _tmp17_ = builder; g_variant_builder_close (_tmp17_); _tmp18_ = builder; _tmp19_ = g_variant_new ("a(iiay)", _tmp18_, NULL); g_variant_ref_sink (_tmp19_); _tmp20_ = _tmp19_; indicator_set_icon_vector (self, _tmp20_); _g_variant_unref0 (_tmp20_); indicator_set_icon_name (self, ""); _tmp21_ = self->priv->_icon_desc; if (g_strcmp0 (_tmp21_, icon_desc) != 0) { indicator_set_icon_desc (self, icon_desc); } _tmp22_ = ibus_service_get_connection ((IBusService*) self); _tmp23_ = _tmp22_; if (_tmp23_ == NULL) { _g_variant_builder_unref0 (builder); _g_variant_unref0 (bs); _g_bytes_unref0 (bytes); return; } { GDBusConnection* _tmp24_; GDBusConnection* _tmp25_; const gchar* _tmp26_; const gchar* _tmp27_; _tmp24_ = ibus_service_get_connection ((IBusService*) self); _tmp25_ = _tmp24_; _tmp26_ = ibus_service_get_object_path ((IBusService*) self); _tmp27_ = _tmp26_; g_dbus_connection_emit_signal (_tmp25_, NULL, _tmp27_, INDICATOR_NOTIFICATION_ITEM_DBUS_IFACE, "NewIcon", NULL, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch0_g_error; } } goto __finally0; __catch0_g_error: { GError* e = NULL; GError* _tmp28_; const gchar* _tmp29_; e = _inner_error0_; _inner_error0_ = NULL; _tmp28_ = e; _tmp29_ = _tmp28_->message; g_warning ("indicator.vala:538: Unable to send signal for NewIcon: %s", _tmp29_); _g_error_free0 (e); } __finally0: if (G_UNLIKELY (_inner_error0_ != 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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); 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; g_return_if_fail (self != NULL); g_return_if_fail (menu != NULL); _vala_x = self->priv->m_context_menu_x; _vala_y = self->priv->m_context_menu_y; _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; g_return_if_fail (self != NULL); g_return_if_fail (menu != NULL); _vala_x = self->priv->m_activate_menu_x; _vala_y = self->priv->m_activate_menu_y; _vala_push_in = FALSE; if (x) { *x = _vala_x; } if (y) { *y = _vala_y; } if (push_in) { *push_in = _vala_push_in; } } /** * unregister_connection: * * "Destroy" dbus method is not called for the indicator's connection * when panel's connection is disconnected because the dbus connection * is a shared session bus so need to call * g_dbus_connection_unregister_object() by manual here * so that g_object_unref(m_panel) will be called later with an idle method, * which was assigned in the arguments of * g_dbus_connection_register_object() */ void indicator_unregister_connection (Indicator* self) { GDBusConnection* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = ibus_service_get_connection ((IBusService*) self); ibus_service_unregister ((IBusService*) self, _tmp0_); } const gchar* indicator_get_id (Indicator* self) { const gchar* result; const gchar* _tmp0_; 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) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, indicator_get_id (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_id); self->priv->_id = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_ID_PROPERTY]); } } const gchar* indicator_get_category_s (Indicator* self) { const gchar* result; const gchar* _tmp0_; 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) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, indicator_get_category_s (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_category_s); self->priv->_category_s = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_CATEGORY_S_PROPERTY]); } } const gchar* indicator_get_status_s (Indicator* self) { const gchar* result; const gchar* _tmp0_; 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) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, indicator_get_status_s (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_status_s); self->priv->_status_s = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_STATUS_S_PROPERTY]); } } const gchar* indicator_get_icon_name (Indicator* self) { const gchar* result; const gchar* _tmp0_; 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) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, indicator_get_icon_name (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_icon_name); self->priv->_icon_name = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_ICON_NAME_PROPERTY]); } } const gchar* indicator_get_icon_desc (Indicator* self) { const gchar* result; const gchar* _tmp0_; 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) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, indicator_get_icon_desc (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_icon_desc); self->priv->_icon_desc = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_ICON_DESC_PROPERTY]); } } const gchar* indicator_get_attention_icon_name (Indicator* self) { const gchar* result; const gchar* _tmp0_; 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) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, indicator_get_attention_icon_name (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_attention_icon_name); self->priv->_attention_icon_name = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_ATTENTION_ICON_NAME_PROPERTY]); } } const gchar* indicator_get_attention_icon_desc (Indicator* self) { const gchar* result; const gchar* _tmp0_; 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) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, indicator_get_attention_icon_desc (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_attention_icon_desc); self->priv->_attention_icon_desc = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_ATTENTION_ICON_DESC_PROPERTY]); } } const gchar* indicator_get_title (Indicator* self) { const gchar* result; const gchar* _tmp0_; 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) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, indicator_get_title (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_title); self->priv->_title = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_TITLE_PROPERTY]); } } const gchar* indicator_get_icon_theme_path (Indicator* self) { const gchar* result; const gchar* _tmp0_; 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) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, indicator_get_icon_theme_path (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_icon_theme_path); self->priv->_icon_theme_path = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_ICON_THEME_PATH_PROPERTY]); } } gboolean indicator_get_connected (Indicator* self) { gboolean result; g_return_val_if_fail (self != NULL, FALSE); result = self->priv->_connected; return result; } void indicator_set_connected (Indicator* self, gboolean value) { g_return_if_fail (self != NULL); if (indicator_get_connected (self) != value) { self->priv->_connected = value; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_CONNECTED_PROPERTY]); } } const gchar* indicator_get_label_s (Indicator* self) { const gchar* result; const gchar* _tmp0_; 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) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, indicator_get_label_s (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_label_s); self->priv->_label_s = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_LABEL_S_PROPERTY]); } } const gchar* indicator_get_label_guide_s (Indicator* self) { const gchar* result; const gchar* _tmp0_; 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) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, indicator_get_label_guide_s (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_label_guide_s); self->priv->_label_guide_s = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_LABEL_GUIDE_S_PROPERTY]); } } guint32 indicator_get_ordering_index (Indicator* self) { guint32 result; g_return_val_if_fail (self != NULL, 0U); result = self->priv->_ordering_index; return result; } void indicator_set_ordering_index (Indicator* self, guint32 value) { g_return_if_fail (self != NULL); if (indicator_get_ordering_index (self) != value) { self->priv->_ordering_index = value; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_ORDERING_INDEX_PROPERTY]); } } GVariant* indicator_get_icon_vector (Indicator* self) { GVariant* result; GVariant* _tmp0_; 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) { g_return_if_fail (self != NULL); if (indicator_get_icon_vector (self) != value) { GVariant* _tmp0_; _tmp0_ = _g_variant_ref0 (value); _g_variant_unref0 (self->priv->_icon_vector); self->priv->_icon_vector = _tmp0_; g_object_notify_by_pspec ((GObject *) self, indicator_properties[INDICATOR_ICON_VECTOR_PROPERTY]); } } static void g_cclosure_user_marshal_VOID__INT_INT_OBJECT_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__INT_INT_OBJECT_UINT_UINT) (gpointer data1, gint arg_1, gint arg_2, gpointer arg_3, guint arg_4, guint arg_5, gpointer data2); register GMarshalFunc_VOID__INT_INT_OBJECT_UINT_UINT callback; register GCClosure * cc; register gpointer data1; register gpointer data2; cc = (GCClosure *) closure; g_return_if_fail (n_param_values == 6); 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__INT_INT_OBJECT_UINT_UINT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_value_get_int (param_values + 1), g_value_get_int (param_values + 2), g_value_get_object (param_values + 3), g_value_get_uint (param_values + 4), g_value_get_uint (param_values + 5), data2); } static void g_cclosure_user_marshal_VOID__INT_INT_OBJECT (GClosure * closure, GValue * return_value, guint n_param_values, const GValue * param_values, gpointer invocation_hint, gpointer marshal_data) { typedef void (*GMarshalFunc_VOID__INT_INT_OBJECT) (gpointer data1, gint arg_1, gint arg_2, gpointer arg_3, gpointer data2); register GMarshalFunc_VOID__INT_INT_OBJECT 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__INT_INT_OBJECT) (marshal_data ? marshal_data : cc->callback); callback (data1, g_value_get_int (param_values + 1), g_value_get_int (param_values + 2), g_value_get_object (param_values + 3), data2); } static void indicator_class_init (IndicatorClass * klass, gpointer klass_data) { indicator_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &Indicator_private_offset); ((IBusServiceClass *) klass)->service_method_call = (void (*) (IBusService*, GDBusConnection*, const gchar*, const gchar*, const gchar*, const gchar*, GVariant*, GDBusMethodInvocation*)) indicator_real_service_method_call; ((IBusServiceClass *) klass)->service_get_property = (GVariant* (*) (IBusService*, GDBusConnection*, const gchar*, const gchar*, const gchar*, const gchar*, GError**)) indicator_real_service_get_property; ((IBusServiceClass *) klass)->service_set_property = (gboolean (*) (IBusService*, GDBusConnection*, const gchar*, const gchar*, const gchar*, const gchar*, GVariant*, GError**)) 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_PROPERTY, indicator_properties[INDICATOR_ID_PROPERTY] = g_param_spec_string ("id", "id", "id", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_CATEGORY_S_PROPERTY, indicator_properties[INDICATOR_CATEGORY_S_PROPERTY] = g_param_spec_string ("category-s", "category-s", "category-s", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_STATUS_S_PROPERTY, indicator_properties[INDICATOR_STATUS_S_PROPERTY] = g_param_spec_string ("status-s", "status-s", "status-s", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ICON_NAME_PROPERTY, indicator_properties[INDICATOR_ICON_NAME_PROPERTY] = g_param_spec_string ("icon-name", "icon-name", "icon-name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ICON_DESC_PROPERTY, indicator_properties[INDICATOR_ICON_DESC_PROPERTY] = g_param_spec_string ("icon-desc", "icon-desc", "icon-desc", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ATTENTION_ICON_NAME_PROPERTY, indicator_properties[INDICATOR_ATTENTION_ICON_NAME_PROPERTY] = g_param_spec_string ("attention-icon-name", "attention-icon-name", "attention-icon-name", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ATTENTION_ICON_DESC_PROPERTY, indicator_properties[INDICATOR_ATTENTION_ICON_DESC_PROPERTY] = g_param_spec_string ("attention-icon-desc", "attention-icon-desc", "attention-icon-desc", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_TITLE_PROPERTY, indicator_properties[INDICATOR_TITLE_PROPERTY] = g_param_spec_string ("title", "title", "title", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ICON_THEME_PATH_PROPERTY, indicator_properties[INDICATOR_ICON_THEME_PATH_PROPERTY] = g_param_spec_string ("icon-theme-path", "icon-theme-path", "icon-theme-path", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_CONNECTED_PROPERTY, indicator_properties[INDICATOR_CONNECTED_PROPERTY] = g_param_spec_boolean ("connected", "connected", "connected", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_LABEL_S_PROPERTY, indicator_properties[INDICATOR_LABEL_S_PROPERTY] = g_param_spec_string ("label-s", "label-s", "label-s", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_LABEL_GUIDE_S_PROPERTY, indicator_properties[INDICATOR_LABEL_GUIDE_S_PROPERTY] = g_param_spec_string ("label-guide-s", "label-guide-s", "label-guide-s", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ORDERING_INDEX_PROPERTY, indicator_properties[INDICATOR_ORDERING_INDEX_PROPERTY] = g_param_spec_uint ("ordering-index", "ordering-index", "ordering-index", 0, G_MAXUINT, 0U, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), INDICATOR_ICON_VECTOR_PROPERTY, indicator_properties[INDICATOR_ICON_VECTOR_PROPERTY] = g_param_spec_variant ("icon-vector", "icon-vector", "icon-vector", G_VARIANT_TYPE_ANY, NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); indicator_signals[INDICATOR_CONTEXT_MENU_SIGNAL] = g_signal_new ("context-menu", TYPE_INDICATOR, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT_INT_OBJECT_UINT_UINT, G_TYPE_NONE, 5, G_TYPE_INT, G_TYPE_INT, gdk_window_get_type (), G_TYPE_UINT, G_TYPE_UINT); indicator_signals[INDICATOR_ACTIVATE_SIGNAL] = g_signal_new ("activate", TYPE_INDICATOR, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__INT_INT_OBJECT, G_TYPE_NONE, 3, G_TYPE_INT, G_TYPE_INT, gdk_window_get_type ()); indicator_signals[INDICATOR_REGISTERED_STATUS_NOTIFIER_ITEM_SIGNAL] = 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, gpointer klass) { self->priv = indicator_get_instance_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_unref0 (self->priv->m_indicator_window); G_OBJECT_CLASS (indicator_parent_class)->finalize (obj); } static GType indicator_get_type_once (void) { 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); Indicator_private_offset = g_type_add_instance_private (indicator_type_id, sizeof (IndicatorPrivate)); return indicator_type_id; } GType indicator_get_type (void) { static volatile gsize indicator_type_id__volatile = 0; if (g_once_init_enter (&indicator_type_id__volatile)) { GType indicator_type_id; indicator_type_id = indicator_get_type_once (); 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_PROPERTY: g_value_set_string (value, indicator_get_id (self)); break; case INDICATOR_CATEGORY_S_PROPERTY: g_value_set_string (value, indicator_get_category_s (self)); break; case INDICATOR_STATUS_S_PROPERTY: g_value_set_string (value, indicator_get_status_s (self)); break; case INDICATOR_ICON_NAME_PROPERTY: g_value_set_string (value, indicator_get_icon_name (self)); break; case INDICATOR_ICON_DESC_PROPERTY: g_value_set_string (value, indicator_get_icon_desc (self)); break; case INDICATOR_ATTENTION_ICON_NAME_PROPERTY: g_value_set_string (value, indicator_get_attention_icon_name (self)); break; case INDICATOR_ATTENTION_ICON_DESC_PROPERTY: g_value_set_string (value, indicator_get_attention_icon_desc (self)); break; case INDICATOR_TITLE_PROPERTY: g_value_set_string (value, indicator_get_title (self)); break; case INDICATOR_ICON_THEME_PATH_PROPERTY: g_value_set_string (value, indicator_get_icon_theme_path (self)); break; case INDICATOR_CONNECTED_PROPERTY: g_value_set_boolean (value, indicator_get_connected (self)); break; case INDICATOR_LABEL_S_PROPERTY: g_value_set_string (value, indicator_get_label_s (self)); break; case INDICATOR_LABEL_GUIDE_S_PROPERTY: g_value_set_string (value, indicator_get_label_guide_s (self)); break; case INDICATOR_ORDERING_INDEX_PROPERTY: g_value_set_uint (value, indicator_get_ordering_index (self)); break; case INDICATOR_ICON_VECTOR_PROPERTY: 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_PROPERTY: indicator_set_id (self, g_value_get_string (value)); break; case INDICATOR_CATEGORY_S_PROPERTY: indicator_set_category_s (self, g_value_get_string (value)); break; case INDICATOR_STATUS_S_PROPERTY: indicator_set_status_s (self, g_value_get_string (value)); break; case INDICATOR_ICON_NAME_PROPERTY: indicator_set_icon_name (self, g_value_get_string (value)); break; case INDICATOR_ICON_DESC_PROPERTY: indicator_set_icon_desc (self, g_value_get_string (value)); break; case INDICATOR_ATTENTION_ICON_NAME_PROPERTY: indicator_set_attention_icon_name (self, g_value_get_string (value)); break; case INDICATOR_ATTENTION_ICON_DESC_PROPERTY: indicator_set_attention_icon_desc (self, g_value_get_string (value)); break; case INDICATOR_TITLE_PROPERTY: indicator_set_title (self, g_value_get_string (value)); break; case INDICATOR_ICON_THEME_PATH_PROPERTY: indicator_set_icon_theme_path (self, g_value_get_string (value)); break; case INDICATOR_CONNECTED_PROPERTY: indicator_set_connected (self, g_value_get_boolean (value)); break; case INDICATOR_LABEL_S_PROPERTY: indicator_set_label_s (self, g_value_get_string (value)); break; case INDICATOR_LABEL_GUIDE_S_PROPERTY: indicator_set_label_guide_s (self, g_value_get_string (value)); break; case INDICATOR_ORDERING_INDEX_PROPERTY: indicator_set_ordering_index (self, g_value_get_uint (value)); break; case INDICATOR_ICON_VECTOR_PROPERTY: 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.22/ui/gtk3/bindingcommon.c0000644000000000000000000011463413623751707013732 00000000000000/* bindingcommon.c generated by valac 0.47.91, the Vala compiler * generated from bindingcommon.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2018 Peng Huang * Copyright(c) 2018-2019 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 */ /* This file depends on keybindingmanager.vala */ #include #include #include #include #include #include #include #include #include #define TYPE_BINDING_COMMON (binding_common_get_type ()) #define BINDING_COMMON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_BINDING_COMMON, BindingCommon)) #define BINDING_COMMON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_BINDING_COMMON, BindingCommonClass)) #define IS_BINDING_COMMON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_BINDING_COMMON)) #define IS_BINDING_COMMON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_BINDING_COMMON)) #define BINDING_COMMON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_BINDING_COMMON, BindingCommonClass)) typedef struct _BindingCommon BindingCommon; typedef struct _BindingCommonClass BindingCommonClass; typedef struct _BindingCommonPrivate BindingCommonPrivate; typedef enum { BINDING_COMMON_KEY_EVENT_FUNC_TYPE_ANY, BINDING_COMMON_KEY_EVENT_FUNC_TYPE_IME_SWITCHER, BINDING_COMMON_KEY_EVENT_FUNC_TYPE_EMOJI_TYPING } BindingCommonKeyEventFuncType; #define BINDING_COMMON_TYPE_KEY_EVENT_FUNC_TYPE (binding_common_key_event_func_type_get_type ()) #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 BINDING_COMMON_TYPE_KEYBINDING (binding_common_keybinding_get_type ()) #define BINDING_COMMON_KEYBINDING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BINDING_COMMON_TYPE_KEYBINDING, BindingCommonKeybinding)) #define BINDING_COMMON_KEYBINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BINDING_COMMON_TYPE_KEYBINDING, BindingCommonKeybindingClass)) #define BINDING_COMMON_IS_KEYBINDING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BINDING_COMMON_TYPE_KEYBINDING)) #define BINDING_COMMON_IS_KEYBINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BINDING_COMMON_TYPE_KEYBINDING)) #define BINDING_COMMON_KEYBINDING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BINDING_COMMON_TYPE_KEYBINDING, BindingCommonKeybindingClass)) typedef struct _BindingCommonKeybinding BindingCommonKeybinding; typedef struct _BindingCommonKeybindingClass BindingCommonKeybindingClass; typedef void (*KeybindingManagerKeybindingHandlerFunc) (GdkEvent* event, gpointer user_data); #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define __vala_PangoFontDescription_free0(var) ((var == NULL) ? NULL : (var = (_vala_PangoFontDescription_free (var), NULL))) typedef struct _BindingCommonKeybindingPrivate BindingCommonKeybindingPrivate; enum { BINDING_COMMON_KEYBINDING_0_PROPERTY, BINDING_COMMON_KEYBINDING_KEYSYM_PROPERTY, BINDING_COMMON_KEYBINDING_MODIFIERS_PROPERTY, BINDING_COMMON_KEYBINDING_REVERSE_PROPERTY, BINDING_COMMON_KEYBINDING_FTYPE_PROPERTY, BINDING_COMMON_KEYBINDING_NUM_PROPERTIES }; static GParamSpec* binding_common_keybinding_properties[BINDING_COMMON_KEYBINDING_NUM_PROPERTIES]; typedef void (*BindingCommonKeybindingFuncHandlerFunc) (GdkEvent* event, gpointer user_data); typedef struct _ParamSpecBindingCommon ParamSpecBindingCommon; struct _BindingCommon { GTypeInstance parent_instance; volatile int ref_count; BindingCommonPrivate * priv; }; struct _BindingCommonClass { GTypeClass parent_class; void (*finalize) (BindingCommon *self); }; struct _BindingCommonKeybinding { GObject parent_instance; BindingCommonKeybindingPrivate * priv; }; struct _BindingCommonKeybindingClass { GObjectClass parent_class; }; struct _BindingCommonKeybindingPrivate { guint _keysym; GdkModifierType _modifiers; gboolean _reverse; BindingCommonKeyEventFuncType _ftype; }; struct _ParamSpecBindingCommon { GParamSpec parent_instance; }; static gpointer binding_common_parent_class = NULL; static gint BindingCommonKeybinding_private_offset; static gpointer binding_common_keybinding_parent_class = NULL; gpointer binding_common_ref (gpointer instance); void binding_common_unref (gpointer instance); GParamSpec* param_spec_binding_common (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_binding_common (GValue* value, gpointer v_object); void value_take_binding_common (GValue* value, gpointer v_object); gpointer value_get_binding_common (const GValue* value); GType binding_common_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (BindingCommon, binding_common_unref) GType binding_common_key_event_func_type_get_type (void) G_GNUC_CONST; GType keybinding_manager_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (KeybindingManager, g_object_unref) GType binding_common_keybinding_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (BindingCommonKeybinding, g_object_unref) void binding_common_keybinding_manager_bind (KeybindingManager* keybinding_manager, GList* * keybindings, const gchar* accelerator, BindingCommonKeyEventFuncType ftype, KeybindingManagerKeybindingHandlerFunc handler_normal, gpointer handler_normal_target, KeybindingManagerKeybindingHandlerFunc handler_reverse, gpointer handler_reverse_target); BindingCommonKeybinding* binding_common_keybinding_new (guint keysym, GdkModifierType modifiers, gboolean reverse, BindingCommonKeyEventFuncType ftype); BindingCommonKeybinding* binding_common_keybinding_construct (GType object_type, guint keysym, GdkModifierType modifiers, gboolean reverse, BindingCommonKeyEventFuncType ftype); gboolean keybinding_manager_bind (KeybindingManager* self, guint keysym, GdkModifierType modifiers, KeybindingManagerKeybindingHandlerFunc handler, gpointer handler_target); void binding_common_unbind_switch_shortcut (BindingCommonKeyEventFuncType ftype, GList* keybindings); KeybindingManager* keybinding_manager_get_instance (void); BindingCommonKeyEventFuncType binding_common_keybinding_get_ftype (BindingCommonKeybinding* self); void keybinding_manager_unbind (KeybindingManager* self, guint keysym, GdkModifierType modifiers); guint binding_common_keybinding_get_keysym (BindingCommonKeybinding* self); GdkModifierType binding_common_keybinding_get_modifiers (BindingCommonKeybinding* self); void binding_common_set_custom_font (GSettings* settings_panel, GSettings* settings_emoji, GtkCssProvider* * css_provider); void ibus_emojier_set_emoji_font (const gchar* emoji_font); static void _vala_PangoFontDescription_free (PangoFontDescription* self); BindingCommon* binding_common_new (void); BindingCommon* binding_common_construct (GType object_type); void binding_common_keybinding_set_keysym (BindingCommonKeybinding* self, guint value); void binding_common_keybinding_set_modifiers (BindingCommonKeybinding* self, GdkModifierType value); void binding_common_keybinding_set_reverse (BindingCommonKeybinding* self, gboolean value); void binding_common_keybinding_set_ftype (BindingCommonKeybinding* self, BindingCommonKeyEventFuncType value); gboolean binding_common_keybinding_get_reverse (BindingCommonKeybinding* self); static void binding_common_keybinding_finalize (GObject * obj); static GType binding_common_keybinding_get_type_once (void); static void _vala_binding_common_keybinding_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); static void _vala_binding_common_keybinding_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); static void binding_common_finalize (BindingCommon * obj); static GType binding_common_get_type_once (void); static GType binding_common_key_event_func_type_get_type_once (void) { static const GEnumValue values[] = {{BINDING_COMMON_KEY_EVENT_FUNC_TYPE_ANY, "BINDING_COMMON_KEY_EVENT_FUNC_TYPE_ANY", "any"}, {BINDING_COMMON_KEY_EVENT_FUNC_TYPE_IME_SWITCHER, "BINDING_COMMON_KEY_EVENT_FUNC_TYPE_IME_SWITCHER", "ime-switcher"}, {BINDING_COMMON_KEY_EVENT_FUNC_TYPE_EMOJI_TYPING, "BINDING_COMMON_KEY_EVENT_FUNC_TYPE_EMOJI_TYPING", "emoji-typing"}, {0, NULL, NULL}}; GType binding_common_key_event_func_type_type_id; binding_common_key_event_func_type_type_id = g_enum_register_static ("BindingCommonKeyEventFuncType", values); return binding_common_key_event_func_type_type_id; } GType binding_common_key_event_func_type_get_type (void) { static volatile gsize binding_common_key_event_func_type_type_id__volatile = 0; if (g_once_init_enter (&binding_common_key_event_func_type_type_id__volatile)) { GType binding_common_key_event_func_type_type_id; binding_common_key_event_func_type_type_id = binding_common_key_event_func_type_get_type_once (); g_once_init_leave (&binding_common_key_event_func_type_type_id__volatile, binding_common_key_event_func_type_type_id); } return binding_common_key_event_func_type_type_id__volatile; } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } void binding_common_keybinding_manager_bind (KeybindingManager* keybinding_manager, GList* * keybindings, const gchar* accelerator, BindingCommonKeyEventFuncType ftype, KeybindingManagerKeybindingHandlerFunc handler_normal, gpointer handler_normal_target, KeybindingManagerKeybindingHandlerFunc handler_reverse, gpointer handler_reverse_target) { guint switch_keysym = 0U; GdkModifierType switch_modifiers = 0U; GdkModifierType reverse_modifier = 0U; BindingCommonKeybinding* keybinding = NULL; guint _tmp0_ = 0U; GdkModifierType _tmp1_ = 0U; static const GdkModifierType VIRTUAL_MODIFIERS = (GDK_SUPER_MASK | GDK_HYPER_MASK) | GDK_META_MASK; GdkModifierType _tmp2_; gboolean _tmp6_ = FALSE; GdkModifierType _tmp8_; BindingCommonKeybinding* _tmp9_; BindingCommonKeybinding* _tmp10_; BindingCommonKeybinding* _tmp11_; GdkModifierType _tmp12_; GdkModifierType _tmp13_; GdkModifierType _tmp14_; GdkModifierType _tmp15_; GdkModifierType _tmp16_; GdkModifierType _tmp17_; BindingCommonKeybinding* _tmp18_; BindingCommonKeybinding* _tmp19_; BindingCommonKeybinding* _tmp20_; g_return_if_fail (keybinding_manager != NULL); switch_keysym = (guint) 0; switch_modifiers = 0; reverse_modifier = GDK_SHIFT_MASK; gtk_accelerator_parse (accelerator, &_tmp0_, &_tmp1_); switch_keysym = _tmp0_; switch_modifiers = _tmp1_; _tmp2_ = switch_modifiers; if ((_tmp2_ & VIRTUAL_MODIFIERS) != 0) { GdkDisplay* _tmp3_; GdkKeymap* _tmp4_; GdkModifierType _tmp5_; _tmp3_ = gdk_display_get_default (); _tmp4_ = gdk_keymap_get_for_display (_tmp3_); gdk_keymap_map_virtual_modifiers (_tmp4_, &switch_modifiers); _tmp5_ = switch_modifiers; switch_modifiers = _tmp5_ & (~VIRTUAL_MODIFIERS); } if (switch_keysym == ((guint) 0)) { GdkModifierType _tmp7_; _tmp7_ = switch_modifiers; _tmp6_ = _tmp7_ == 0; } else { _tmp6_ = FALSE; } if (_tmp6_) { g_warning ("bindingcommon.vala:90: Parse accelerator '%s' failed!", accelerator); _g_object_unref0 (keybinding); return; } _tmp8_ = switch_modifiers; _tmp9_ = binding_common_keybinding_new (switch_keysym, _tmp8_, FALSE, ftype); _g_object_unref0 (keybinding); keybinding = _tmp9_; _tmp10_ = keybinding; _tmp11_ = _g_object_ref0 (_tmp10_); *keybindings = g_list_append (*keybindings, _tmp11_); _tmp12_ = switch_modifiers; keybinding_manager_bind (keybinding_manager, switch_keysym, _tmp12_, handler_normal, handler_normal_target); if (ftype == BINDING_COMMON_KEY_EVENT_FUNC_TYPE_EMOJI_TYPING) { _g_object_unref0 (keybinding); return; } _tmp13_ = switch_modifiers; _tmp14_ = reverse_modifier; if ((_tmp13_ & _tmp14_) != 0) { _g_object_unref0 (keybinding); return; } _tmp15_ = switch_modifiers; _tmp16_ = reverse_modifier; switch_modifiers = _tmp15_ | _tmp16_; _tmp17_ = switch_modifiers; _tmp18_ = binding_common_keybinding_new (switch_keysym, _tmp17_, TRUE, ftype); _g_object_unref0 (keybinding); keybinding = _tmp18_; _tmp19_ = keybinding; _tmp20_ = _g_object_ref0 (_tmp19_); *keybindings = g_list_append (*keybindings, _tmp20_); if (ftype == BINDING_COMMON_KEY_EVENT_FUNC_TYPE_IME_SWITCHER) { GdkModifierType _tmp21_; _tmp21_ = switch_modifiers; keybinding_manager_bind (keybinding_manager, switch_keysym, _tmp21_, handler_reverse, handler_reverse_target); } _g_object_unref0 (keybinding); return; } void binding_common_unbind_switch_shortcut (BindingCommonKeyEventFuncType ftype, GList* keybindings) { KeybindingManager* keybinding_manager = NULL; KeybindingManager* _tmp0_; _tmp0_ = keybinding_manager_get_instance (); keybinding_manager = _tmp0_; while (TRUE) { BindingCommonKeybinding* keybinding = NULL; gconstpointer _tmp1_; BindingCommonKeybinding* _tmp2_; gboolean _tmp3_ = FALSE; GList* _tmp14_; if (!(keybindings != NULL)) { break; } _tmp1_ = keybindings->data; _tmp2_ = _g_object_ref0 ((BindingCommonKeybinding*) _tmp1_); keybinding = _tmp2_; if (ftype == BINDING_COMMON_KEY_EVENT_FUNC_TYPE_ANY) { _tmp3_ = TRUE; } else { BindingCommonKeybinding* _tmp4_; BindingCommonKeyEventFuncType _tmp5_; BindingCommonKeyEventFuncType _tmp6_; _tmp4_ = keybinding; _tmp5_ = binding_common_keybinding_get_ftype (_tmp4_); _tmp6_ = _tmp5_; _tmp3_ = ftype == _tmp6_; } if (_tmp3_) { KeybindingManager* _tmp7_; BindingCommonKeybinding* _tmp8_; guint _tmp9_; guint _tmp10_; BindingCommonKeybinding* _tmp11_; GdkModifierType _tmp12_; GdkModifierType _tmp13_; _tmp7_ = keybinding_manager; _tmp8_ = keybinding; _tmp9_ = binding_common_keybinding_get_keysym (_tmp8_); _tmp10_ = _tmp9_; _tmp11_ = keybinding; _tmp12_ = binding_common_keybinding_get_modifiers (_tmp11_); _tmp13_ = _tmp12_; keybinding_manager_unbind (_tmp7_, _tmp10_, _tmp13_); } _tmp14_ = keybindings->next; keybindings = _tmp14_; _g_object_unref0 (keybinding); } _g_object_unref0 (keybinding_manager); } static void _vala_PangoFontDescription_free (PangoFontDescription* self) { g_boxed_free (pango_font_description_get_type (), self); } void binding_common_set_custom_font (GSettings* settings_panel, GSettings* settings_emoji, GtkCssProvider* * css_provider) { GdkDisplay* display = NULL; GdkDisplay* _tmp0_; GdkDisplay* _tmp1_; GdkScreen* _tmp2_ = NULL; GdkDisplay* _tmp3_; GdkScreen* screen = NULL; GdkScreen* _tmp6_; GdkScreen* _tmp7_; gboolean use_custom_font = FALSE; gchar* custom_font = NULL; gchar* _tmp12_; const gchar* _tmp13_; PangoFontDescription* font_desc = NULL; const gchar* _tmp14_; PangoFontDescription* _tmp15_; gchar* font_family = NULL; PangoFontDescription* _tmp16_; const gchar* _tmp17_; gchar* _tmp18_; gint font_size = 0; PangoFontDescription* _tmp19_; gchar* data = NULL; gboolean _tmp20_ = FALSE; GtkCssProvider* _tmp26_; GdkScreen* _tmp31_; GError* _inner_error0_ = NULL; _tmp0_ = gdk_display_get_default (); _tmp1_ = _g_object_ref0 (_tmp0_); display = _tmp1_; _tmp3_ = display; if (_tmp3_ != NULL) { GdkDisplay* _tmp4_; GdkScreen* _tmp5_; _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 ("bindingcommon.vala:152: Could not open display."); _g_object_unref0 (screen); _g_object_unref0 (display); return; } if (settings_emoji != NULL) { gchar* emoji_font = NULL; gchar* _tmp8_; const gchar* _tmp9_; const gchar* _tmp10_; _tmp8_ = g_settings_get_string (settings_emoji, "font"); emoji_font = _tmp8_; _tmp9_ = emoji_font; if (_tmp9_ == NULL) { g_warning ("bindingcommon.vala:159: No config emoji:font."); _g_free0 (emoji_font); _g_object_unref0 (screen); _g_object_unref0 (display); return; } _tmp10_ = emoji_font; ibus_emojier_set_emoji_font (_tmp10_); _g_free0 (emoji_font); } if (settings_panel == NULL) { _g_object_unref0 (screen); _g_object_unref0 (display); return; } use_custom_font = g_settings_get_boolean (settings_panel, "use-custom-font"); if ((*css_provider) != NULL) { GdkScreen* _tmp11_; _tmp11_ = screen; gtk_style_context_remove_provider_for_screen (_tmp11_, (GtkStyleProvider*) (*css_provider)); _g_object_unref0 (*css_provider); *css_provider = NULL; } if (use_custom_font == FALSE) { _g_object_unref0 (screen); _g_object_unref0 (display); return; } _tmp12_ = g_settings_get_string (settings_panel, "custom-font"); custom_font = _tmp12_; _tmp13_ = custom_font; if (_tmp13_ == NULL) { g_warning ("bindingcommon.vala:182: No config panel:custom-font."); _g_free0 (custom_font); _g_object_unref0 (screen); _g_object_unref0 (display); return; } _tmp14_ = custom_font; _tmp15_ = pango_font_description_from_string (_tmp14_); font_desc = _tmp15_; _tmp16_ = font_desc; _tmp17_ = pango_font_description_get_family (_tmp16_); _tmp18_ = g_strdup (_tmp17_); font_family = _tmp18_; _tmp19_ = font_desc; font_size = pango_font_description_get_size (_tmp19_) / PANGO_SCALE; if (GTK_MAJOR_VERSION < 3) { _tmp20_ = TRUE; } else { gboolean _tmp21_ = FALSE; if (GTK_MAJOR_VERSION == 3) { _tmp21_ = GTK_MINOR_VERSION < 20; } else { _tmp21_ = FALSE; } _tmp20_ = _tmp21_; } if (_tmp20_) { const gchar* _tmp22_; gchar* _tmp23_; _tmp22_ = custom_font; _tmp23_ = g_strdup_printf ("GtkLabel { font: %s; }", _tmp22_); _g_free0 (data); data = _tmp23_; } else { const gchar* _tmp24_; gchar* _tmp25_; _tmp24_ = font_family; _tmp25_ = g_strdup_printf ("label { font-family: %s; font-size: %dpt; }", _tmp24_, font_size); _g_free0 (data); data = _tmp25_; } _tmp26_ = gtk_css_provider_new (); _g_object_unref0 (*css_provider); *css_provider = _tmp26_; { const gchar* _tmp27_; _tmp27_ = data; gtk_css_provider_load_from_data (*css_provider, _tmp27_, (gssize) -1, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch0_g_error; } } goto __finally0; __catch0_g_error: { GError* e = NULL; const gchar* _tmp28_; GError* _tmp29_; const gchar* _tmp30_; e = _inner_error0_; _inner_error0_ = NULL; _tmp28_ = custom_font; _tmp29_ = e; _tmp30_ = _tmp29_->message; g_warning ("bindingcommon.vala:205: Failed css_provider_from_data: %s: %s", _tmp28_, _tmp30_); _g_error_free0 (e); _g_free0 (data); _g_free0 (font_family); __vala_PangoFontDescription_free0 (font_desc); _g_free0 (custom_font); _g_object_unref0 (screen); _g_object_unref0 (display); return; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_free0 (data); _g_free0 (font_family); __vala_PangoFontDescription_free0 (font_desc); _g_free0 (custom_font); _g_object_unref0 (screen); _g_object_unref0 (display); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } _tmp31_ = screen; gtk_style_context_add_provider_for_screen (_tmp31_, (GtkStyleProvider*) (*css_provider), (guint) GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); _g_free0 (data); _g_free0 (font_family); __vala_PangoFontDescription_free0 (font_desc); _g_free0 (custom_font); _g_object_unref0 (screen); _g_object_unref0 (display); } BindingCommon* binding_common_construct (GType object_type) { BindingCommon* self = NULL; self = (BindingCommon*) g_type_create_instance (object_type); return self; } BindingCommon* binding_common_new (void) { return binding_common_construct (TYPE_BINDING_COMMON); } static inline gpointer binding_common_keybinding_get_instance_private (BindingCommonKeybinding* self) { return G_STRUCT_MEMBER_P (self, BindingCommonKeybinding_private_offset); } BindingCommonKeybinding* binding_common_keybinding_construct (GType object_type, guint keysym, GdkModifierType modifiers, gboolean reverse, BindingCommonKeyEventFuncType ftype) { BindingCommonKeybinding * self = NULL; self = (BindingCommonKeybinding*) g_object_new (object_type, NULL); binding_common_keybinding_set_keysym (self, keysym); binding_common_keybinding_set_modifiers (self, modifiers); binding_common_keybinding_set_reverse (self, reverse); binding_common_keybinding_set_ftype (self, ftype); return self; } BindingCommonKeybinding* binding_common_keybinding_new (guint keysym, GdkModifierType modifiers, gboolean reverse, BindingCommonKeyEventFuncType ftype) { return binding_common_keybinding_construct (BINDING_COMMON_TYPE_KEYBINDING, keysym, modifiers, reverse, ftype); } guint binding_common_keybinding_get_keysym (BindingCommonKeybinding* self) { guint result; g_return_val_if_fail (self != NULL, 0U); result = self->priv->_keysym; return result; } void binding_common_keybinding_set_keysym (BindingCommonKeybinding* self, guint value) { g_return_if_fail (self != NULL); if (binding_common_keybinding_get_keysym (self) != value) { self->priv->_keysym = value; g_object_notify_by_pspec ((GObject *) self, binding_common_keybinding_properties[BINDING_COMMON_KEYBINDING_KEYSYM_PROPERTY]); } } GdkModifierType binding_common_keybinding_get_modifiers (BindingCommonKeybinding* self) { GdkModifierType result; GdkModifierType _tmp0_; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = self->priv->_modifiers; result = _tmp0_; return result; } void binding_common_keybinding_set_modifiers (BindingCommonKeybinding* self, GdkModifierType value) { g_return_if_fail (self != NULL); if (binding_common_keybinding_get_modifiers (self) != value) { self->priv->_modifiers = value; g_object_notify_by_pspec ((GObject *) self, binding_common_keybinding_properties[BINDING_COMMON_KEYBINDING_MODIFIERS_PROPERTY]); } } gboolean binding_common_keybinding_get_reverse (BindingCommonKeybinding* self) { gboolean result; g_return_val_if_fail (self != NULL, FALSE); result = self->priv->_reverse; return result; } void binding_common_keybinding_set_reverse (BindingCommonKeybinding* self, gboolean value) { g_return_if_fail (self != NULL); if (binding_common_keybinding_get_reverse (self) != value) { self->priv->_reverse = value; g_object_notify_by_pspec ((GObject *) self, binding_common_keybinding_properties[BINDING_COMMON_KEYBINDING_REVERSE_PROPERTY]); } } BindingCommonKeyEventFuncType binding_common_keybinding_get_ftype (BindingCommonKeybinding* self) { BindingCommonKeyEventFuncType result; BindingCommonKeyEventFuncType _tmp0_; g_return_val_if_fail (self != NULL, 0); _tmp0_ = self->priv->_ftype; result = _tmp0_; return result; } void binding_common_keybinding_set_ftype (BindingCommonKeybinding* self, BindingCommonKeyEventFuncType value) { g_return_if_fail (self != NULL); if (binding_common_keybinding_get_ftype (self) != value) { self->priv->_ftype = value; g_object_notify_by_pspec ((GObject *) self, binding_common_keybinding_properties[BINDING_COMMON_KEYBINDING_FTYPE_PROPERTY]); } } static void binding_common_keybinding_class_init (BindingCommonKeybindingClass * klass, gpointer klass_data) { binding_common_keybinding_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &BindingCommonKeybinding_private_offset); G_OBJECT_CLASS (klass)->get_property = _vala_binding_common_keybinding_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_binding_common_keybinding_set_property; G_OBJECT_CLASS (klass)->finalize = binding_common_keybinding_finalize; g_object_class_install_property (G_OBJECT_CLASS (klass), BINDING_COMMON_KEYBINDING_KEYSYM_PROPERTY, binding_common_keybinding_properties[BINDING_COMMON_KEYBINDING_KEYSYM_PROPERTY] = g_param_spec_uint ("keysym", "keysym", "keysym", 0, G_MAXUINT, 0U, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), BINDING_COMMON_KEYBINDING_MODIFIERS_PROPERTY, binding_common_keybinding_properties[BINDING_COMMON_KEYBINDING_MODIFIERS_PROPERTY] = g_param_spec_flags ("modifiers", "modifiers", "modifiers", gdk_modifier_type_get_type (), 0U, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), BINDING_COMMON_KEYBINDING_REVERSE_PROPERTY, binding_common_keybinding_properties[BINDING_COMMON_KEYBINDING_REVERSE_PROPERTY] = g_param_spec_boolean ("reverse", "reverse", "reverse", FALSE, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); g_object_class_install_property (G_OBJECT_CLASS (klass), BINDING_COMMON_KEYBINDING_FTYPE_PROPERTY, binding_common_keybinding_properties[BINDING_COMMON_KEYBINDING_FTYPE_PROPERTY] = g_param_spec_enum ("ftype", "ftype", "ftype", BINDING_COMMON_TYPE_KEY_EVENT_FUNC_TYPE, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void binding_common_keybinding_instance_init (BindingCommonKeybinding * self, gpointer klass) { self->priv = binding_common_keybinding_get_instance_private (self); } static void binding_common_keybinding_finalize (GObject * obj) { BindingCommonKeybinding * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, BINDING_COMMON_TYPE_KEYBINDING, BindingCommonKeybinding); G_OBJECT_CLASS (binding_common_keybinding_parent_class)->finalize (obj); } static GType binding_common_keybinding_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (BindingCommonKeybindingClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) binding_common_keybinding_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BindingCommonKeybinding), 0, (GInstanceInitFunc) binding_common_keybinding_instance_init, NULL }; GType binding_common_keybinding_type_id; binding_common_keybinding_type_id = g_type_register_static (G_TYPE_OBJECT, "BindingCommonKeybinding", &g_define_type_info, 0); BindingCommonKeybinding_private_offset = g_type_add_instance_private (binding_common_keybinding_type_id, sizeof (BindingCommonKeybindingPrivate)); return binding_common_keybinding_type_id; } GType binding_common_keybinding_get_type (void) { static volatile gsize binding_common_keybinding_type_id__volatile = 0; if (g_once_init_enter (&binding_common_keybinding_type_id__volatile)) { GType binding_common_keybinding_type_id; binding_common_keybinding_type_id = binding_common_keybinding_get_type_once (); g_once_init_leave (&binding_common_keybinding_type_id__volatile, binding_common_keybinding_type_id); } return binding_common_keybinding_type_id__volatile; } static void _vala_binding_common_keybinding_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { BindingCommonKeybinding * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, BINDING_COMMON_TYPE_KEYBINDING, BindingCommonKeybinding); switch (property_id) { case BINDING_COMMON_KEYBINDING_KEYSYM_PROPERTY: g_value_set_uint (value, binding_common_keybinding_get_keysym (self)); break; case BINDING_COMMON_KEYBINDING_MODIFIERS_PROPERTY: g_value_set_flags (value, binding_common_keybinding_get_modifiers (self)); break; case BINDING_COMMON_KEYBINDING_REVERSE_PROPERTY: g_value_set_boolean (value, binding_common_keybinding_get_reverse (self)); break; case BINDING_COMMON_KEYBINDING_FTYPE_PROPERTY: g_value_set_enum (value, binding_common_keybinding_get_ftype (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void _vala_binding_common_keybinding_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { BindingCommonKeybinding * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, BINDING_COMMON_TYPE_KEYBINDING, BindingCommonKeybinding); switch (property_id) { case BINDING_COMMON_KEYBINDING_KEYSYM_PROPERTY: binding_common_keybinding_set_keysym (self, g_value_get_uint (value)); break; case BINDING_COMMON_KEYBINDING_MODIFIERS_PROPERTY: binding_common_keybinding_set_modifiers (self, g_value_get_flags (value)); break; case BINDING_COMMON_KEYBINDING_REVERSE_PROPERTY: binding_common_keybinding_set_reverse (self, g_value_get_boolean (value)); break; case BINDING_COMMON_KEYBINDING_FTYPE_PROPERTY: binding_common_keybinding_set_ftype (self, g_value_get_enum (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void value_binding_common_init (GValue* value) { value->data[0].v_pointer = NULL; } static void value_binding_common_free_value (GValue* value) { if (value->data[0].v_pointer) { binding_common_unref (value->data[0].v_pointer); } } static void value_binding_common_copy_value (const GValue* src_value, GValue* dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = binding_common_ref (src_value->data[0].v_pointer); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer value_binding_common_peek_pointer (const GValue* value) { return value->data[0].v_pointer; } static gchar* value_binding_common_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { BindingCommon * 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 = binding_common_ref (object); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar* value_binding_common_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { BindingCommon ** 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 = binding_common_ref (value->data[0].v_pointer); } return NULL; } GParamSpec* param_spec_binding_common (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { ParamSpecBindingCommon* spec; g_return_val_if_fail (g_type_is_a (object_type, TYPE_BINDING_COMMON), 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_binding_common (const GValue* value) { g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_BINDING_COMMON), NULL); return value->data[0].v_pointer; } void value_set_binding_common (GValue* value, gpointer v_object) { BindingCommon * old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_BINDING_COMMON)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_BINDING_COMMON)); 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; binding_common_ref (value->data[0].v_pointer); } else { value->data[0].v_pointer = NULL; } if (old) { binding_common_unref (old); } } void value_take_binding_common (GValue* value, gpointer v_object) { BindingCommon * old; g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TYPE_BINDING_COMMON)); old = value->data[0].v_pointer; if (v_object) { g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TYPE_BINDING_COMMON)); 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) { binding_common_unref (old); } } static void binding_common_class_init (BindingCommonClass * klass, gpointer klass_data) { binding_common_parent_class = g_type_class_peek_parent (klass); ((BindingCommonClass *) klass)->finalize = binding_common_finalize; } static void binding_common_instance_init (BindingCommon * self, gpointer klass) { self->ref_count = 1; } static void binding_common_finalize (BindingCommon * obj) { BindingCommon * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_BINDING_COMMON, BindingCommon); g_signal_handlers_destroy (self); } static GType binding_common_get_type_once (void) { static const GTypeValueTable g_define_type_value_table = { value_binding_common_init, value_binding_common_free_value, value_binding_common_copy_value, value_binding_common_peek_pointer, "p", value_binding_common_collect_value, "p", value_binding_common_lcopy_value }; static const GTypeInfo g_define_type_info = { sizeof (BindingCommonClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) binding_common_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BindingCommon), 0, (GInstanceInitFunc) binding_common_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 binding_common_type_id; binding_common_type_id = g_type_register_fundamental (g_type_fundamental_next (), "BindingCommon", &g_define_type_info, &g_define_type_fundamental_info, 0); return binding_common_type_id; } GType binding_common_get_type (void) { static volatile gsize binding_common_type_id__volatile = 0; if (g_once_init_enter (&binding_common_type_id__volatile)) { GType binding_common_type_id; binding_common_type_id = binding_common_get_type_once (); g_once_init_leave (&binding_common_type_id__volatile, binding_common_type_id); } return binding_common_type_id__volatile; } gpointer binding_common_ref (gpointer instance) { BindingCommon * self; self = instance; g_atomic_int_inc (&self->ref_count); return instance; } void binding_common_unref (gpointer instance) { BindingCommon * self; self = instance; if (g_atomic_int_dec_and_test (&self->ref_count)) { BINDING_COMMON_GET_CLASS (self)->finalize (self); g_type_free_instance ((GTypeInstance *) self); } } ibus-1.5.22/ui/gtk3/ibus-ui-emojier.desktop.in0000644000000000000000000000013413623750431015726 00000000000000[Desktop Entry] Name=Emoji Choice Icon=ibus Exec=ibus emoji Type=Application NoDisplay=true ibus-1.5.22/ui/gtk3/candidatepanel.c0000644000000000000000000013577613623751707014055 00000000000000/* candidatepanel.c generated by valac 0.47.91, 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-2019 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; enum { CANDIDATE_PANEL_0_PROPERTY, CANDIDATE_PANEL_NUM_PROPERTIES }; static GParamSpec* candidate_panel_properties[CANDIDATE_PANEL_NUM_PROPERTIES]; #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)) enum { CANDIDATE_PANEL_CURSOR_UP_SIGNAL, CANDIDATE_PANEL_CURSOR_DOWN_SIGNAL, CANDIDATE_PANEL_PAGE_UP_SIGNAL, CANDIDATE_PANEL_PAGE_DOWN_SIGNAL, CANDIDATE_PANEL_CANDIDATE_CLICKED_SIGNAL, CANDIDATE_PANEL_NUM_SIGNALS }; static guint candidate_panel_signals[CANDIDATE_PANEL_NUM_SIGNALS] = {0}; 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 gint CandidatePanel_private_offset; static gpointer candidate_panel_parent_class = NULL; GType candidate_panel_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (CandidatePanel, g_object_unref) GType candidate_area_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (CandidateArea, g_object_unref) GType hseparator_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (HSeparator, g_object_unref) CandidatePanel* candidate_panel_new (void); CandidatePanel* candidate_panel_construct (GType object_type); static gboolean __lambda13_ (CandidatePanel* self, GtkWidget* w, GdkEventButton* e); void candidate_panel_set_vertical (CandidatePanel* self, gboolean vertical); static gboolean ___lambda13__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void __lambda14_ (CandidatePanel* self, GtkWidget* w, GtkAllocation* a); static void candidate_panel_adjust_window_position (CandidatePanel* self); static void ___lambda14__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self); GType handle_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Handle, g_object_unref) 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, gint labels_length1); void candidate_area_set_labels (CandidateArea* self, IBusText** labels, gint 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, gint* length, gint* size, IBusText* value); static void _vala_array_add9 (IBusText** * array, gint* length, gint* size, IBusText* value); void candidate_area_set_candidates (CandidateArea* self, IBusText** candidates, gint candidates_length1, guint focus_candidate, gboolean show_cursor); void candidate_panel_set_content_type (CandidatePanel* self, guint purpose, guint hints); CandidateArea* candidate_area_new (gboolean vertical); CandidateArea* candidate_area_construct (GType object_type, gboolean vertical); static void __lambda15_ (CandidatePanel* self, CandidateArea* w, guint i, guint b, guint s); static void ___lambda15__candidate_area_candidate_clicked (CandidateArea* _sender, guint index, guint button, guint state, gpointer self); static void __lambda16_ (CandidatePanel* self, CandidateArea* c); static void ___lambda16__candidate_area_page_up (CandidateArea* _sender, gpointer self); static void __lambda17_ (CandidatePanel* self, CandidateArea* c); static void ___lambda17__candidate_area_page_down (CandidateArea* _sender, gpointer self); static void __lambda18_ (CandidatePanel* self, CandidateArea* c); static void ___lambda18__candidate_area_cursor_up (CandidateArea* _sender, gpointer self); static void __lambda19_ (CandidatePanel* self, CandidateArea* c); static void ___lambda19__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); static void candidate_panel_get_monitor_geometry (CandidatePanel* self, GdkRectangle* result); 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 GType candidate_panel_get_type_once (void); 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 inline gpointer candidate_panel_get_instance_private (CandidatePanel* self) { return G_STRUCT_MEMBER_P (self, CandidatePanel_private_offset); } static gboolean __lambda13_ (CandidatePanel* self, GtkWidget* w, GdkEventButton* e) { gboolean _tmp0_ = FALSE; gboolean result = FALSE; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); if (e->button != ((guint) 1)) { _tmp0_ = TRUE; } else { GdkModifierType _tmp1_; _tmp1_ = e->state; _tmp0_ = (_tmp1_ & GDK_CONTROL_MASK) == 0; } if (_tmp0_) { result = FALSE; return result; } candidate_panel_set_vertical (self, !self->priv->m_vertical_panel_system); result = TRUE; return result; } static gboolean ___lambda13__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = __lambda13_ ((CandidatePanel*) self, _sender, event); return result; } static void __lambda14_ (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 ___lambda14__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self) { __lambda14_ ((CandidatePanel*) self, _sender, allocation); } CandidatePanel* candidate_panel_construct (GType object_type) { CandidatePanel * self = NULL; GtkWindow* _tmp0_; GtkWindow* _tmp1_; GtkWindow* _tmp2_; GtkWindow* _tmp3_; Handle* handle = NULL; Handle* _tmp4_; GtkBox* _tmp5_; GtkBox* _tmp6_; GtkBox* _tmp7_; GtkWindow* _tmp8_; 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) ___lambda13__gtk_widget_button_press_event, self, 0); _tmp3_ = self->priv->m_toplevel; g_signal_connect_object ((GtkWidget*) _tmp3_, "size-allocate", (GCallback) ___lambda14__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) { CandidateArea* _tmp0_; g_return_if_fail (self != NULL); if (self->priv->m_vertical_panel_system == vertical) { return; } self->priv->m_vertical_panel_system = vertical; _tmp0_ = self->priv->m_candidate_area; candidate_area_set_vertical (_tmp0_, vertical, FALSE); } static void candidate_panel_set_orientation (CandidatePanel* self, IBusOrientation orientation) { g_return_if_fail (self != NULL); switch (orientation) { case IBUS_ORIENTATION_VERTICAL: { CandidateArea* _tmp0_; _tmp0_ = self->priv->m_candidate_area; candidate_area_set_vertical (_tmp0_, TRUE, FALSE); break; } case IBUS_ORIENTATION_HORIZONTAL: { CandidateArea* _tmp1_; _tmp1_ = self->priv->m_candidate_area; candidate_area_set_vertical (_tmp1_, FALSE, FALSE); break; } case IBUS_ORIENTATION_SYSTEM: { CandidateArea* _tmp2_; _tmp2_ = self->priv->m_candidate_area; candidate_area_set_vertical (_tmp2_, self->priv->m_vertical_panel_system, 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}; GdkRectangle _tmp0_ = {0}; GdkRectangle _tmp1_; GdkRectangle _tmp2_; GdkRectangle _tmp3_; g_return_if_fail (self != NULL); memset (&_tmp0_, 0, sizeof (GdkRectangle)); _tmp0_.x = x; _tmp0_.y = y; _tmp0_.width = width; _tmp0_.height = height; location = _tmp0_; _tmp1_ = self->priv->m_cursor_location; _tmp2_ = location; if (_cairo_rectangle_int_equal (&_tmp1_, &_tmp2_) == TRUE) { return; } _tmp3_ = location; self->priv->m_cursor_location = _tmp3_; } static void candidate_panel_set_labels (CandidatePanel* self, IBusText** labels, gint labels_length1) { CandidateArea* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_candidate_area; candidate_area_set_labels (_tmp0_, labels, (gint) labels_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; PangoAttrList* _tmp0_; GtkStyleContext* context = NULL; GtkStyleContext* _tmp1_; GtkStyleContext* _tmp2_; GdkRGBA color = {0}; GtkStyleContext* _tmp3_; GdkRGBA _tmp4_ = {0}; gboolean _tmp5_; PangoAttrList* _tmp17_; g_return_if_fail (self != NULL); g_return_if_fail (label != NULL); g_return_if_fail (text != NULL); _tmp0_ = get_pango_attr_list_from_ibus_text (text); attrs = _tmp0_; _tmp1_ = gtk_widget_get_style_context ((GtkWidget*) label); _tmp2_ = _g_object_ref0 (_tmp1_); context = _tmp2_; _tmp3_ = context; _tmp5_ = gtk_style_context_lookup_color (_tmp3_, "placeholder_text_color", &_tmp4_); color = _tmp4_; if (_tmp5_) { PangoAttribute* pango_attr = NULL; GdkRGBA _tmp6_; GdkRGBA _tmp7_; GdkRGBA _tmp8_; PangoAttribute* _tmp9_; PangoAttribute* _tmp10_; PangoAttribute* _tmp11_; const gchar* _tmp12_; gint _tmp13_; gint _tmp14_; PangoAttrList* _tmp15_; PangoAttribute* _tmp16_; _tmp6_ = color; _tmp7_ = color; _tmp8_ = color; _tmp9_ = pango_attr_foreground_new ((guint16) (_tmp6_.red * G_MAXUINT16), (guint16) (_tmp7_.green * G_MAXUINT16), (guint16) (_tmp8_.blue * G_MAXUINT16)); pango_attr = _tmp9_; _tmp10_ = pango_attr; _tmp10_->start_index = (guint) 0; _tmp11_ = pango_attr; _tmp12_ = gtk_label_get_text (label); _tmp13_ = strlen (_tmp12_); _tmp14_ = _tmp13_; _tmp11_->end_index = (guint) _tmp14_; _tmp15_ = attrs; _tmp16_ = pango_attr; pango_attr = NULL; pango_attr_list_insert (_tmp15_, _tmp16_); _pango_attribute_destroy0 (pango_attr); } _tmp17_ = attrs; gtk_label_set_attributes (label, _tmp17_); _g_object_unref0 (context); _pango_attr_list_unref0 (attrs); } void candidate_panel_set_preedit_text (CandidatePanel* self, IBusText* text, guint cursor) { g_return_if_fail (self != NULL); if (text != NULL) { gchar* str = NULL; const gchar* _tmp0_; gchar* _tmp1_; const gchar* _tmp2_; gint _tmp3_; gint _tmp4_; _tmp0_ = ibus_text_get_text (text); _tmp1_ = g_strdup (_tmp0_); str = _tmp1_; _tmp2_ = str; _tmp3_ = strlen (_tmp2_); _tmp4_ = _tmp3_; if (_tmp4_ > 0) { GtkLabel* _tmp5_; const gchar* _tmp6_; GtkLabel* _tmp7_; GtkLabel* _tmp8_; _tmp5_ = self->priv->m_preedit_label; _tmp6_ = str; gtk_label_set_text (_tmp5_, _tmp6_); _tmp7_ = self->priv->m_preedit_label; gtk_widget_show ((GtkWidget*) _tmp7_); _tmp8_ = self->priv->m_preedit_label; candidate_panel_set_attributes (self, _tmp8_, text); } else { GtkLabel* _tmp9_; GtkLabel* _tmp10_; _tmp9_ = self->priv->m_preedit_label; gtk_label_set_text (_tmp9_, ""); _tmp10_ = self->priv->m_preedit_label; gtk_widget_hide ((GtkWidget*) _tmp10_); } _g_free0 (str); } else { GtkLabel* _tmp11_; GtkLabel* _tmp12_; _tmp11_ = self->priv->m_preedit_label; gtk_label_set_text (_tmp11_, ""); _tmp12_ = self->priv->m_preedit_label; gtk_widget_hide ((GtkWidget*) _tmp12_); } candidate_panel_update (self); } void candidate_panel_set_auxiliary_text (CandidatePanel* self, IBusText* text) { g_return_if_fail (self != NULL); if (text != NULL) { GtkLabel* _tmp0_; const gchar* _tmp1_; PangoAttrList* attrs = NULL; PangoAttrList* _tmp2_; GtkLabel* _tmp3_; PangoAttrList* _tmp4_; GtkLabel* _tmp5_; _tmp0_ = self->priv->m_aux_label; _tmp1_ = ibus_text_get_text (text); gtk_label_set_text (_tmp0_, _tmp1_); _tmp2_ = get_pango_attr_list_from_ibus_text (text); attrs = _tmp2_; _tmp3_ = self->priv->m_aux_label; _tmp4_ = attrs; gtk_label_set_attributes (_tmp3_, _tmp4_); _tmp5_ = self->priv->m_aux_label; gtk_widget_show ((GtkWidget*) _tmp5_); _pango_attr_list_unref0 (attrs); } else { GtkLabel* _tmp6_; GtkLabel* _tmp7_; _tmp6_ = self->priv->m_aux_label; gtk_label_set_text (_tmp6_, ""); _tmp7_ = self->priv->m_aux_label; gtk_widget_hide ((GtkWidget*) _tmp7_); } candidate_panel_update (self); } static void _vala_array_add8 (IBusText** * array, gint* length, gint* 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, gint* length, gint* 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_; gint candidates_length1; gint _candidates_size_; guint cursor_in_page = 0U; gboolean show_cursor = FALSE; IBusText** labels = NULL; IBusText** _tmp1_; gint labels_length1; gint _labels_size_; IBusOrientation orientation = 0; CandidateArea* _tmp15_; IBusText** _tmp16_; gint _tmp16__length1; IBusText** _tmp17_; gint _tmp17__length1; IBusText** _tmp19_; gint _tmp19__length1; 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; if (table != NULL) { guint page_size = 0U; guint ncandidates = 0U; guint cursor = 0U; guint page_start_pos = 0U; guint page_end_pos = 0U; page_size = ibus_lookup_table_get_page_size (table); ncandidates = ibus_lookup_table_get_number_of_candidates (table); cursor = ibus_lookup_table_get_cursor_pos (table); cursor_in_page = ibus_lookup_table_get_cursor_in_page (table); show_cursor = ibus_lookup_table_is_cursor_visible (table); page_start_pos = (cursor / page_size) * page_size; page_end_pos = MIN (page_start_pos + page_size, ncandidates); { guint i = 0U; i = page_start_pos; { gboolean _tmp2_ = FALSE; _tmp2_ = TRUE; while (TRUE) { IBusText** _tmp4_; gint _tmp4__length1; IBusText* _tmp5_; IBusText* _tmp6_; if (!_tmp2_) { guint _tmp3_; _tmp3_ = i; i = _tmp3_ + 1; } _tmp2_ = FALSE; if (!(i < page_end_pos)) { break; } _tmp4_ = candidates; _tmp4__length1 = candidates_length1; _tmp5_ = ibus_lookup_table_get_candidate (table, i); _tmp6_ = _g_object_ref0 (_tmp5_); _vala_array_add8 (&candidates, &candidates_length1, &_candidates_size_, _tmp6_); } } } { guint i = 0U; i = (guint) 0; { gboolean _tmp7_ = FALSE; _tmp7_ = TRUE; while (TRUE) { IBusText* label = NULL; IBusText* _tmp9_; IBusText* _tmp10_; IBusText* _tmp11_; if (!_tmp7_) { guint _tmp8_; _tmp8_ = i; i = _tmp8_ + 1; } _tmp7_ = FALSE; if (!(i < page_size)) { break; } _tmp9_ = ibus_lookup_table_get_label (table, i); _tmp10_ = _g_object_ref0 (_tmp9_); label = _tmp10_; _tmp11_ = label; if (_tmp11_ != NULL) { IBusText** _tmp12_; gint _tmp12__length1; IBusText* _tmp13_; IBusText* _tmp14_; _tmp12_ = labels; _tmp12__length1 = labels_length1; _tmp13_ = label; _tmp14_ = _g_object_ref0 (_tmp13_); _vala_array_add9 (&labels, &labels_length1, &_labels_size_, _tmp14_); } _g_object_unref0 (label); } } } orientation = (IBusOrientation) ibus_lookup_table_get_orientation (table); } _tmp15_ = self->priv->m_candidate_area; _tmp16_ = candidates; _tmp16__length1 = candidates_length1; candidate_area_set_candidates (_tmp15_, _tmp16_, (gint) _tmp16__length1, cursor_in_page, show_cursor); _tmp17_ = labels; _tmp17__length1 = labels_length1; candidate_panel_set_labels (self, _tmp17_, (gint) _tmp17__length1); if (table != NULL) { IBusOrientation _tmp18_; _tmp18_ = orientation; candidate_panel_set_orientation (self, _tmp18_); } _tmp19_ = candidates; _tmp19__length1 = candidates_length1; if (_tmp19__length1 != 0) { CandidateArea* _tmp20_; _tmp20_ = self->priv->m_candidate_area; gtk_widget_show_all ((GtkWidget*) _tmp20_); } else { CandidateArea* _tmp21_; _tmp21_ = self->priv->m_candidate_area; gtk_widget_hide ((GtkWidget*) _tmp21_); } 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) { g_return_if_fail (self != NULL); self->priv->m_vertical_writing = (hints & IBUS_INPUT_HINT_VERTICAL_WRITING) != ((guint) 0); } static void candidate_panel_update (CandidatePanel* self) { GtkWindow* _tmp0_; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; CandidateArea* _tmp3_; gboolean _tmp8_ = FALSE; GtkLabel* _tmp9_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_toplevel; gtk_window_resize (_tmp0_, 1, 1); _tmp3_ = self->priv->m_candidate_area; if (gtk_widget_get_visible ((GtkWidget*) _tmp3_)) { _tmp2_ = TRUE; } else { GtkLabel* _tmp4_; _tmp4_ = self->priv->m_preedit_label; _tmp2_ = gtk_widget_get_visible ((GtkWidget*) _tmp4_); } if (_tmp2_) { _tmp1_ = TRUE; } else { GtkLabel* _tmp5_; _tmp5_ = self->priv->m_aux_label; _tmp1_ = gtk_widget_get_visible ((GtkWidget*) _tmp5_); } if (_tmp1_) { GtkWindow* _tmp6_; _tmp6_ = self->priv->m_toplevel; gtk_widget_show ((GtkWidget*) _tmp6_); } else { GtkWindow* _tmp7_; _tmp7_ = self->priv->m_toplevel; gtk_widget_hide ((GtkWidget*) _tmp7_); } _tmp9_ = self->priv->m_aux_label; if (gtk_widget_get_visible ((GtkWidget*) _tmp9_)) { gboolean _tmp10_ = FALSE; CandidateArea* _tmp11_; _tmp11_ = self->priv->m_candidate_area; if (gtk_widget_get_visible ((GtkWidget*) _tmp11_)) { _tmp10_ = TRUE; } else { GtkLabel* _tmp12_; _tmp12_ = self->priv->m_preedit_label; _tmp10_ = gtk_widget_get_visible ((GtkWidget*) _tmp12_); } _tmp8_ = _tmp10_; } else { _tmp8_ = FALSE; } if (_tmp8_) { HSeparator* _tmp13_; _tmp13_ = self->priv->m_hseparator; gtk_widget_show ((GtkWidget*) _tmp13_); } else { HSeparator* _tmp14_; _tmp14_ = self->priv->m_hseparator; gtk_widget_hide ((GtkWidget*) _tmp14_); } } static void __lambda15_ (CandidatePanel* self, CandidateArea* w, guint i, guint b, guint s) { g_return_if_fail (w != NULL); g_signal_emit (self, candidate_panel_signals[CANDIDATE_PANEL_CANDIDATE_CLICKED_SIGNAL], 0, i, b, s); } static void ___lambda15__candidate_area_candidate_clicked (CandidateArea* _sender, guint index, guint button, guint state, gpointer self) { __lambda15_ ((CandidatePanel*) self, _sender, index, button, state); } static void __lambda16_ (CandidatePanel* self, CandidateArea* c) { g_return_if_fail (c != NULL); g_signal_emit (self, candidate_panel_signals[CANDIDATE_PANEL_PAGE_UP_SIGNAL], 0); } static void ___lambda16__candidate_area_page_up (CandidateArea* _sender, gpointer self) { __lambda16_ ((CandidatePanel*) self, _sender); } static void __lambda17_ (CandidatePanel* self, CandidateArea* c) { g_return_if_fail (c != NULL); g_signal_emit (self, candidate_panel_signals[CANDIDATE_PANEL_PAGE_DOWN_SIGNAL], 0); } static void ___lambda17__candidate_area_page_down (CandidateArea* _sender, gpointer self) { __lambda17_ ((CandidatePanel*) self, _sender); } static void __lambda18_ (CandidatePanel* self, CandidateArea* c) { g_return_if_fail (c != NULL); g_signal_emit (self, candidate_panel_signals[CANDIDATE_PANEL_CURSOR_UP_SIGNAL], 0); } static void ___lambda18__candidate_area_cursor_up (CandidateArea* _sender, gpointer self) { __lambda18_ ((CandidatePanel*) self, _sender); } static void __lambda19_ (CandidatePanel* self, CandidateArea* c) { g_return_if_fail (c != NULL); g_signal_emit (self, candidate_panel_signals[CANDIDATE_PANEL_CURSOR_DOWN_SIGNAL], 0); } static void ___lambda19__candidate_area_cursor_down (CandidateArea* _sender, gpointer self) { __lambda19_ ((CandidatePanel*) self, _sender); } static void candidate_panel_create_ui (CandidatePanel* self) { GtkLabel* _tmp0_; GtkLabel* _tmp1_; GtkLabel* _tmp2_; GtkLabel* _tmp3_; GtkLabel* _tmp4_; GtkLabel* _tmp5_; GtkLabel* _tmp6_; GtkLabel* _tmp7_; GtkLabel* _tmp8_; GtkLabel* _tmp9_; GtkLabel* _tmp10_; GtkLabel* _tmp11_; GtkLabel* _tmp12_; GtkLabel* _tmp13_; CandidateArea* _tmp14_; CandidateArea* _tmp15_; CandidateArea* _tmp16_; CandidateArea* _tmp17_; CandidateArea* _tmp18_; CandidateArea* _tmp19_; HSeparator* _tmp20_; HSeparator* _tmp21_; 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_widget_set_margin_start ((GtkWidget*) _tmp4_, 8); _tmp5_ = self->priv->m_preedit_label; gtk_widget_set_margin_end ((GtkWidget*) _tmp5_, 8); _tmp6_ = self->priv->m_preedit_label; gtk_widget_set_no_show_all ((GtkWidget*) _tmp6_, TRUE); _tmp7_ = (GtkLabel*) gtk_label_new (NULL); g_object_ref_sink (_tmp7_); _g_object_unref0 (self->priv->m_aux_label); self->priv->m_aux_label = _tmp7_; _tmp8_ = self->priv->m_aux_label; gtk_widget_set_size_request ((GtkWidget*) _tmp8_, 20, -1); _tmp9_ = self->priv->m_aux_label; gtk_widget_set_halign ((GtkWidget*) _tmp9_, GTK_ALIGN_START); _tmp10_ = self->priv->m_aux_label; gtk_widget_set_valign ((GtkWidget*) _tmp10_, GTK_ALIGN_CENTER); _tmp11_ = self->priv->m_aux_label; gtk_widget_set_margin_start ((GtkWidget*) _tmp11_, 8); _tmp12_ = self->priv->m_aux_label; gtk_widget_set_margin_end ((GtkWidget*) _tmp12_, 8); _tmp13_ = self->priv->m_aux_label; gtk_widget_set_no_show_all ((GtkWidget*) _tmp13_, TRUE); _tmp14_ = candidate_area_new (self->priv->m_vertical_panel_system); g_object_ref_sink (_tmp14_); _g_object_unref0 (self->priv->m_candidate_area); self->priv->m_candidate_area = _tmp14_; _tmp15_ = self->priv->m_candidate_area; g_signal_connect_object (_tmp15_, "candidate-clicked", (GCallback) ___lambda15__candidate_area_candidate_clicked, self, 0); _tmp16_ = self->priv->m_candidate_area; g_signal_connect_object (_tmp16_, "page-up", (GCallback) ___lambda16__candidate_area_page_up, self, 0); _tmp17_ = self->priv->m_candidate_area; g_signal_connect_object (_tmp17_, "page-down", (GCallback) ___lambda17__candidate_area_page_down, self, 0); _tmp18_ = self->priv->m_candidate_area; g_signal_connect_object (_tmp18_, "cursor-up", (GCallback) ___lambda18__candidate_area_cursor_up, self, 0); _tmp19_ = self->priv->m_candidate_area; g_signal_connect_object (_tmp19_, "cursor-down", (GCallback) ___lambda19__candidate_area_cursor_down, self, 0); _tmp20_ = hseparator_new (); g_object_ref_sink (_tmp20_); _g_object_unref0 (self->priv->m_hseparator); self->priv->m_hseparator = _tmp20_; _tmp21_ = self->priv->m_hseparator; gtk_widget_set_visible ((GtkWidget*) _tmp21_, TRUE); candidate_panel_pack_all_widgets (self); } static void candidate_panel_pack_all_widgets (CandidatePanel* self) { GtkBox* _tmp0_; GtkLabel* _tmp1_; GtkBox* _tmp2_; GtkLabel* _tmp3_; GtkBox* _tmp4_; HSeparator* _tmp5_; GtkBox* _tmp6_; CandidateArea* _tmp7_; 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_; 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_; 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_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_toplevel; gtk_window_move (_tmp0_, x, y); } static void candidate_panel_adjust_window_position (CandidatePanel* self) { g_return_if_fail (self != NULL); if (!self->priv->m_vertical_writing) { candidate_panel_adjust_window_position_horizontal (self); } else { candidate_panel_adjust_window_position_vertical (self); } } static void candidate_panel_get_monitor_geometry (CandidatePanel* self, GdkRectangle* result) { GdkRectangle monitor_area = {0}; GdkRectangle _tmp0_ = {0}; GdkMonitor* monitor = NULL; GdkDisplay* _tmp1_; GdkRectangle _tmp2_; GdkRectangle _tmp3_; GdkMonitor* _tmp4_; GdkMonitor* _tmp5_; GdkRectangle _tmp6_ = {0}; g_return_if_fail (self != NULL); _tmp0_.x = 0; monitor_area = _tmp0_; _tmp1_ = gdk_display_get_default (); _tmp2_ = self->priv->m_cursor_location; _tmp3_ = self->priv->m_cursor_location; _tmp4_ = gdk_display_get_monitor_at_point (_tmp1_, _tmp2_.x, _tmp3_.y); _tmp5_ = _g_object_ref0 (_tmp4_); monitor = _tmp5_; gdk_monitor_get_geometry (monitor, &_tmp6_); monitor_area = _tmp6_; *result = monitor_area; _g_object_unref0 (monitor); return; } static void candidate_panel_adjust_window_position_horizontal (CandidatePanel* self) { GdkPoint cursor_right_bottom = {0}; GdkRectangle _tmp0_; GdkRectangle _tmp1_; GdkRectangle _tmp2_; GdkPoint _tmp3_ = {0}; GtkAllocation allocation = {0}; GtkWindow* _tmp4_; GtkAllocation _tmp5_ = {0}; GdkPoint window_right_bottom = {0}; GdkPoint _tmp6_; GtkAllocation _tmp7_; GdkPoint _tmp8_; GtkAllocation _tmp9_; GdkPoint _tmp10_ = {0}; GdkRectangle monitor_area = {0}; GdkRectangle _tmp11_ = {0}; gint monitor_right = 0; GdkRectangle _tmp12_; GdkRectangle _tmp13_; gint monitor_bottom = 0; GdkRectangle _tmp14_; GdkRectangle _tmp15_; gint x = 0; gint y = 0; GdkPoint _tmp16_; GdkPoint _tmp19_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_cursor_location; _tmp1_ = self->priv->m_cursor_location; _tmp2_ = self->priv->m_cursor_location; _tmp3_.x = _tmp0_.x; _tmp3_.y = _tmp1_.y + _tmp2_.height; cursor_right_bottom = _tmp3_; _tmp4_ = self->priv->m_toplevel; gtk_widget_get_allocation ((GtkWidget*) _tmp4_, &_tmp5_); allocation = _tmp5_; _tmp6_ = cursor_right_bottom; _tmp7_ = allocation; _tmp8_ = cursor_right_bottom; _tmp9_ = allocation; _tmp10_.x = _tmp6_.x + _tmp7_.width; _tmp10_.y = _tmp8_.y + _tmp9_.height; window_right_bottom = _tmp10_; candidate_panel_get_monitor_geometry (self, &_tmp11_); monitor_area = _tmp11_; _tmp12_ = monitor_area; _tmp13_ = monitor_area; monitor_right = _tmp12_.x + _tmp13_.width; _tmp14_ = monitor_area; _tmp15_ = monitor_area; monitor_bottom = _tmp14_.y + _tmp15_.height; _tmp16_ = window_right_bottom; if (_tmp16_.x > monitor_right) { GtkAllocation _tmp17_; _tmp17_ = allocation; x = monitor_right - _tmp17_.width; } else { GdkPoint _tmp18_; _tmp18_ = cursor_right_bottom; x = _tmp18_.x; } if (x < 0) { x = 0; } _tmp19_ = window_right_bottom; if (_tmp19_.y > monitor_bottom) { GdkRectangle _tmp20_; GtkAllocation _tmp21_; _tmp20_ = self->priv->m_cursor_location; _tmp21_ = allocation; y = _tmp20_.y - _tmp21_.height; } else { GdkPoint _tmp22_; _tmp22_ = cursor_right_bottom; y = _tmp22_.y; } if (y < 0) { y = 0; } candidate_panel_move (self, x, y); } static void candidate_panel_adjust_window_position_vertical (CandidatePanel* self) { gint char_size = 0; GdkRectangle _tmp0_; GdkRectangle _tmp1_; GdkPoint cursor_right_bottom = {0}; GdkRectangle _tmp2_; GdkRectangle _tmp3_; GdkPoint _tmp4_ = {0}; GtkAllocation allocation = {0}; GtkWindow* _tmp5_; GtkAllocation _tmp6_ = {0}; GdkPoint hwindow_right_bottom = {0}; GdkRectangle _tmp7_; GtkAllocation _tmp8_; GdkPoint _tmp9_; GtkAllocation _tmp10_; GdkPoint _tmp11_ = {0}; GdkPoint vwindow_left_bottom = {0}; GdkRectangle _tmp12_; GtkAllocation _tmp13_; GdkRectangle _tmp14_; GtkAllocation _tmp15_; GdkPoint _tmp16_ = {0}; GdkRectangle monitor_area = {0}; GdkRectangle _tmp17_ = {0}; gint monitor_right = 0; GdkRectangle _tmp18_; GdkRectangle _tmp19_; gint monitor_bottom = 0; GdkRectangle _tmp20_; GdkRectangle _tmp21_; gint x = 0; gint y = 0; CandidateArea* _tmp22_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_cursor_location; _tmp1_ = self->priv->m_cursor_location; char_size = MAX (_tmp0_.width, _tmp1_.height); _tmp2_ = self->priv->m_cursor_location; _tmp3_ = self->priv->m_cursor_location; _tmp4_.x = _tmp2_.x + char_size; _tmp4_.y = _tmp3_.y + char_size; cursor_right_bottom = _tmp4_; _tmp5_ = self->priv->m_toplevel; gtk_widget_get_allocation ((GtkWidget*) _tmp5_, &_tmp6_); allocation = _tmp6_; _tmp7_ = self->priv->m_cursor_location; _tmp8_ = allocation; _tmp9_ = cursor_right_bottom; _tmp10_ = allocation; _tmp11_.x = _tmp7_.x + _tmp8_.width; _tmp11_.y = _tmp9_.y + _tmp10_.height; hwindow_right_bottom = _tmp11_; _tmp12_ = self->priv->m_cursor_location; _tmp13_ = allocation; _tmp14_ = self->priv->m_cursor_location; _tmp15_ = allocation; _tmp16_.x = _tmp12_.x - _tmp13_.width; _tmp16_.y = _tmp14_.y + _tmp15_.height; vwindow_left_bottom = _tmp16_; candidate_panel_get_monitor_geometry (self, &_tmp17_); monitor_area = _tmp17_; _tmp18_ = monitor_area; _tmp19_ = monitor_area; monitor_right = _tmp18_.x + _tmp19_.width; _tmp20_ = monitor_area; _tmp21_ = monitor_area; monitor_bottom = _tmp20_.y + _tmp21_.height; _tmp22_ = self->priv->m_candidate_area; if (!candidate_area_get_vertical (_tmp22_)) { GdkPoint _tmp23_; GdkPoint _tmp26_; _tmp23_ = hwindow_right_bottom; if (_tmp23_.x > monitor_right) { GtkAllocation _tmp24_; _tmp24_ = allocation; x = monitor_right - _tmp24_.width; } else { GdkRectangle _tmp25_; _tmp25_ = self->priv->m_cursor_location; x = _tmp25_.x; } _tmp26_ = hwindow_right_bottom; if (_tmp26_.y > monitor_bottom) { GdkRectangle _tmp27_; GtkAllocation _tmp28_; _tmp27_ = self->priv->m_cursor_location; _tmp28_ = allocation; y = _tmp27_.y - _tmp28_.height; } else { GdkPoint _tmp29_; _tmp29_ = cursor_right_bottom; y = _tmp29_.y; } } else { GdkPoint _tmp30_; GdkPoint _tmp35_; _tmp30_ = vwindow_left_bottom; if (_tmp30_.x > monitor_right) { GtkAllocation _tmp31_; _tmp31_ = allocation; x = monitor_right - _tmp31_.width; } else { GdkPoint _tmp32_; _tmp32_ = vwindow_left_bottom; if (_tmp32_.x < 0) { GdkPoint _tmp33_; _tmp33_ = cursor_right_bottom; x = _tmp33_.x; } else { GdkPoint _tmp34_; _tmp34_ = vwindow_left_bottom; x = _tmp34_.x; } } _tmp35_ = vwindow_left_bottom; if (_tmp35_.y > monitor_bottom) { GtkAllocation _tmp36_; _tmp36_ = allocation; y = monitor_bottom - _tmp36_.height; } else { GdkRectangle _tmp37_; _tmp37_ = self->priv->m_cursor_location; y = _tmp37_.y; } } if (x < 0) { x = 0; } if (y < 0) { y = 0; } candidate_panel_move (self, x, y); } 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, gpointer klass_data) { candidate_panel_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &CandidatePanel_private_offset); G_OBJECT_CLASS (klass)->finalize = candidate_panel_finalize; candidate_panel_signals[CANDIDATE_PANEL_CURSOR_UP_SIGNAL] = g_signal_new ("cursor-up", TYPE_CANDIDATE_PANEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); candidate_panel_signals[CANDIDATE_PANEL_CURSOR_DOWN_SIGNAL] = g_signal_new ("cursor-down", TYPE_CANDIDATE_PANEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); candidate_panel_signals[CANDIDATE_PANEL_PAGE_UP_SIGNAL] = g_signal_new ("page-up", TYPE_CANDIDATE_PANEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); candidate_panel_signals[CANDIDATE_PANEL_PAGE_DOWN_SIGNAL] = g_signal_new ("page-down", TYPE_CANDIDATE_PANEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); candidate_panel_signals[CANDIDATE_PANEL_CANDIDATE_CLICKED_SIGNAL] = 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, gpointer klass) { self->priv = candidate_panel_get_instance_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); } static GType candidate_panel_get_type_once (void) { 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); CandidatePanel_private_offset = g_type_add_instance_private (candidate_panel_type_id, sizeof (CandidatePanelPrivate)); return candidate_panel_type_id; } 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)) { GType candidate_panel_type_id; candidate_panel_type_id = candidate_panel_get_type_once (); 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)) { gint 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.22/ui/gtk3/propertypanel.c0000644000000000000000000030257213623751707014013 00000000000000/* propertypanel.c generated by valac 0.47.91, the Vala compiler * generated from propertypanel.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2013-2016 Red Hat, Inc. * Copyright(c) 2013-2015 Peng Huang * Copyright(c) 2013-2017 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 typedef enum { PANEL_SHOW_DO_NOT_SHOW, PANEL_SHOW_AUTO_HIDE, PANEL_SHOW_ALWAYS } PanelShow; #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; enum { PROPERTY_PANEL_0_PROPERTY, PROPERTY_PANEL_NUM_PROPERTIES }; static GParamSpec* property_panel_properties[PROPERTY_PANEL_NUM_PROPERTIES]; #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_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_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_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)) enum { PROPERTY_PANEL_PROPERTY_ACTIVATE_SIGNAL, PROPERTY_PANEL_NUM_SIGNALS }; static guint property_panel_signals[PROPERTY_PANEL_NUM_SIGNALS] = {0}; enum { IPROP_TOOL_ITEM_PROPERTY_ACTIVATE_SIGNAL, IPROP_TOOL_ITEM_NUM_SIGNALS }; static guint iprop_tool_item_signals[IPROP_TOOL_ITEM_NUM_SIGNALS] = {0}; #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; enum { PROP_MENU_0_PROPERTY, PROP_MENU_NUM_PROPERTIES }; static GParamSpec* prop_menu_properties[PROP_MENU_NUM_PROPERTIES]; #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; enum { PROP_TOOL_BUTTON_0_PROPERTY, PROP_TOOL_BUTTON_NUM_PROPERTIES }; static GParamSpec* prop_tool_button_properties[PROP_TOOL_BUTTON_NUM_PROPERTIES]; #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; enum { PROP_TOGGLE_TOOL_BUTTON_0_PROPERTY, PROP_TOGGLE_TOOL_BUTTON_NUM_PROPERTIES }; static GParamSpec* prop_toggle_tool_button_properties[PROP_TOGGLE_TOOL_BUTTON_NUM_PROPERTIES]; typedef struct _PropMenuToolButtonPrivate PropMenuToolButtonPrivate; enum { PROP_MENU_TOOL_BUTTON_0_PROPERTY, PROP_MENU_TOOL_BUTTON_NUM_PROPERTIES }; static GParamSpec* prop_menu_tool_button_properties[PROP_MENU_TOOL_BUTTON_NUM_PROPERTIES]; typedef struct _PropSeparatorToolItemPrivate PropSeparatorToolItemPrivate; enum { PROP_SEPARATOR_TOOL_ITEM_0_PROPERTY, PROP_SEPARATOR_TOOL_ITEM_NUM_PROPERTIES }; static GParamSpec* prop_separator_tool_item_properties[PROP_SEPARATOR_TOOL_ITEM_NUM_PROPERTIES]; #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 _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; guint m_remove_filter_id; }; 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 gint PropertyPanel_private_offset; static gpointer property_panel_parent_class = NULL; static gint PropMenu_private_offset; static gpointer prop_menu_parent_class = NULL; static IPropToolItemIface * prop_menu_iprop_tool_item_parent_iface = NULL; static gint PropToolButton_private_offset; static gpointer prop_tool_button_parent_class = NULL; static IPropToolItemIface * prop_tool_button_iprop_tool_item_parent_iface = NULL; static gint PropToggleToolButton_private_offset; static gpointer prop_toggle_tool_button_parent_class = NULL; static IPropToolItemIface * prop_toggle_tool_button_iprop_tool_item_parent_iface = NULL; static gint PropMenuToolButton_private_offset; 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropertyPanel, g_object_unref) GType iprop_tool_item_get_type (void) G_GNUC_CONST; #define PROPERTY_PANEL_MONITOR_NET_WORKAREA_TIMEOUT ((guint) 300000) PropertyPanel* property_panel_new (void); PropertyPanel* property_panel_construct (GType object_type); GType handle_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Handle, g_object_unref) Handle* handle_new (void); Handle* handle_construct (GType object_type); static void __lambda25_ (PropertyPanel* self, GtkWidget* w, GtkAllocation* a); static void property_panel_set_default_location (PropertyPanel* self); static void ___lambda25__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); GType prop_toggle_tool_button_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropToggleToolButton, g_object_unref) GType prop_menu_tool_button_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropMenuToolButton, g_object_unref) 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); 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropToolButton, g_object_unref) PropToggleToolButton* prop_toggle_tool_button_new (IBusProperty* prop); PropToggleToolButton* prop_toggle_tool_button_construct (GType object_type, IBusProperty* prop); PropMenuToolButton* prop_menu_tool_button_new (IBusProperty* prop); PropMenuToolButton* prop_menu_tool_button_construct (GType object_type, IBusProperty* prop); 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropSeparatorToolItem, g_object_unref) static void _vala_array_add23 (IPropToolItem** * array, gint* length, gint* size, IPropToolItem* value); static void ____lambda30_ (PropertyPanel* self, IPropToolItem* w, const gchar* k, gint s); static void _____lambda30__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 __lambda26_ (PropertyPanel* self); static gboolean ___lambda26__gsource_func (gpointer self); static gboolean __lambda31_ (PropertyPanel* self); static gboolean ___lambda31__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); static GType property_panel_get_type_once (void); static GType iprop_tool_item_get_type_once (void); GType prop_menu_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropMenu, g_object_unref) GType iprop_item_get_type (void) G_GNUC_CONST; 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_real_destroy (GtkWidget* base); GType prop_radio_menu_item_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropRadioMenuItem, g_object_unref) 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropImageMenuItem, g_object_unref) 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropCheckMenuItem, g_object_unref) 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropSeparatorMenuItem, g_object_unref) static void ____lambda27_ (PropMenu* self, IPropItem* w, const gchar* k, gint s); static void _____lambda27__iprop_item_property_activate (IPropItem* _sender, const gchar* key, gint state, gpointer self); static void _vala_array_add24 (IPropItem** * array, gint* length, gint* size, IPropItem* value); static void prop_menu_finalize (GObject * obj); static GType prop_menu_get_type_once (void); 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IconWidget, g_object_unref) 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); static GType prop_tool_button_get_type_once (void); 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); static GType prop_toggle_tool_button_get_type_once (void); static void __lambda28_ (PropMenuToolButton* self, GtkMenuShell* m); static void ___lambda28__gtk_menu_shell_deactivate (GtkMenuShell* _sender, gpointer self); static void __lambda29_ (PropMenuToolButton* self, const gchar* k, gint s); static void ___lambda29__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); static GType prop_menu_tool_button_get_type_once (void); static void prop_separator_tool_item_real_update_property (IPropToolItem* base, IBusProperty* prop); static GType prop_separator_tool_item_get_type_once (void); 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 GType panel_show_get_type_once (void) { 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); return panel_show_type_id; } 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)) { GType panel_show_type_id; panel_show_type_id = panel_show_get_type_once (); g_once_init_leave (&panel_show_type_id__volatile, panel_show_type_id); } return panel_show_type_id__volatile; } static inline gpointer property_panel_get_instance_private (PropertyPanel* self) { return G_STRUCT_MEMBER_P (self, PropertyPanel_private_offset); } static void __lambda25_ (PropertyPanel* self, GtkWidget* w, GtkAllocation* a) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; g_return_if_fail (w != NULL); g_return_if_fail (a != NULL); if (!self->priv->m_follow_input_cursor_when_always_shown) { _tmp3_ = self->priv->m_show == ((gint) PANEL_SHOW_ALWAYS); } else { _tmp3_ = FALSE; } if (_tmp3_) { IPropToolItem** _tmp4_; gint _tmp4__length1; _tmp4_ = self->priv->m_items; _tmp4__length1 = self->priv->m_items_length1; _tmp2_ = _tmp4__length1 > 0; } else { _tmp2_ = FALSE; } if (_tmp2_) { GdkRectangle _tmp5_; _tmp5_ = self->priv->m_cursor_location; _tmp1_ = _tmp5_.x == -1; } else { _tmp1_ = FALSE; } if (_tmp1_) { GdkRectangle _tmp6_; _tmp6_ = self->priv->m_cursor_location; _tmp0_ = _tmp6_.y == -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 ___lambda25__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self) { __lambda25_ ((PropertyPanel*) self, _sender, allocation); } PropertyPanel* property_panel_construct (GType object_type) { PropertyPanel * self = NULL; GdkWindow* _tmp0_; GdkDisplay* display = NULL; GdkWindow* _tmp1_; GdkDisplay* _tmp2_; Display* _tmp3_; GtkWindow* _tmp4_; GtkWindow* _tmp5_; Handle* handle = NULL; Handle* _tmp6_; GtkWindow* _tmp7_; GtkWindow* _tmp8_; 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) ___lambda25__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) { gboolean has_active = FALSE; IPropToolItem** _tmp0_; gint _tmp0__length1; IPropToolItem** _tmp5_; gint _tmp5__length1; IPropToolItem** _tmp8_; IBusPropList* _tmp9_; g_return_if_fail (self != NULL); g_return_if_fail (props != NULL); g_debug ("propertypanel.vala:87: set_properties()\n"); has_active = FALSE; _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 < item_collection_length1; item_it = item_it + 1) { IPropToolItem* _tmp1_; IPropToolItem* item = NULL; _tmp1_ = _g_object_ref0 (item_collection[item_it]); item = _tmp1_; { GType type = 0UL; IPropToolItem* _tmp2_; gboolean _tmp3_ = FALSE; _tmp2_ = item; type = G_TYPE_FROM_INSTANCE ((GObject*) _tmp2_); if (type == TYPE_PROP_MENU_TOOL_BUTTON) { _tmp3_ = TRUE; } else { _tmp3_ = type == TYPE_PROP_TOGGLE_TOOL_BUTTON; } if (_tmp3_) { IPropToolItem* _tmp4_; _tmp4_ = item; if (gtk_toggle_tool_button_get_active (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, gtk_toggle_tool_button_get_type ()) ? ((GtkToggleToolButton*) _tmp4_) : NULL)) { has_active = TRUE; _g_object_unref0 (item); break; } } _g_object_unref0 (item); } } } if (has_active) { return; } _tmp5_ = self->priv->m_items; _tmp5__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 = _tmp5_; item_collection_length1 = _tmp5__length1; for (item_it = 0; item_it < item_collection_length1; item_it = item_it + 1) { IPropToolItem* _tmp6_; IPropToolItem* item = NULL; _tmp6_ = _g_object_ref0 (item_collection[item_it]); item = _tmp6_; { IPropToolItem* _tmp7_; _tmp7_ = item; gtk_container_remove ((GtkContainer*) self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, gtk_widget_get_type ()) ? ((GtkWidget*) _tmp7_) : NULL); _g_object_unref0 (item); } } } _tmp8_ = 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 = _tmp8_; self->priv->m_items_length1 = 0; self->priv->_m_items_size_ = self->priv->m_items_length1; _tmp9_ = _g_object_ref0 (props); _g_object_unref0 (self->priv->m_props); self->priv->m_props = _tmp9_; property_panel_create_menu_items (self); property_panel_show_with_auto_hide_timer (self); } void property_panel_update_property (PropertyPanel* self, IBusProperty* prop) { const gchar* _tmp0_; IBusPropList* _tmp1_; IPropToolItem** _tmp3_; gint _tmp3__length1; g_return_if_fail (self != NULL); g_return_if_fail (prop != NULL); _vala_assert (prop != NULL, "prop != null"); _tmp0_ = ibus_property_get_key (prop); g_debug ("propertypanel.vala:125: update_property(prop.key = %s)\n", _tmp0_); _tmp1_ = self->priv->m_props; if (_tmp1_ != NULL) { IBusPropList* _tmp2_; _tmp2_ = self->priv->m_props; ibus_prop_list_update_property (_tmp2_, prop); } _tmp3_ = self->priv->m_items; _tmp3__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 = _tmp3_; item_collection_length1 = _tmp3__length1; for (item_it = 0; item_it < item_collection_length1; item_it = item_it + 1) { IPropToolItem* _tmp4_; IPropToolItem* item = NULL; _tmp4_ = _g_object_ref0 (item_collection[item_it]); item = _tmp4_; { IPropToolItem* _tmp5_; _tmp5_ = item; iprop_tool_item_update_property (_tmp5_, prop); _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; GdkRectangle location = {0}; GdkRectangle _tmp1_ = {0}; GdkRectangle _tmp2_; GdkRectangle _tmp3_; GdkRectangle _tmp8_; g_return_if_fail (self != NULL); if (!self->priv->m_follow_input_cursor_when_always_shown) { _tmp0_ = self->priv->m_show == ((gint) PANEL_SHOW_ALWAYS); } else { _tmp0_ = FALSE; } if (_tmp0_) { return; } memset (&_tmp1_, 0, sizeof (GdkRectangle)); _tmp1_.x = x; _tmp1_.y = y; _tmp1_.width = width; _tmp1_.height = height; location = _tmp1_; _tmp2_ = self->priv->m_cursor_location; _tmp3_ = location; if (_cairo_rectangle_int_equal (&_tmp2_, &_tmp3_) == TRUE) { return; } g_debug ("propertypanel.vala:166: set_cursor_location(x = %d, y = %d, width = %d" \ ", height = %d)\n", x, y, width, height); if (self->priv->m_show == ((gint) PANEL_SHOW_AUTO_HIDE)) { gboolean _tmp4_ = FALSE; GdkRectangle _tmp5_; _tmp5_ = self->priv->m_cursor_location; if (_tmp5_.x != -1) { _tmp4_ = TRUE; } else { GdkRectangle _tmp6_; _tmp6_ = self->priv->m_cursor_location; _tmp4_ = _tmp6_.y != -1; } if (_tmp4_) { GdkRectangle _tmp7_; _tmp7_ = location; self->priv->m_cursor_location = _tmp7_; property_panel_hide_if_necessary (self); property_panel_adjust_window_position (self); return; } } _tmp8_ = location; self->priv->m_cursor_location = _tmp8_; 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; g_return_if_fail (self != NULL); if (text == NULL) { _tmp0_ = cursor == ((guint) 0); } else { _tmp0_ = FALSE; } if (_tmp0_) { return; } g_debug ("propertypanel.vala:190: set_preedit_text(text, cursor = %u)\n", cursor); property_panel_hide_if_necessary (self); } void property_panel_set_auxiliary_text (PropertyPanel* self, IBusText* text) { g_return_if_fail (self != NULL); if (text == NULL) { return; } g_debug ("propertypanel.vala:202: set_auxiliary_text(text)\n"); property_panel_hide_if_necessary (self); } void property_panel_set_lookup_table (PropertyPanel* self, IBusLookupTable* table) { g_return_if_fail (self != NULL); if (table == NULL) { return; } g_debug ("propertypanel.vala:211: set_lookup_table(table)\n"); property_panel_hide_if_necessary (self); } void property_panel_show (PropertyPanel* self) { g_return_if_fail (self != NULL); if (self->priv->m_show == ((gint) PANEL_SHOW_DO_NOT_SHOW)) { GtkWindow* _tmp0_; _tmp0_ = self->priv->m_toplevel; gtk_widget_hide ((GtkWidget*) _tmp0_); return; } else { if (self->priv->m_show == ((gint) PANEL_SHOW_ALWAYS)) { GtkWindow* _tmp1_; _tmp1_ = self->priv->m_toplevel; gtk_widget_show_all ((GtkWidget*) _tmp1_); return; } } } void property_panel_hide (PropertyPanel* self) { GtkWindow* _tmp0_; 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; g_return_if_fail (self != NULL); g_debug ("propertypanel.vala:236: focus_in()\n"); property_panel_hide_if_necessary (self); if (self->priv->m_follow_input_cursor_when_always_shown) { _tmp0_ = TRUE; } else { _tmp0_ = self->priv->m_show != ((gint) PANEL_SHOW_ALWAYS); } if (_tmp0_) { GdkRectangle _tmp1_ = {0}; _tmp1_.x = -1; _tmp1_.y = -1; _tmp1_.width = 0; _tmp1_.height = 0; self->priv->m_cursor_location = _tmp1_; } } void property_panel_set_show (PropertyPanel* self, gint _show) { g_return_if_fail (self != NULL); self->priv->m_show = _show; property_panel_show (self); } void property_panel_set_auto_hide_timeout (PropertyPanel* self, guint timeout) { g_return_if_fail (self != NULL); self->priv->m_auto_hide_timeout = timeout; } void property_panel_set_follow_input_cursor_when_always_shown (PropertyPanel* self, gboolean is_follow) { g_return_if_fail (self != NULL); self->priv->m_follow_input_cursor_when_always_shown = is_follow; } static void _vala_array_add23 (IPropToolItem** * array, gint* length, gint* 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 ____lambda30_ (PropertyPanel* self, IPropToolItem* w, const gchar* k, gint s) { g_return_if_fail (w != NULL); g_return_if_fail (k != NULL); g_signal_emit (self, property_panel_signals[PROPERTY_PANEL_PROPERTY_ACTIVATE_SIGNAL], 0, k, s); } static void _____lambda30__iprop_tool_item_property_activate (IPropToolItem* _sender, const gchar* key, gint state, gpointer self) { ____lambda30_ ((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_; IBusProperty* _tmp1_; IBusProperty* _tmp2_; IBusProperty* _tmp3_; gint _tmp4_; IPropToolItem* item = NULL; IBusProperty* _tmp5_; IPropToolItem* _tmp15_; _tmp0_ = self->priv->m_props; _tmp1_ = ibus_prop_list_get (_tmp0_, (guint) i); _tmp2_ = _g_object_ref0 (_tmp1_); prop = _tmp2_; _tmp3_ = prop; if (_tmp3_ == NULL) { _g_object_unref0 (prop); break; } _tmp4_ = i; i = _tmp4_ + 1; item = NULL; _tmp5_ = prop; switch (ibus_property_get_prop_type (_tmp5_)) { case PROP_TYPE_NORMAL: { IBusProperty* _tmp6_; PropToolButton* _tmp7_; _tmp6_ = prop; _tmp7_ = prop_tool_button_new (_tmp6_); g_object_ref_sink (_tmp7_); _g_object_unref0 (item); item = (IPropToolItem*) _tmp7_; break; } case PROP_TYPE_TOGGLE: { IBusProperty* _tmp8_; PropToggleToolButton* _tmp9_; _tmp8_ = prop; _tmp9_ = prop_toggle_tool_button_new (_tmp8_); g_object_ref_sink (_tmp9_); _g_object_unref0 (item); item = (IPropToolItem*) _tmp9_; break; } case PROP_TYPE_MENU: { IBusProperty* _tmp10_; PropMenuToolButton* _tmp11_; _tmp10_ = prop; _tmp11_ = prop_menu_tool_button_new (_tmp10_); g_object_ref_sink (_tmp11_); _g_object_unref0 (item); item = (IPropToolItem*) _tmp11_; break; } case PROP_TYPE_SEPARATOR: { IBusProperty* _tmp12_; PropSeparatorToolItem* _tmp13_; _tmp12_ = prop; _tmp13_ = prop_separator_tool_item_new (_tmp12_); g_object_ref_sink (_tmp13_); _g_object_unref0 (item); item = (IPropToolItem*) _tmp13_; break; } default: { IBusProperty* _tmp14_; _tmp14_ = prop; g_warning ("propertypanel.vala:289: unknown property type %d", (gint) ibus_property_get_prop_type (_tmp14_)); break; } } _tmp15_ = item; if (_tmp15_ != NULL) { IPropToolItem* _tmp16_; IPropToolItem** _tmp17_; gint _tmp17__length1; IPropToolItem* _tmp18_; IPropToolItem* _tmp19_; IPropToolItem* _tmp20_; _tmp16_ = item; gtk_box_pack_start ((GtkBox*) self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, gtk_widget_get_type ()) ? ((GtkWidget*) _tmp16_) : NULL, FALSE, FALSE, (guint) 0); _tmp17_ = self->priv->m_items; _tmp17__length1 = self->priv->m_items_length1; _tmp18_ = item; _tmp19_ = _g_object_ref0 (_tmp18_); _vala_array_add23 (&self->priv->m_items, &self->priv->m_items_length1, &self->priv->_m_items_size_, _tmp19_); _tmp20_ = item; g_signal_connect_object (_tmp20_, "property-activate", (GCallback) _____lambda30__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_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_toplevel; gtk_window_move (_tmp0_, x, y); } static void property_panel_adjust_window_position (PropertyPanel* self) { GdkPoint cursor_right_bottom = {0}; GdkRectangle _tmp0_; GdkRectangle _tmp1_; GdkRectangle _tmp2_; GdkRectangle _tmp3_; GdkPoint _tmp4_ = {0}; GtkAllocation allocation = {0}; GtkWindow* _tmp5_; GtkAllocation _tmp6_ = {0}; GdkPoint window_right_bottom = {0}; GdkPoint _tmp7_; GtkAllocation _tmp8_; GdkPoint _tmp9_; GtkAllocation _tmp10_; GdkPoint _tmp11_ = {0}; gint root_width = 0; GdkWindow* _tmp12_; gint root_height = 0; GdkWindow* _tmp13_; gint x = 0; gint y = 0; GdkPoint _tmp14_; GdkPoint _tmp17_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_cursor_location; _tmp1_ = self->priv->m_cursor_location; _tmp2_ = self->priv->m_cursor_location; _tmp3_ = self->priv->m_cursor_location; _tmp4_.x = _tmp0_.x + _tmp1_.width; _tmp4_.y = _tmp2_.y + _tmp3_.height; cursor_right_bottom = _tmp4_; _tmp5_ = self->priv->m_toplevel; gtk_widget_get_allocation ((GtkWidget*) _tmp5_, &_tmp6_); allocation = _tmp6_; _tmp7_ = cursor_right_bottom; _tmp8_ = allocation; _tmp9_ = cursor_right_bottom; _tmp10_ = allocation; _tmp11_.x = _tmp7_.x + _tmp8_.width; _tmp11_.y = _tmp9_.y + _tmp10_.height; window_right_bottom = _tmp11_; _tmp12_ = self->priv->m_root_window; root_width = gdk_window_get_width (_tmp12_); _tmp13_ = self->priv->m_root_window; root_height = gdk_window_get_height (_tmp13_); _tmp14_ = window_right_bottom; if (_tmp14_.x > root_width) { GtkAllocation _tmp15_; _tmp15_ = allocation; x = root_width - _tmp15_.width; } else { GdkPoint _tmp16_; _tmp16_ = cursor_right_bottom; x = _tmp16_.x; } _tmp17_ = window_right_bottom; if (_tmp17_.y > root_height) { GdkRectangle _tmp18_; GtkAllocation _tmp19_; _tmp18_ = self->priv->m_cursor_location; _tmp19_ = allocation; y = _tmp18_.y - _tmp19_.height; } else { GdkPoint _tmp20_; _tmp20_ = cursor_right_bottom; y = _tmp20_.y; } property_panel_move (self, x, y); } static gboolean property_panel_is_bottom_panel (PropertyPanel* self) { gchar* desktop = NULL; const gchar* _tmp0_; gchar* _tmp1_; const gchar* _tmp2_; const gchar* _tmp5_; const gchar* _tmp6_; GQuark _tmp8_ = 0U; static GQuark _tmp7_label0 = 0; static GQuark _tmp7_label1 = 0; gboolean result = FALSE; 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_; gchar* _tmp4_; _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_; GtkAllocation _tmp1_ = {0}; GdkRectangle monitor_area = {0}; GdkMonitor* monitor = NULL; GdkDisplay* _tmp2_; GdkMonitor* _tmp3_; GdkMonitor* _tmp4_; GdkMonitor* _tmp5_; GdkRectangle _tmp6_ = {0}; gint monitor_right = 0; GdkRectangle _tmp7_; GdkRectangle _tmp8_; gint monitor_bottom = 0; GdkRectangle _tmp9_; GdkRectangle _tmp10_; gint x = 0; gint y = 0; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_toplevel; gtk_widget_get_allocation ((GtkWidget*) _tmp0_, &_tmp1_); allocation = _tmp1_; _tmp2_ = gdk_display_get_default (); _tmp3_ = gdk_display_get_monitor (_tmp2_, 0); _tmp4_ = _g_object_ref0 (_tmp3_); monitor = _tmp4_; _tmp5_ = monitor; gdk_monitor_get_workarea (_tmp5_, &_tmp6_); monitor_area = _tmp6_; _tmp7_ = monitor_area; _tmp8_ = monitor_area; monitor_right = _tmp7_.x + _tmp8_.width; _tmp9_ = monitor_area; _tmp10_ = monitor_area; monitor_bottom = _tmp9_.y + _tmp10_.height; if (property_panel_is_bottom_panel (self)) { if (g_strcmp0 (_ ("default:LTR"), "default:RTL") != 0) { GtkAllocation _tmp11_; GtkAllocation _tmp12_; _tmp11_ = allocation; x = monitor_right - _tmp11_.width; _tmp12_ = allocation; y = monitor_bottom - _tmp12_.height; } else { GdkRectangle _tmp13_; GtkAllocation _tmp14_; _tmp13_ = monitor_area; x = _tmp13_.x; _tmp14_ = allocation; y = monitor_bottom - _tmp14_.height; } } else { if (g_strcmp0 (_ ("default:LTR"), "default:RTL") != 0) { GtkAllocation _tmp15_; GdkRectangle _tmp16_; _tmp15_ = allocation; x = monitor_right - _tmp15_.width; _tmp16_ = monitor_area; y = _tmp16_.y; } else { GdkRectangle _tmp17_; GdkRectangle _tmp18_; _tmp17_ = monitor_area; x = _tmp17_.x; _tmp18_ = monitor_area; y = _tmp18_.y; } } property_panel_move (self, x, y); _g_object_unref0 (monitor); } 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 GdkFilterReturn property_panel_root_window_filter (PropertyPanel* self, GdkXEvent* gdkxevent, GdkEvent* event) { XEvent* xevent = NULL; XEvent* _tmp0_; GdkFilterReturn result = 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); xevent = (XEvent*) gdkxevent; _tmp0_ = xevent; if ((*_tmp0_).type == ((gint) PropertyNotify)) { gchar* aname = NULL; Display* _tmp1_; XEvent* _tmp2_; XPropertyEvent _tmp3_; gchar* _tmp4_; gboolean _tmp5_ = FALSE; const gchar* _tmp6_; _tmp1_ = self->priv->m_xdisplay; _tmp2_ = xevent; _tmp3_ = (*_tmp2_).xproperty; _tmp4_ = XGetAtomName (_tmp1_, _tmp3_.atom); aname = _tmp4_; _tmp6_ = aname; if (g_strcmp0 (_tmp6_, "_NET_WORKAREA") == 0) { XEvent* _tmp7_; XPropertyEvent _tmp8_; _tmp7_ = xevent; _tmp8_ = (*_tmp7_).xproperty; _tmp5_ = _tmp8_.state == 0; } else { _tmp5_ = FALSE; } if (_tmp5_) { GdkWindow* _tmp9_; property_panel_set_default_location (self); _tmp9_ = self->priv->m_root_window; gdk_window_remove_filter (_tmp9_, _property_panel_root_window_filter_gdk_filter_func, self); if (self->priv->m_remove_filter_id > ((guint) 0)) { g_source_remove (self->priv->m_remove_filter_id); self->priv->m_remove_filter_id = (guint) 0; } result = GDK_FILTER_CONTINUE; _g_free0 (aname); return result; } _g_free0 (aname); } result = GDK_FILTER_CONTINUE; return result; } static gboolean __lambda26_ (PropertyPanel* self) { GdkWindow* _tmp0_; gboolean result = FALSE; self->priv->m_remove_filter_id = (guint) 0; _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 ___lambda26__gsource_func (gpointer self) { gboolean result; result = __lambda26_ ((PropertyPanel*) self); return result; } static void property_panel_monitor_net_workarea_atom (PropertyPanel* self) { GdkEventMask events = 0U; GdkWindow* _tmp0_; GdkEventMask _tmp1_; GdkWindow* _tmp4_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_root_window; events = gdk_window_get_events (_tmp0_); _tmp1_ = events; if ((_tmp1_ & GDK_PROPERTY_CHANGE_MASK) == 0) { GdkWindow* _tmp2_; GdkEventMask _tmp3_; _tmp2_ = self->priv->m_root_window; _tmp3_ = events; gdk_window_set_events (_tmp2_, _tmp3_ | GDK_PROPERTY_CHANGE_MASK); } _tmp4_ = self->priv->m_root_window; gdk_window_add_filter (_tmp4_, _property_panel_root_window_filter_gdk_filter_func, self); self->priv->m_remove_filter_id = g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, PROPERTY_PANEL_MONITOR_NET_WORKAREA_TIMEOUT, ___lambda26__gsource_func, g_object_ref (self), g_object_unref); } static gboolean __lambda31_ (PropertyPanel* self) { GtkWindow* _tmp0_; gboolean result = FALSE; _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 ___lambda31__gsource_func (gpointer self) { gboolean result; result = __lambda31_ ((PropertyPanel*) self); return result; } static void property_panel_show_with_auto_hide_timer (PropertyPanel* self) { GtkWindow* _tmp0_; IPropToolItem** _tmp1_; gint _tmp1__length1; gboolean _tmp4_ = FALSE; GdkRectangle _tmp5_; GtkWindow* _tmp7_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_toplevel; gtk_window_resize (_tmp0_, 1, 1); _tmp1_ = self->priv->m_items; _tmp1__length1 = self->priv->m_items_length1; if (_tmp1__length1 == 0) { gboolean _tmp2_ = FALSE; if (self->priv->m_follow_input_cursor_when_always_shown) { _tmp2_ = TRUE; } else { _tmp2_ = self->priv->m_show != ((gint) PANEL_SHOW_ALWAYS); } if (_tmp2_) { GtkWindow* _tmp3_; _tmp3_ = self->priv->m_toplevel; gtk_widget_hide ((GtkWidget*) _tmp3_); } return; } if (self->priv->m_show != ((gint) PANEL_SHOW_AUTO_HIDE)) { property_panel_show (self); return; } _tmp5_ = self->priv->m_cursor_location; if (_tmp5_.x == -1) { GdkRectangle _tmp6_; _tmp6_ = self->priv->m_cursor_location; _tmp4_ = _tmp6_.y == -1; } else { _tmp4_ = FALSE; } if (_tmp4_) { return; } if (self->priv->m_auto_hide_timeout_id != ((guint) 0)) { g_source_remove (self->priv->m_auto_hide_timeout_id); } _tmp7_ = self->priv->m_toplevel; gtk_widget_show_all ((GtkWidget*) _tmp7_); self->priv->m_auto_hide_timeout_id = g_timeout_add_full (G_PRIORITY_DEFAULT_IDLE, self->priv->m_auto_hide_timeout, ___lambda31__gsource_func, g_object_ref (self), g_object_unref); } static void property_panel_hide_if_necessary (PropertyPanel* self) { gboolean _tmp0_ = FALSE; g_return_if_fail (self != NULL); if (self->priv->m_show == ((gint) PANEL_SHOW_AUTO_HIDE)) { _tmp0_ = self->priv->m_auto_hide_timeout_id != ((guint) 0); } else { _tmp0_ = FALSE; } if (_tmp0_) { GtkWindow* _tmp1_; g_source_remove (self->priv->m_auto_hide_timeout_id); self->priv->m_auto_hide_timeout_id = (guint) 0; _tmp1_ = self->priv->m_toplevel; gtk_widget_hide ((GtkWidget*) _tmp1_); } } 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, gpointer klass_data) { property_panel_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &PropertyPanel_private_offset); G_OBJECT_CLASS (klass)->finalize = property_panel_finalize; property_panel_signals[PROPERTY_PANEL_PROPERTY_ACTIVATE_SIGNAL] = 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, gpointer klass) { GdkRectangle _tmp0_ = {0}; self->priv = property_panel_get_instance_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); } static GType property_panel_get_type_once (void) { 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); PropertyPanel_private_offset = g_type_add_instance_private (property_panel_type_id, sizeof (PropertyPanelPrivate)); return property_panel_type_id; } 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)) { GType property_panel_type_id; property_panel_type_id = property_panel_get_type_once (); 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_default_init (IPropToolItemIface * iface, gpointer iface_data) { iprop_tool_item_signals[IPROP_TOOL_ITEM_PROPERTY_ACTIVATE_SIGNAL] = 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); } static GType iprop_tool_item_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IPropToolItemIface), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) iprop_tool_item_default_init, (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); return iprop_tool_item_type_id; } 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)) { GType iprop_tool_item_type_id; iprop_tool_item_type_id = iprop_tool_item_get_type_once (); g_once_init_leave (&iprop_tool_item_type_id__volatile, iprop_tool_item_type_id); } return iprop_tool_item_type_id__volatile; } static inline gpointer prop_menu_get_instance_private (PropMenu* self) { return G_STRUCT_MEMBER_P (self, PropMenu_private_offset); } PropMenu* prop_menu_construct (GType object_type, IBusProperty* prop) { PropMenu * self = NULL; IBusPropList* _tmp0_; 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_ = ibus_property_get_sub_props (prop); prop_menu_create_items (self, _tmp0_); gtk_widget_show_all ((GtkWidget*) self); gtk_widget_set_sensitive ((GtkWidget*) self, ibus_property_get_sensitive (prop)); 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_; gint _tmp0__length1; 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 < item_collection_length1; item_it = item_it + 1) { IPropItem* _tmp1_; IPropItem* item = NULL; _tmp1_ = _g_object_ref0 (item_collection[item_it]); item = _tmp1_; { IPropItem* _tmp2_; _tmp2_ = item; iprop_item_update_property (_tmp2_, prop); _g_object_unref0 (item); } } } } void prop_menu_popup (PropMenu* self, guint button, guint32 activate_time, GtkWidget* widget) { g_return_if_fail (self != NULL); g_return_if_fail (widget != NULL); gtk_menu_popup_at_widget (G_TYPE_CHECK_INSTANCE_CAST (self, gtk_menu_get_type (), GtkMenu), widget, GDK_GRAVITY_SOUTH_WEST, GDK_GRAVITY_NORTH_WEST, NULL); } static void prop_menu_real_destroy (GtkWidget* base) { PropMenu * self; IPropItem** _tmp0_; gint _tmp0__length1; IPropItem** _tmp3_; self = (PropMenu*) base; _g_object_unref0 (self->priv->m_parent_button); self->priv->m_parent_button = 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 < item_collection_length1; item_it = item_it + 1) { IPropItem* _tmp1_; IPropItem* item = NULL; _tmp1_ = _g_object_ref0 (item_collection[item_it]); item = _tmp1_; { IPropItem* _tmp2_; _tmp2_ = item; gtk_container_remove ((GtkContainer*) self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, gtk_widget_get_type ()) ? ((GtkWidget*) _tmp2_) : NULL); _g_object_unref0 (item); } } } _tmp3_ = 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 = _tmp3_; 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 ____lambda27_ (PropMenu* self, IPropItem* w, const gchar* k, gint s) { g_return_if_fail (w != NULL); g_return_if_fail (k != NULL); g_signal_emit ((IPropToolItem*) self, iprop_tool_item_signals[IPROP_TOOL_ITEM_PROPERTY_ACTIVATE_SIGNAL], 0, k, s); } static void _____lambda27__iprop_item_property_activate (IPropItem* _sender, const gchar* key, gint state, gpointer self) { ____lambda27_ ((PropMenu*) self, _sender, key, state); } static void _vala_array_add24 (IPropItem** * array, gint* length, gint* 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; IBusProperty* _tmp0_; IBusProperty* _tmp1_; IBusProperty* _tmp2_; gint _tmp3_; IPropItem* item = NULL; IBusProperty* _tmp4_; IBusProperty* _tmp25_; IPropItem* _tmp26_; _tmp0_ = ibus_prop_list_get (props, (guint) i); _tmp1_ = _g_object_ref0 (_tmp0_); prop = _tmp1_; _tmp2_ = prop; if (_tmp2_ == NULL) { _g_object_unref0 (prop); break; } _tmp3_ = i; i = _tmp3_ + 1; item = NULL; _tmp4_ = prop; switch (ibus_property_get_prop_type (_tmp4_)) { case PROP_TYPE_NORMAL: { IBusProperty* _tmp5_; PropImageMenuItem* _tmp6_; _tmp5_ = prop; _tmp6_ = prop_image_menu_item_new (_tmp5_); g_object_ref_sink (_tmp6_); _g_object_unref0 (item); item = (IPropItem*) _tmp6_; break; } case PROP_TYPE_TOGGLE: { IBusProperty* _tmp7_; PropCheckMenuItem* _tmp8_; _tmp7_ = prop; _tmp8_ = prop_check_menu_item_new (_tmp7_); g_object_ref_sink (_tmp8_); _g_object_unref0 (item); item = (IPropItem*) _tmp8_; break; } case PROP_TYPE_RADIO: { IBusProperty* _tmp9_; PropRadioMenuItem* _tmp10_; PropRadioMenuItem* _tmp11_; PropRadioMenuItem* _tmp12_; IPropItem* _tmp13_; _tmp9_ = prop; _tmp10_ = last_radio; _tmp11_ = prop_radio_menu_item_new (_tmp9_, _tmp10_); g_object_ref_sink (_tmp11_); _g_object_unref0 (last_radio); last_radio = _tmp11_; _tmp12_ = last_radio; _tmp13_ = _g_object_ref0 ((IPropItem*) _tmp12_); _g_object_unref0 (item); item = _tmp13_; break; } case PROP_TYPE_MENU: { { PropImageMenuItem* menuitem = NULL; IBusProperty* _tmp14_; PropImageMenuItem* _tmp15_; PropImageMenuItem* _tmp16_; IBusProperty* _tmp17_; PropMenu* _tmp18_; PropMenu* _tmp19_; PropImageMenuItem* _tmp20_; IPropItem* _tmp21_; _tmp14_ = prop; _tmp15_ = prop_image_menu_item_new (_tmp14_); g_object_ref_sink (_tmp15_); menuitem = _tmp15_; _tmp16_ = menuitem; _tmp17_ = prop; _tmp18_ = prop_menu_new (_tmp17_); g_object_ref_sink (_tmp18_); _tmp19_ = _tmp18_; gtk_menu_item_set_submenu ((GtkMenuItem*) _tmp16_, (GtkMenu*) _tmp19_); _g_object_unref0 (_tmp19_); _tmp20_ = menuitem; _tmp21_ = _g_object_ref0 ((IPropItem*) _tmp20_); _g_object_unref0 (item); item = _tmp21_; _g_object_unref0 (menuitem); } break; } case PROP_TYPE_SEPARATOR: { IBusProperty* _tmp22_; PropSeparatorMenuItem* _tmp23_; _tmp22_ = prop; _tmp23_ = prop_separator_menu_item_new (_tmp22_); g_object_ref_sink (_tmp23_); _g_object_unref0 (item); item = (IPropItem*) _tmp23_; break; } default: { IBusProperty* _tmp24_; _tmp24_ = prop; g_warning ("propertypanel.vala:561: Unknown property type: %d", (gint) ibus_property_get_prop_type (_tmp24_)); break; } } _tmp25_ = prop; if (ibus_property_get_prop_type (_tmp25_) != PROP_TYPE_RADIO) { _g_object_unref0 (last_radio); last_radio = NULL; } _tmp26_ = item; if (_tmp26_ != NULL) { IPropItem* _tmp27_; IPropItem* _tmp28_; IPropItem** _tmp29_; gint _tmp29__length1; IPropItem* _tmp30_; IPropItem* _tmp31_; _tmp27_ = item; gtk_menu_shell_append ((GtkMenuShell*) self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp27_, gtk_menu_item_get_type ()) ? ((GtkMenuItem*) _tmp27_) : NULL); _tmp28_ = item; g_signal_connect_object (_tmp28_, "property-activate", (GCallback) _____lambda27__iprop_item_property_activate, self, 0); _tmp29_ = self->priv->m_items; _tmp29__length1 = self->priv->m_items_length1; _tmp30_ = item; _tmp31_ = _g_object_ref0 (_tmp30_); _vala_array_add24 (&self->priv->m_items, &self->priv->m_items_length1, &self->priv->_m_items_size_, _tmp31_); } _g_object_unref0 (item); _g_object_unref0 (prop); } _g_object_unref0 (last_radio); } static void prop_menu_class_init (PropMenuClass * klass, gpointer klass_data) { prop_menu_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &PropMenu_private_offset); ((GtkWidgetClass *) klass)->destroy = (void (*) (GtkWidget*)) prop_menu_real_destroy; G_OBJECT_CLASS (klass)->finalize = prop_menu_finalize; } static void prop_menu_iprop_tool_item_interface_init (IPropToolItemIface * iface, gpointer iface_data) { 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, gpointer klass) { self->priv = prop_menu_get_instance_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); } static GType prop_menu_get_type_once (void) { 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); PropMenu_private_offset = g_type_add_instance_private (prop_menu_type_id, sizeof (PropMenuPrivate)); return prop_menu_type_id; } 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)) { GType prop_menu_type_id; prop_menu_type_id = prop_menu_get_type_once (); g_once_init_leave (&prop_menu_type_id__volatile, prop_menu_type_id); } return prop_menu_type_id__volatile; } static inline gpointer prop_tool_button_get_instance_private (PropToolButton* self) { return G_STRUCT_MEMBER_P (self, PropToolButton_private_offset); } PropToolButton* prop_tool_button_construct (GType object_type, IBusProperty* prop) { PropToolButton * self = NULL; IBusProperty* _tmp0_; g_return_val_if_fail (prop != NULL, NULL); self = (PropToolButton*) g_object_new (object_type, "halign", GTK_ALIGN_START, NULL); _tmp0_ = _g_object_ref0 (prop); _g_object_unref0 (self->priv->m_prop); self->priv->m_prop = _tmp0_; 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_; const gchar* _tmp1_; const gchar* _tmp2_; IBusProperty* _tmp3_; IBusText* _tmp4_; IBusProperty* _tmp5_; IBusText* _tmp6_; IBusProperty* _tmp7_; IBusProperty* _tmp8_; const gchar* _tmp9_; IBusProperty* _tmp10_; IBusProperty* _tmp11_; self = (PropToolButton*) base; g_return_if_fail (prop != NULL); _tmp0_ = self->priv->m_prop; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = ibus_property_get_key (prop); if (g_strcmp0 (_tmp1_, _tmp2_) != 0) { return; } _tmp3_ = self->priv->m_prop; _tmp4_ = ibus_property_get_symbol (prop); ibus_property_set_symbol (_tmp3_, _tmp4_); _tmp5_ = self->priv->m_prop; _tmp6_ = ibus_property_get_tooltip (prop); ibus_property_set_tooltip (_tmp5_, _tmp6_); _tmp7_ = self->priv->m_prop; ibus_property_set_sensitive (_tmp7_, ibus_property_get_sensitive (prop)); _tmp8_ = self->priv->m_prop; _tmp9_ = ibus_property_get_icon (prop); ibus_property_set_icon (_tmp8_, _tmp9_); _tmp10_ = self->priv->m_prop; ibus_property_set_state (_tmp10_, ibus_property_get_state (prop)); _tmp11_ = self->priv->m_prop; ibus_property_set_visible (_tmp11_, ibus_property_get_visible (prop)); prop_tool_button_sync (self); } static void prop_tool_button_sync (PropToolButton* self) { IBusProperty* _tmp0_; IBusText* _tmp1_; const gchar* _tmp2_; IBusProperty* _tmp3_; IBusText* _tmp4_; const gchar* _tmp5_; IBusProperty* _tmp6_; IBusProperty* _tmp7_; const gchar* _tmp8_; IBusProperty* _tmp9_; 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; gtk_widget_set_sensitive ((GtkWidget*) self, ibus_property_get_sensitive (_tmp6_)); _tmp7_ = self->priv->m_prop; _tmp8_ = ibus_property_get_icon (_tmp7_); prop_tool_button_set_icon_name (self, _tmp8_); _tmp9_ = self->priv->m_prop; if (ibus_property_get_visible (_tmp9_)) { gtk_widget_show ((GtkWidget*) self); } else { gtk_widget_hide ((GtkWidget*) self); } } static void prop_tool_button_real_clicked (GtkToolButton* base) { PropToolButton * self; IBusProperty* _tmp0_; const gchar* _tmp1_; IBusProperty* _tmp2_; self = (PropToolButton*) base; _tmp0_ = self->priv->m_prop; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = self->priv->m_prop; g_signal_emit ((IPropToolItem*) self, iprop_tool_item_signals[IPROP_TOOL_ITEM_PROPERTY_ACTIVATE_SIGNAL], 0, _tmp1_, (gint) ibus_property_get_state (_tmp2_)); } void prop_tool_button_set_icon_name (PropToolButton* self, const gchar* icon_name) { gchar* label = NULL; IBusProperty* _tmp0_; IBusText* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_; IconWidget* icon_widget = NULL; const gchar* _tmp4_; IconWidget* _tmp6_; 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) { IconWidget* _tmp5_; _g_free0 (label); label = NULL; _tmp5_ = icon_widget_new (icon_name, GTK_ICON_SIZE_BUTTON); g_object_ref_sink (_tmp5_); _g_object_unref0 (icon_widget); icon_widget = _tmp5_; gtk_tool_item_set_is_important ((GtkToolItem*) self, FALSE); } else { gtk_tool_item_set_is_important ((GtkToolItem*) self, TRUE); } _tmp6_ = icon_widget; gtk_tool_button_set_icon_widget ((GtkToolButton*) self, (GtkWidget*) _tmp6_); _g_object_unref0 (icon_widget); _g_free0 (label); } static void prop_tool_button_class_init (PropToolButtonClass * klass, gpointer klass_data) { prop_tool_button_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &PropToolButton_private_offset); ((GtkToolButtonClass *) klass)->clicked = (void (*) (GtkToolButton*)) 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, gpointer iface_data) { 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, gpointer klass) { self->priv = prop_tool_button_get_instance_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); } static GType prop_tool_button_get_type_once (void) { 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); PropToolButton_private_offset = g_type_add_instance_private (prop_tool_button_type_id, sizeof (PropToolButtonPrivate)); return prop_tool_button_type_id; } 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)) { GType prop_tool_button_type_id; prop_tool_button_type_id = prop_tool_button_get_type_once (); g_once_init_leave (&prop_tool_button_type_id__volatile, prop_tool_button_type_id); } return prop_tool_button_type_id__volatile; } static inline gpointer prop_toggle_tool_button_get_instance_private (PropToggleToolButton* self) { return G_STRUCT_MEMBER_P (self, PropToggleToolButton_private_offset); } PropToggleToolButton* prop_toggle_tool_button_construct (GType object_type, IBusProperty* prop) { PropToggleToolButton * self = NULL; IBusProperty* _tmp0_; g_return_val_if_fail (prop != NULL, NULL); self = (PropToggleToolButton*) g_object_new (object_type, "halign", GTK_ALIGN_START, NULL); _tmp0_ = _g_object_ref0 (prop); _g_object_unref0 (self->priv->m_prop); self->priv->m_prop = _tmp0_; 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_; g_return_if_fail (self != NULL); g_return_if_fail (prop != NULL); _tmp0_ = _g_object_ref0 (prop); _g_object_unref0 (self->priv->m_prop); self->priv->m_prop = _tmp0_; prop_toggle_tool_button_sync (self); } static void prop_toggle_tool_button_real_update_property (IPropToolItem* base, IBusProperty* prop) { PropToggleToolButton * self; IBusProperty* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; IBusProperty* _tmp3_; IBusText* _tmp4_; IBusProperty* _tmp5_; IBusText* _tmp6_; IBusProperty* _tmp7_; IBusProperty* _tmp8_; const gchar* _tmp9_; IBusProperty* _tmp10_; IBusProperty* _tmp11_; self = (PropToggleToolButton*) base; g_return_if_fail (prop != NULL); _tmp0_ = self->priv->m_prop; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = ibus_property_get_key (prop); if (g_strcmp0 (_tmp1_, _tmp2_) != 0) { return; } _tmp3_ = self->priv->m_prop; _tmp4_ = ibus_property_get_symbol (prop); ibus_property_set_symbol (_tmp3_, _tmp4_); _tmp5_ = self->priv->m_prop; _tmp6_ = ibus_property_get_tooltip (prop); ibus_property_set_tooltip (_tmp5_, _tmp6_); _tmp7_ = self->priv->m_prop; ibus_property_set_sensitive (_tmp7_, ibus_property_get_sensitive (prop)); _tmp8_ = self->priv->m_prop; _tmp9_ = ibus_property_get_icon (prop); ibus_property_set_icon (_tmp8_, _tmp9_); _tmp10_ = self->priv->m_prop; ibus_property_set_state (_tmp10_, ibus_property_get_state (prop)); _tmp11_ = self->priv->m_prop; ibus_property_set_visible (_tmp11_, ibus_property_get_visible (prop)); prop_toggle_tool_button_sync (self); } static void prop_toggle_tool_button_sync (PropToggleToolButton* self) { IBusProperty* _tmp0_; IBusText* _tmp1_; const gchar* _tmp2_; IBusProperty* _tmp3_; IBusText* _tmp4_; const gchar* _tmp5_; IBusProperty* _tmp6_; IBusProperty* _tmp7_; const gchar* _tmp8_; IBusProperty* _tmp9_; IBusProperty* _tmp10_; 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; gtk_widget_set_sensitive ((GtkWidget*) self, ibus_property_get_sensitive (_tmp6_)); _tmp7_ = self->priv->m_prop; _tmp8_ = ibus_property_get_icon (_tmp7_); prop_toggle_tool_button_set_icon_name (self, _tmp8_); _tmp9_ = self->priv->m_prop; gtk_toggle_tool_button_set_active ((GtkToggleToolButton*) self, ibus_property_get_state (_tmp9_) == PROP_STATE_CHECKED); _tmp10_ = self->priv->m_prop; if (ibus_property_get_visible (_tmp10_)) { 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; self = (PropToggleToolButton*) base; do_emit = FALSE; if (gtk_toggle_tool_button_get_active ((GtkToggleToolButton*) self)) { IBusProperty* _tmp0_; IBusProperty* _tmp1_; _tmp0_ = self->priv->m_prop; if (ibus_property_get_state (_tmp0_) != PROP_STATE_CHECKED) { do_emit = TRUE; } _tmp1_ = self->priv->m_prop; ibus_property_set_state (_tmp1_, PROP_STATE_CHECKED); } else { IBusProperty* _tmp2_; IBusProperty* _tmp3_; _tmp2_ = self->priv->m_prop; if (ibus_property_get_state (_tmp2_) != PROP_STATE_UNCHECKED) { do_emit = TRUE; } _tmp3_ = self->priv->m_prop; ibus_property_set_state (_tmp3_, PROP_STATE_UNCHECKED); } if (do_emit) { IBusProperty* _tmp4_; const gchar* _tmp5_; IBusProperty* _tmp6_; _tmp4_ = self->priv->m_prop; _tmp5_ = ibus_property_get_key (_tmp4_); _tmp6_ = self->priv->m_prop; g_signal_emit ((IPropToolItem*) self, iprop_tool_item_signals[IPROP_TOOL_ITEM_PROPERTY_ACTIVATE_SIGNAL], 0, _tmp5_, (gint) ibus_property_get_state (_tmp6_)); } } void prop_toggle_tool_button_set_icon_name (PropToggleToolButton* self, const gchar* icon_name) { gchar* label = NULL; IBusProperty* _tmp0_; IBusText* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_; IconWidget* icon_widget = NULL; const gchar* _tmp4_; IconWidget* _tmp6_; 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) { IconWidget* _tmp5_; _g_free0 (label); label = NULL; _tmp5_ = icon_widget_new (icon_name, GTK_ICON_SIZE_BUTTON); g_object_ref_sink (_tmp5_); _g_object_unref0 (icon_widget); icon_widget = _tmp5_; gtk_tool_item_set_is_important ((GtkToolItem*) self, FALSE); } else { gtk_tool_item_set_is_important ((GtkToolItem*) self, TRUE); } _tmp6_ = icon_widget; gtk_tool_button_set_icon_widget ((GtkToolButton*) self, (GtkWidget*) _tmp6_); _g_object_unref0 (icon_widget); _g_free0 (label); } static void prop_toggle_tool_button_class_init (PropToggleToolButtonClass * klass, gpointer klass_data) { prop_toggle_tool_button_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &PropToggleToolButton_private_offset); ((GtkToggleToolButtonClass *) klass)->toggled = (void (*) (GtkToggleToolButton*)) 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, gpointer iface_data) { 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, gpointer klass) { self->priv = prop_toggle_tool_button_get_instance_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); } static GType prop_toggle_tool_button_get_type_once (void) { 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); PropToggleToolButton_private_offset = g_type_add_instance_private (prop_toggle_tool_button_type_id, sizeof (PropToggleToolButtonPrivate)); return prop_toggle_tool_button_type_id; } 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)) { GType prop_toggle_tool_button_type_id; prop_toggle_tool_button_type_id = prop_toggle_tool_button_get_type_once (); 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 inline gpointer prop_menu_tool_button_get_instance_private (PropMenuToolButton* self) { return G_STRUCT_MEMBER_P (self, PropMenuToolButton_private_offset); } static void __lambda28_ (PropMenuToolButton* self, GtkMenuShell* m) { g_return_if_fail (m != NULL); gtk_toggle_tool_button_set_active ((GtkToggleToolButton*) self, FALSE); } static void ___lambda28__gtk_menu_shell_deactivate (GtkMenuShell* _sender, gpointer self) { __lambda28_ ((PropMenuToolButton*) self, _sender); } static void __lambda29_ (PropMenuToolButton* self, const gchar* k, gint s) { g_return_if_fail (k != NULL); g_signal_emit ((IPropToolItem*) self, iprop_tool_item_signals[IPROP_TOOL_ITEM_PROPERTY_ACTIVATE_SIGNAL], 0, k, s); } static void ___lambda29__iprop_tool_item_property_activate (IPropToolItem* _sender, const gchar* key, gint state, gpointer self) { __lambda29_ ((PropMenuToolButton*) self, key, state); } PropMenuToolButton* prop_menu_tool_button_construct (GType object_type, IBusProperty* prop) { PropMenuToolButton * self = NULL; PropMenu* _tmp0_; PropMenu* _tmp1_; PropMenu* _tmp2_; g_return_val_if_fail (prop != NULL, NULL); self = (PropMenuToolButton*) g_object_new (object_type, "halign", GTK_ALIGN_START, NULL); _tmp0_ = prop_menu_new (prop); g_object_ref_sink (_tmp0_); _g_object_unref0 (self->priv->m_menu); self->priv->m_menu = _tmp0_; _tmp1_ = self->priv->m_menu; g_signal_connect_object ((GtkMenuShell*) _tmp1_, "deactivate", (GCallback) ___lambda28__gtk_menu_shell_deactivate, self, 0); _tmp2_ = self->priv->m_menu; g_signal_connect_object ((IPropToolItem*) _tmp2_, "property-activate", (GCallback) ___lambda29__iprop_tool_item_property_activate, self, 0); prop_toggle_tool_button_set_property (G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_PROP_TOGGLE_TOOL_BUTTON, PropToggleToolButton), prop); 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; PropMenu* _tmp0_; self = (PropMenuToolButton*) base; g_return_if_fail (prop != NULL); prop_menu_tool_button_iprop_tool_item_parent_iface->update_property ((IPropToolItem*) G_TYPE_CHECK_INSTANCE_CAST (self, TYPE_PROP_TOGGLE_TOOL_BUTTON, PropToggleToolButton), prop); _tmp0_ = self->priv->m_menu; iprop_tool_item_update_property ((IPropToolItem*) _tmp0_, prop); } static void prop_menu_tool_button_real_toggled (GtkToggleToolButton* base) { PropMenuToolButton * self; self = (PropMenuToolButton*) base; if (gtk_toggle_tool_button_get_active ((GtkToggleToolButton*) self)) { PropMenu* _tmp0_; _tmp0_ = self->priv->m_menu; prop_menu_popup (_tmp0_, (guint) 0, gtk_get_current_event_time (), (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, gpointer klass_data) { prop_menu_tool_button_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &PropMenuToolButton_private_offset); ((GtkToggleToolButtonClass *) klass)->toggled = (void (*) (GtkToggleToolButton*)) prop_menu_tool_button_real_toggled; ((GtkWidgetClass *) klass)->destroy = (void (*) (GtkWidget*)) 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, gpointer iface_data) { 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, gpointer klass) { self->priv = prop_menu_tool_button_get_instance_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); } static GType prop_menu_tool_button_get_type_once (void) { 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); PropMenuToolButton_private_offset = g_type_add_instance_private (prop_menu_tool_button_type_id, sizeof (PropMenuToolButtonPrivate)); return prop_menu_tool_button_type_id; } 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)) { GType prop_menu_tool_button_type_id; prop_menu_tool_button_type_id = prop_menu_tool_button_get_type_once (); 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, gpointer klass_data) { 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, gpointer iface_data) { 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, gpointer klass) { } static GType prop_separator_tool_item_get_type_once (void) { 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); return prop_separator_tool_item_type_id; } 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)) { GType prop_separator_tool_item_type_id; prop_separator_tool_item_type_id = prop_separator_tool_item_get_type_once (); 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)) { gint 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.22/ui/gtk3/iconwidget.vala0000644000000000000000000001353713623750431013735 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2014 Peng Huang * Copyright(c) 2018 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 ThemedRGBA { public Gdk.RGBA *normal_fg { get; set; } public Gdk.RGBA *normal_bg { get; set; } public Gdk.RGBA *selected_fg { get; set; } public Gdk.RGBA *selected_bg { get; set; } private Gtk.StyleContext m_style_context; public ThemedRGBA(Gtk.Widget widget) { this.normal_fg = null; this.normal_bg = null; this.selected_fg = null; this.selected_bg = null; /* Use the color of Gtk.TextView instead of Gtk.Label * because the selected label "color" is not configured * in "Adwaita" theme and the selected label "background-color" * is not configured in "Maia" theme. * https://github.com/ibus/ibus/issues/1871 */ Gtk.WidgetPath widget_path = new Gtk.WidgetPath(); widget_path.append_type(typeof(Gtk.TextView)); m_style_context = new Gtk.StyleContext(); m_style_context.set_path(widget_path); m_style_context.add_class(Gtk.STYLE_CLASS_VIEW); /* "-gtk-secondary-caret-color" value is different * if the parent widget is set in "Menta" theme. */ m_style_context.set_parent(widget.get_style_context()); get_rgba(); m_style_context.changed.connect(() => { get_rgba(); }); } ~ThemedRGBA() { reset_rgba(); } private void reset_rgba() { if (this.normal_fg != null) { this.normal_fg.free(); this.normal_fg = null; } if (this.normal_bg != null) { this.normal_bg.free(); this.normal_bg = null; } if (this.selected_fg != null) { this.selected_fg.free(); this.selected_fg = null; } if (this.selected_bg != null) { this.selected_bg.free(); this.selected_bg = null; } } private void get_rgba() { reset_rgba(); Gdk.RGBA *normal_fg = null; Gdk.RGBA *normal_bg = null; Gdk.RGBA *selected_fg = null; Gdk.RGBA *selected_bg = null; m_style_context.get(Gtk.StateFlags.NORMAL, "color", out normal_fg); m_style_context.get(Gtk.StateFlags.SELECTED, "color", out selected_fg); string bg_prop = "background-color"; m_style_context.get(Gtk.StateFlags.NORMAL, bg_prop, out normal_bg); m_style_context.get(Gtk.StateFlags.SELECTED, bg_prop, out selected_bg); if (normal_bg.red == selected_bg.red && normal_bg.green == selected_bg.green && normal_bg.blue == selected_bg.blue && normal_bg.alpha == selected_bg.alpha) { normal_bg.free(); normal_bg = null; normal_bg.free(); normal_bg = null; bg_prop = "-gtk-secondary-caret-color"; m_style_context.get(Gtk.StateFlags.NORMAL, bg_prop, out normal_bg); m_style_context.get(Gtk.StateFlags.SELECTED, bg_prop, out selected_bg); } this.normal_fg = normal_fg; this.normal_bg = normal_bg; this.selected_fg = selected_fg; this.selected_bg = selected_bg; } } 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.22/ui/gtk3/emojierapp.vala0000644000000000000000000002255413623750431013733 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright (c) 2017 Peng Wu * Copyright (c) 2017-2019 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 */ string emoji_font = null; string annotation_lang = null; bool partial_match = false; int partial_match_length = -1; int partial_match_condition = -1; public class EmojiApplication : Gtk.Application { private IBusEmojier? m_emojier; private GLib.Settings m_settings_emoji = new GLib.Settings("org.freedesktop.ibus.panel.emoji"); private ApplicationCommandLine? m_command_line = null; private EmojiApplication() { Object(application_id: "org.freedesktop.IBus.Panel.Emojier", flags: ApplicationFlags.HANDLES_COMMAND_LINE); set_inactivity_timeout(100000); } private void save_selected_string(string? selected_string, bool cancelled) { if (cancelled) { m_command_line.print("%s\n", _("Canceled to choose an emoji.")); return; } GLib.return_if_fail(selected_string != null); Gtk.Clipboard clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD); clipboard.set_text(selected_string, -1); clipboard.store(); var emojier_favorites = m_settings_emoji.get_strv("favorites"); bool has_favorite = false; foreach (unowned string favorite in emojier_favorites) { if (favorite == selected_string) { has_favorite = true; break; } } if (!has_favorite) { emojier_favorites += selected_string; m_settings_emoji.set_strv("favorites", emojier_favorites); } m_command_line.print("%s\n", _("Copied an emoji to your clipboard.")); } private void show_dialog(ApplicationCommandLine command_line) { m_command_line = command_line; m_emojier.reset(); m_emojier.set_annotation(""); m_emojier.show_all(); } public void candidate_clicked_lookup_table(uint index, uint button, uint state) { if (m_command_line == null) return; if (button == IBusEmojier.BUTTON_CLOSE_BUTTON) { m_emojier.hide(); save_selected_string(null, true); m_command_line = null; return; } if (m_emojier == null) return; bool show_candidate = false; uint ncandidates = m_emojier.get_number_of_candidates(); if (ncandidates > 0 && ncandidates >= index) { m_emojier.set_cursor_pos(index); show_candidate = m_emojier.has_variants(index, false); } else { return; } if (show_candidate) { return; } string emoji = m_emojier.get_current_candidate(); m_emojier.hide(); save_selected_string(emoji, false); m_command_line = null; } public void activate_dialog(ApplicationCommandLine command_line) { this.hold (); show_dialog(command_line); this.release (); } private int _command_line(ApplicationCommandLine command_line) { // Set default font size IBusEmojier.set_emoji_font(m_settings_emoji.get_string("font")); const OptionEntry[] options = { { "font", 0, 0, OptionArg.STRING, out emoji_font, /* TRANSLATORS: "FONT" should be capital and translatable. * It's used for an argument command --font=FONT */ N_("\"FONT\" for emoji characters on emoji dialog"), N_("FONT") }, { "lang", 0, 0, OptionArg.STRING, out annotation_lang, /* TRANSLATORS: "LANG" should be capital and translatable. * It's used for an argument command --lang=LANG */ N_("\"LANG\" for annotations on emoji dialog. E.g. \"en\""), N_("LANG") }, { "partial-match", 0, 0, OptionArg.NONE, out partial_match, N_("Emoji annotations can be match partially"), null }, { "partial-match-length", 0, 0, OptionArg.INT, out partial_match_length, N_("Match with the length of the specified integer"), null }, { "partial-match-condition", 0, 0, OptionArg.INT, out partial_match_condition, N_("Match with the condition of the specified integer"), null }, { null } }; var option = new OptionContext(); option.add_main_entries(options, Config.GETTEXT_PACKAGE); // We have to make an extra copy of the array, // since .parse assumes that it can remove strings // from the array without freeing them. string[] args = command_line.get_arguments(); string*[] _args = new string[args.length]; for (int i = 0; i < args.length; i++) { _args[i] = args[i]; } // Need to initialize for the second instance. emoji_font = null; annotation_lang = null; try { unowned string[] tmp = _args; option.parse(ref tmp); } catch (OptionError e) { stderr.printf("%s\n", e.message); return Posix.EXIT_FAILURE; } if (m_emojier != null && m_emojier.is_running()) { Gdk.Event event = new Gdk.Event(Gdk.EventType.KEY_PRESS); event.key.time = Gdk.CURRENT_TIME; m_emojier.present_centralize(event); return Posix.EXIT_SUCCESS; } if (annotation_lang == null) annotation_lang = m_settings_emoji.get_string("lang"); IBusEmojier.set_annotation_lang(annotation_lang); IBusEmojier.set_partial_match(partial_match); if (partial_match_length > 0) { IBusEmojier.set_partial_match_length(partial_match_length); } else { IBusEmojier.set_partial_match_length( m_settings_emoji.get_int("partial-match-length")); } if (partial_match_condition > 2) { warning("Need condition between 0 and 2."); IBusEmojier.set_partial_match_condition( m_settings_emoji.get_int("partial-match-condition")); } else if (partial_match_condition >= 0) { IBusEmojier.set_partial_match_condition(partial_match_condition); } else { IBusEmojier.set_partial_match_condition( m_settings_emoji.get_int("partial-match-condition")); } if (emoji_font != null) IBusEmojier.set_emoji_font(emoji_font); IBusEmojier.set_favorites( m_settings_emoji.get_strv("favorites"), m_settings_emoji.get_strv("favorite-annotations")); IBusEmojier.load_unicode_dict(); if (m_emojier == null) { m_emojier = new IBusEmojier(); // For title handling in gnome-shell add_window(m_emojier); m_emojier.candidate_clicked.connect((i, b, s) => { candidate_clicked_lookup_table(i, b, s); }); m_emojier.cancel.connect(() => { if (m_command_line == null) return; m_emojier.hide(); save_selected_string(null, true); m_command_line = null; }); m_emojier.commit_text.connect(() => { if (m_command_line == null) return; m_emojier.hide(); string selected_string = m_emojier.get_selected_string(); save_selected_string(selected_string, false); m_command_line = null; }); } activate_dialog(command_line); return Posix.EXIT_SUCCESS; } public override int command_line(ApplicationCommandLine command_line) { // keep the application running until we are done with this commandline this.hold(); int result = _command_line(command_line); this.release(); return result; } public override void shutdown() { base.shutdown(); remove_window(m_emojier); m_emojier = null; } public static int main (string[] args) { GLib.Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR); GLib.Intl.bind_textdomain_codeset(Config.GETTEXT_PACKAGE, "UTF-8"); GLib.Intl.textdomain(Config.GETTEXT_PACKAGE); IBus.init(); Gtk.init(ref args); EmojiApplication app = new EmojiApplication(); int status = app.run(args); return status; } } ibus-1.5.22/ui/gtk3/panel.c0000644000000000000000000056403713623751707012214 00000000000000/* panel.c generated by valac 0.47.91, 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-2019 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 #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; typedef enum { PANEL_ICON_TYPE_STATUS_ICON, PANEL_ICON_TYPE_INDICATOR } PanelIconType; #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 BINDING_COMMON_TYPE_KEYBINDING (binding_common_keybinding_get_type ()) #define BINDING_COMMON_KEYBINDING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BINDING_COMMON_TYPE_KEYBINDING, BindingCommonKeybinding)) #define BINDING_COMMON_KEYBINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BINDING_COMMON_TYPE_KEYBINDING, BindingCommonKeybindingClass)) #define BINDING_COMMON_IS_KEYBINDING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BINDING_COMMON_TYPE_KEYBINDING)) #define BINDING_COMMON_IS_KEYBINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BINDING_COMMON_TYPE_KEYBINDING)) #define BINDING_COMMON_KEYBINDING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BINDING_COMMON_TYPE_KEYBINDING, BindingCommonKeybindingClass)) typedef struct _BindingCommonKeybinding BindingCommonKeybinding; typedef struct _BindingCommonKeybindingClass BindingCommonKeybindingClass; enum { PANEL_0_PROPERTY, PANEL_NUM_PROPERTIES }; static GParamSpec* panel_properties[PANEL_NUM_PROPERTIES]; typedef enum { BINDING_COMMON_KEY_EVENT_FUNC_TYPE_ANY, BINDING_COMMON_KEY_EVENT_FUNC_TYPE_IME_SWITCHER, BINDING_COMMON_KEY_EVENT_FUNC_TYPE_EMOJI_TYPING } BindingCommonKeyEventFuncType; #define BINDING_COMMON_TYPE_KEY_EVENT_FUNC_TYPE (binding_common_key_event_func_type_get_type ()) #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))) typedef enum { INDICATOR_CATEGORY_APPLICATION_STATUS, INDICATOR_CATEGORY_COMMUNICATIONS, INDICATOR_CATEGORY_SYSTEM_SERVICES, INDICATOR_CATEGORY_HARDWARE, INDICATOR_CATEGORY_OTHER } IndicatorCategory; #define INDICATOR_TYPE_CATEGORY (indicator_category_get_type ()) typedef enum { INDICATOR_STATUS_PASSIVE, INDICATOR_STATUS_ACTIVE, INDICATOR_STATUS_ATTENTION } IndicatorStatus; #define INDICATOR_TYPE_STATUS (indicator_status_get_type ()) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) typedef struct _Block6Data Block6Data; #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 void (*KeybindingManagerKeybindingHandlerFunc) (GdkEvent* event, gpointer user_data); #define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) typedef struct _Block7Data Block7Data; #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 _Block8Data Block8Data; typedef struct _Block9Data Block9Data; #define _g_main_context_unref0(var) ((var == NULL) ? NULL : (var = (g_main_context_unref (var), NULL))) #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; }; 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; gchar* m_real_current_context_path; gboolean m_use_global_engine; CandidatePanel* m_candidate_panel; Switcher* m_switcher; guint m_switcher_focus_set_engine_id; 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; gboolean m_is_kde; gulong m_popup_menu_id; gulong m_activate_id; gulong m_registered_status_notifier_item_id; GList* m_keybindings; }; struct _Block6Data { int _ref_count_; Panel* self; GdkRectangle area; GdkWindow* window; GtkMenuPositionFunc func; gpointer func_target; GDestroyNotify func_target_destroy_notify; }; struct _Block7Data { int _ref_count_; Panel* self; gchar** names; gint names_length1; gint _names_size_; }; struct _Block8Data { int _ref_count_; Panel* self; IBusEngineDesc* e; }; struct _Block9Data { int _ref_count_; Panel* self; gchar* symbol; }; static gint Panel_private_offset; static gpointer panel_parent_class = NULL; GType panel_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Panel, g_object_unref) static GType panel_icon_type_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; GType indicator_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Indicator, g_object_unref) GType candidate_panel_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (CandidatePanel, g_object_unref) GType switcher_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Switcher, g_object_unref) 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropertyManager, property_manager_unref) GType property_panel_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropertyPanel, g_object_unref) 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (XKBLayout, xkb_layout_unref) GType binding_common_keybinding_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (BindingCommonKeybinding, g_object_unref) void indicator_unregister_connection (Indicator* self); GType binding_common_key_event_func_type_get_type (void) G_GNUC_CONST; void binding_common_unbind_switch_shortcut (BindingCommonKeyEventFuncType ftype, GList* keybindings); static void _g_object_unref0_ (gpointer var); static inline void _g_list_free__g_object_unref0_ (GList* self); #define PANEL_PRELOAD_ENGINES_DELAY_TIME ((guint) 30000) static void _g_free0_ (gpointer var); static void _cairo_surface_destroy0_ (gpointer var); XKBLayout* xkb_layout_new (void); XKBLayout* xkb_layout_construct (GType object_type); static gboolean panel_is_kde (void); Panel* panel_new (IBusBus* bus); Panel* panel_construct (GType object_type, IBusBus* bus); static void panel_init_settings (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 __lambda83_ (Panel* self, CandidatePanel* w); static void ___lambda83__candidate_panel_page_up (CandidatePanel* _sender, gpointer self); static void __lambda84_ (Panel* self, CandidatePanel* w); static void ___lambda84__candidate_panel_page_down (CandidatePanel* _sender, gpointer self); static void __lambda85_ (Panel* self, CandidatePanel* w); static void ___lambda85__candidate_panel_cursor_up (CandidatePanel* _sender, gpointer self); static void __lambda86_ (Panel* self, CandidatePanel* w); static void ___lambda86__candidate_panel_cursor_down (CandidatePanel* _sender, gpointer self); static void __lambda87_ (Panel* self, CandidatePanel* w, guint i, guint b, guint s); static void ___lambda87__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 __lambda88_ (Panel* self, PropertyManager* w, const gchar* k, gint s); static void ___lambda88__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 __lambda89_ (Panel* self, PropertyPanel* w, const gchar* k, gint s); static void ___lambda89__property_panel_property_activate (PropertyPanel* _sender, const gchar* key, gint state, gpointer self); static void __lambda32_ (Panel* self, const gchar* key); static void panel_update_engines (Panel* self, gchar** unowned_engine_names, gint unowned_engine_names_length1, gchar** order_names, gint order_names_length1); static void ___lambda32__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda34_ (Panel* self, const gchar* key); static void panel_set_switcher_delay_time (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_system_keyboard_layout (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_embed_preedit_text (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 panel_set_use_global_engine (Panel* self); static void ___lambda37__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda38_ (Panel* self, const gchar* key); static void panel_set_use_xmodmap (Panel* self); static void ___lambda38__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda39_ (Panel* self, const gchar* key); static void ___lambda39__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda61_ (Panel* self, const gchar* key); void binding_common_set_custom_font (GSettings* settings_panel, GSettings* settings_emoji, GtkCssProvider* * css_provider); static void ___lambda61__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda62_ (Panel* self, const gchar* key); static void ___lambda62__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda63_ (Panel* self, const gchar* key); static void panel_set_show_icon_on_systray (Panel* self); static void ___lambda63__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda64_ (Panel* self, const gchar* key); static void panel_set_lookup_table_orientation (Panel* self); static void ___lambda64__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda65_ (Panel* self, const gchar* key); static void panel_set_show_property_panel (Panel* self); static void ___lambda65__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda66_ (Panel* self, const gchar* key); static void panel_set_timeout_property_panel (Panel* self); static void ___lambda66__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda67_ (Panel* self, const gchar* key); static void panel_set_follow_input_cursor_when_always_shown_property_panel (Panel* self); static void ___lambda67__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda68_ (Panel* self, const gchar* key); static void panel_set_xkb_icon_rgba (Panel* self); static void ___lambda68__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda69_ (Panel* self, const gchar* key); static void panel_set_property_icon_delay_time (Panel* self); static void ___lambda69__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void panel_popup_menu_at_area_window (Panel* self, GtkMenu* menu, GdkRectangle* area, GdkWindow* window, GtkMenuPositionFunc func, gpointer func_target); static void panel_popup_menu_at_pointer_window (Panel* self, GtkMenu* menu, gint x, gint y, GdkWindow* window, GtkMenuPositionFunc func, gpointer func_target); static void __lambda70_ (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 ___lambda71_ (Panel* self); GType indicator_status_get_type (void) G_GNUC_CONST; void indicator_set_status (Indicator* self, IndicatorStatus status); static void ____lambda71__indicator_registered_status_notifier_item (Indicator* _sender, gpointer self); static void ___lambda72_ (Panel* self, gint x, gint y, GdkWindow* w, 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 ____lambda72__indicator_context_menu (Indicator* _sender, gint x, gint y, GdkWindow* window, guint button, guint activate_time, gpointer self); static void ___lambda79_ (Panel* self, gint x, gint y, GdkWindow* w); 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 ____lambda79__indicator_activate (Indicator* _sender, gint x, gint y, GdkWindow* window, gpointer self); static void ___lambda70__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self); static void panel_init_status_icon_menu (Panel* self); static void _panel_init_status_icon_menu_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self); static Block6Data* block6_data_ref (Block6Data* _data6_); static void block6_data_unref (void * _userdata_); static void __lambda81_ (Block6Data* _data6_, guint b, guint t); static void ___lambda81__gtk_status_icon_popup_menu (GtkStatusIcon* _sender, guint button, guint activate_time, gpointer self); static void __lambda82_ (Block6Data* _data6_); static void ___lambda82__gtk_status_icon_activate (GtkStatusIcon* _sender, gpointer self); GType keybinding_manager_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (KeybindingManager, g_object_unref) KeybindingManager* keybinding_manager_get_instance (void); void binding_common_keybinding_manager_bind (KeybindingManager* keybinding_manager, GList* * keybindings, const gchar* accelerator, BindingCommonKeyEventFuncType ftype, KeybindingManagerKeybindingHandlerFunc handler_normal, gpointer handler_normal_target, KeybindingManagerKeybindingHandlerFunc handler_reverse, gpointer handler_reverse_target); static void panel_handle_engine_switch_normal (Panel* self, GdkEvent* event); static void _panel_handle_engine_switch_normal_keybinding_manager_keybinding_handler_func (GdkEvent* event, gpointer self); static void panel_handle_engine_switch_reverse (Panel* self, GdkEvent* event); static void _panel_handle_engine_switch_reverse_keybinding_manager_keybinding_handler_func (GdkEvent* event, gpointer self); static GList* panel_get_engines_from_xkb (Panel* self, GList* engines); void xkb_layout_get_layout (gchar* * layout, gchar* * variant, gchar* * option); static GList* panel_get_engines_from_locale (Panel* self, GList* engines); static gint __lambda90_ (IBusEngineDesc* a, IBusEngineDesc* b); static gint ___lambda90__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, gint xkb_latin_layouts_length1); static void _vala_array_add17 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add18 (gchar** * array, gint* length, gint* 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_8 (Panel* self); static void panel_set_version (Panel* self); void panel_load_settings (Panel* self); void panel_disconnect_signals (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); static void panel_handle_engine_switch (Panel* self, GdkEvent* event, gboolean reverse); #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, gint engines_length1, gint index, const gchar* input_context_path); static void panel_switcher_focus_set_engine (Panel* self); static void panel_run_preload_engines (Panel* self, IBusEngineDesc** engines, gint engines_length1, gint index); static Block7Data* block7_data_ref (Block7Data* _data7_); static void block7_data_unref (void * _userdata_); static void _vala_array_add19 (gchar** * array, gint* length, gint* size, gchar* value); static gboolean __lambda33_ (Block7Data* _data7_); static gboolean ___lambda33__gsource_func (gpointer self); static gchar** _vala_array_dup2 (gchar** self, gint length); static gboolean _vala_string_array_contains (gchar* * stack, gint stack_length, const gchar* needle); static void _vala_array_add20 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add21 (gchar** * array, gint* length, gint* size, gchar* value); static IBusEngineDesc** _vala_array_dup3 (IBusEngineDesc** self, gint length); static IBusEngineDesc** _vala_array_dup4 (IBusEngineDesc** self, gint 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 __lambda74_ (Panel* self, GPid pid, gint state); static void ___lambda74__gchild_watch_func (GPid pid, gint status, gpointer self); static void panel_show_about_dialog (Panel* self); static void ___lambda73_ (Panel* self, GtkMenuItem* i); static void ____lambda73__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self); static void ___lambda75_ (Panel* self, GtkMenuItem* i); static void ____lambda75__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self); static void ___lambda76_ (Panel* self, GtkMenuItem* i); static void ____lambda76__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self); static void ___lambda77_ (Panel* self, GtkMenuItem* i); static void ____lambda77__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self); static void ___lambda78_ (Panel* self, GtkMenuItem* i); static void ____lambda78__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self); gint property_manager_create_menu_items (PropertyManager* self, GtkMenu* menu); static Block8Data* block8_data_ref (Block8Data* _data8_); static void block8_data_unref (void * _userdata_); static void ____lambda80_ (Block8Data* _data8_, GtkMenuItem* item); static void _____lambda80__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 Block9Data* block9_data_ref (Block9Data* _data9_); static void block9_data_unref (void * _userdata_); static gboolean __lambda91_ (Block9Data* _data9_); void indicator_set_cairo_image_surface_full (Indicator* self, cairo_surface_t* image, const gchar* icon_desc); static gboolean ___lambda91__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 gboolean panel_switcher_focus_set_engine_real (Panel* self); IBusEngineDesc* switcher_get_selected_engine (Switcher* self); gchar* switcher_get_input_context_path (Switcher* self); void switcher_reset (Switcher* self); gboolean switcher_is_running (Switcher* self); static gboolean ___lambda60_ (Panel* self); static gboolean ____lambda60__gsource_func (gpointer self); 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_add22 (gchar** * array, gint* length, gint* size, gchar* value); static void panel_finalize (GObject * obj); static GType panel_get_type_once (void); 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 inline gpointer panel_get_instance_private (Panel* self) { return G_STRUCT_MEMBER_P (self, Panel_private_offset); } static void _g_object_unref0_ (gpointer var) { (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); } static inline void _g_list_free__g_object_unref0_ (GList* self) { g_list_free_full (self, (GDestroyNotify) _g_object_unref0_); } static GType panel_icon_type_get_type_once (void) { 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); return panel_icon_type_type_id; } 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)) { GType panel_icon_type_type_id; panel_icon_type_type_id = panel_icon_type_get_type_once (); 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 _cairo_surface_destroy0_ (gpointer var) { (var == NULL) ? NULL : (var = (cairo_surface_destroy (var), NULL)); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void __lambda83_ (Panel* self, CandidatePanel* w) { g_return_if_fail (w != NULL); ibus_panel_service_page_up ((IBusPanelService*) self); } static void ___lambda83__candidate_panel_page_up (CandidatePanel* _sender, gpointer self) { __lambda83_ ((Panel*) self, _sender); } static void __lambda84_ (Panel* self, CandidatePanel* w) { g_return_if_fail (w != NULL); ibus_panel_service_page_down ((IBusPanelService*) self); } static void ___lambda84__candidate_panel_page_down (CandidatePanel* _sender, gpointer self) { __lambda84_ ((Panel*) self, _sender); } static void __lambda85_ (Panel* self, CandidatePanel* w) { g_return_if_fail (w != NULL); ibus_panel_service_cursor_up ((IBusPanelService*) self); } static void ___lambda85__candidate_panel_cursor_up (CandidatePanel* _sender, gpointer self) { __lambda85_ ((Panel*) self, _sender); } static void __lambda86_ (Panel* self, CandidatePanel* w) { g_return_if_fail (w != NULL); ibus_panel_service_cursor_down ((IBusPanelService*) self); } static void ___lambda86__candidate_panel_cursor_down (CandidatePanel* _sender, gpointer self) { __lambda86_ ((Panel*) self, _sender); } static void __lambda87_ (Panel* self, CandidatePanel* w, guint i, guint b, guint s) { g_return_if_fail (w != NULL); ibus_panel_service_candidate_clicked ((IBusPanelService*) self, i, b, s); } static void ___lambda87__candidate_panel_candidate_clicked (CandidatePanel* _sender, guint index, guint button, guint state, gpointer self) { __lambda87_ ((Panel*) self, _sender, index, button, state); } static void __lambda88_ (Panel* self, PropertyManager* w, const gchar* k, gint s) { g_return_if_fail (w != NULL); g_return_if_fail (k != NULL); ibus_panel_service_property_activate ((IBusPanelService*) self, k, (guint) s); } static void ___lambda88__property_manager_property_activate (PropertyManager* _sender, const gchar* key, gint state, gpointer self) { __lambda88_ ((Panel*) self, _sender, key, state); } static void __lambda89_ (Panel* self, PropertyPanel* w, const gchar* k, gint s) { g_return_if_fail (w != NULL); g_return_if_fail (k != NULL); ibus_panel_service_property_activate ((IBusPanelService*) self, k, (guint) s); } static void ___lambda89__property_panel_property_activate (PropertyPanel* _sender, const gchar* key, gint state, gpointer self) { __lambda89_ ((Panel*) self, _sender, key, state); } Panel* panel_construct (GType object_type, IBusBus* bus) { Panel * self = NULL; GDBusConnection* _tmp0_; IBusBus* _tmp1_; CandidatePanel* _tmp2_; CandidatePanel* _tmp3_; CandidatePanel* _tmp4_; CandidatePanel* _tmp5_; CandidatePanel* _tmp6_; CandidatePanel* _tmp7_; Switcher* _tmp8_; PropertyManager* _tmp10_; PropertyManager* _tmp11_; PropertyPanel* _tmp12_; PropertyPanel* _tmp13_; g_return_val_if_fail (bus != NULL, NULL); _vala_assert (ibus_bus_is_connected (bus), "bus.is_connected()"); _tmp0_ = ibus_bus_get_connection (bus); self = (Panel*) g_object_new (object_type, "connection", _tmp0_, "object-path", "/org/freedesktop/IBus/Panel", NULL); _tmp1_ = _g_object_ref0 (bus); _g_object_unref0 (self->priv->m_bus); self->priv->m_bus = _tmp1_; panel_init_settings (self); if (self->priv->m_is_kde) { panel_init_indicator (self); } else { panel_init_status_icon (self); } _tmp2_ = candidate_panel_new (); g_object_ref_sink (_tmp2_); _g_object_unref0 (self->priv->m_candidate_panel); self->priv->m_candidate_panel = _tmp2_; _tmp3_ = self->priv->m_candidate_panel; g_signal_connect_object (_tmp3_, "page-up", (GCallback) ___lambda83__candidate_panel_page_up, self, 0); _tmp4_ = self->priv->m_candidate_panel; g_signal_connect_object (_tmp4_, "page-down", (GCallback) ___lambda84__candidate_panel_page_down, self, 0); _tmp5_ = self->priv->m_candidate_panel; g_signal_connect_object (_tmp5_, "cursor-up", (GCallback) ___lambda85__candidate_panel_cursor_up, self, 0); _tmp6_ = self->priv->m_candidate_panel; g_signal_connect_object (_tmp6_, "cursor-down", (GCallback) ___lambda86__candidate_panel_cursor_down, self, 0); _tmp7_ = self->priv->m_candidate_panel; g_signal_connect_object (_tmp7_, "candidate-clicked", (GCallback) ___lambda87__candidate_panel_candidate_clicked, self, 0); _tmp8_ = switcher_new (); g_object_ref_sink (_tmp8_); _g_object_unref0 (self->priv->m_switcher); self->priv->m_switcher = _tmp8_; panel_bind_switch_shortcut (self); if (self->priv->m_switcher_delay_time >= 0) { Switcher* _tmp9_; _tmp9_ = self->priv->m_switcher; switcher_set_popup_delay_time (_tmp9_, (guint) self->priv->m_switcher_delay_time); } _tmp10_ = property_manager_new (); _property_manager_unref0 (self->priv->m_property_manager); self->priv->m_property_manager = _tmp10_; _tmp11_ = self->priv->m_property_manager; g_signal_connect_object (_tmp11_, "property-activate", (GCallback) ___lambda88__property_manager_property_activate, self, 0); _tmp12_ = property_panel_new (); g_object_ref_sink (_tmp12_); _g_object_unref0 (self->priv->m_property_panel); self->priv->m_property_panel = _tmp12_; _tmp13_ = self->priv->m_property_panel; g_signal_connect_object (_tmp13_, "property-activate", (GCallback) ___lambda89__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 __lambda32_ (Panel* self, const gchar* key) { GSettings* _tmp0_; gchar** _tmp1_; gchar** _tmp2_; gchar** _tmp3_; gint _tmp3__length1; g_return_if_fail (key != NULL); _tmp0_ = self->priv->m_settings_general; _tmp2_ = _tmp1_ = g_settings_get_strv (_tmp0_, key); _tmp3_ = _tmp2_; _tmp3__length1 = _vala_array_length (_tmp1_); panel_update_engines (self, _tmp3_, (gint) _vala_array_length (_tmp1_), NULL, (gint) 0); _tmp3_ = (_vala_array_free (_tmp3_, _tmp3__length1, (GDestroyNotify) g_free), NULL); } static void ___lambda32__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda32_ ((Panel*) self, key); } static void __lambda34_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_switcher_delay_time (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_system_keyboard_layout (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_embed_preedit_text (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_set_use_global_engine (self); } static void ___lambda37__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda37_ ((Panel*) self, key); } static void __lambda38_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_use_xmodmap (self); } static void ___lambda38__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda38_ ((Panel*) self, key); } static void __lambda39_ (Panel* self, const gchar* key) { GList* _tmp0_; g_return_if_fail (key != NULL); _tmp0_ = self->priv->m_keybindings; binding_common_unbind_switch_shortcut (BINDING_COMMON_KEY_EVENT_FUNC_TYPE_IME_SWITCHER, _tmp0_); (self->priv->m_keybindings == NULL) ? NULL : (self->priv->m_keybindings = (_g_list_free__g_object_unref0_ (self->priv->m_keybindings), NULL)); self->priv->m_keybindings = NULL; panel_bind_switch_shortcut (self); } static void ___lambda39__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda39_ ((Panel*) self, key); } static void __lambda61_ (Panel* self, const gchar* key) { GSettings* _tmp0_; g_return_if_fail (key != NULL); _tmp0_ = self->priv->m_settings_panel; binding_common_set_custom_font (_tmp0_, NULL, &self->priv->m_css_provider); } static void ___lambda61__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda61_ ((Panel*) self, key); } static void __lambda62_ (Panel* self, const gchar* key) { GSettings* _tmp0_; g_return_if_fail (key != NULL); _tmp0_ = self->priv->m_settings_panel; binding_common_set_custom_font (_tmp0_, NULL, &self->priv->m_css_provider); } static void ___lambda62__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda62_ ((Panel*) self, key); } static void __lambda63_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_show_icon_on_systray (self); } static void ___lambda63__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda63_ ((Panel*) self, key); } static void __lambda64_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_lookup_table_orientation (self); } static void ___lambda64__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda64_ ((Panel*) self, key); } static void __lambda65_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_show_property_panel (self); } static void ___lambda65__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda65_ ((Panel*) self, key); } static void __lambda66_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_timeout_property_panel (self); } static void ___lambda66__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda66_ ((Panel*) self, key); } static void __lambda67_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_follow_input_cursor_when_always_shown_property_panel (self); } static void ___lambda67__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda67_ ((Panel*) self, key); } static void __lambda68_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_xkb_icon_rgba (self); } static void ___lambda68__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda68_ ((Panel*) self, key); } static void __lambda69_ (Panel* self, const gchar* key) { g_return_if_fail (key != NULL); panel_set_property_icon_delay_time (self); } static void ___lambda69__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda69_ ((Panel*) self, key); } static void panel_init_settings (Panel* self) { GSettings* _tmp0_; GSettings* _tmp1_; GSettings* _tmp2_; GSettings* _tmp3_; GSettings* _tmp4_; GSettings* _tmp5_; GSettings* _tmp6_; GSettings* _tmp7_; GSettings* _tmp8_; GSettings* _tmp9_; GSettings* _tmp10_; GSettings* _tmp11_; GSettings* _tmp12_; GSettings* _tmp13_; GSettings* _tmp14_; GSettings* _tmp15_; GSettings* _tmp16_; GSettings* _tmp17_; GSettings* _tmp18_; 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) ___lambda32__g_settings_changed, self, 0); _tmp4_ = self->priv->m_settings_general; g_signal_connect_object (_tmp4_, "changed::switcher-delay-time", (GCallback) ___lambda34__g_settings_changed, self, 0); _tmp5_ = self->priv->m_settings_general; g_signal_connect_object (_tmp5_, "changed::use-system-keyboard-layout", (GCallback) ___lambda35__g_settings_changed, self, 0); _tmp6_ = self->priv->m_settings_general; g_signal_connect_object (_tmp6_, "changed::embed-preedit-text", (GCallback) ___lambda36__g_settings_changed, self, 0); _tmp7_ = self->priv->m_settings_general; g_signal_connect_object (_tmp7_, "changed::use-global-engine", (GCallback) ___lambda37__g_settings_changed, self, 0); _tmp8_ = self->priv->m_settings_general; g_signal_connect_object (_tmp8_, "changed::use-xmodmap", (GCallback) ___lambda38__g_settings_changed, self, 0); _tmp9_ = self->priv->m_settings_hotkey; g_signal_connect_object (_tmp9_, "changed::triggers", (GCallback) ___lambda39__g_settings_changed, self, 0); _tmp10_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp10_, "changed::custom-font", (GCallback) ___lambda61__g_settings_changed, self, 0); _tmp11_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp11_, "changed::use-custom-font", (GCallback) ___lambda62__g_settings_changed, self, 0); _tmp12_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp12_, "changed::show-icon-on-systray", (GCallback) ___lambda63__g_settings_changed, self, 0); _tmp13_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp13_, "changed::lookup-table-orientation", (GCallback) ___lambda64__g_settings_changed, self, 0); _tmp14_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp14_, "changed::show", (GCallback) ___lambda65__g_settings_changed, self, 0); _tmp15_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp15_, "changed::timeout", (GCallback) ___lambda66__g_settings_changed, self, 0); _tmp16_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp16_, "changed::follow-input-cursor-when-always-shown", (GCallback) ___lambda67__g_settings_changed, self, 0); _tmp17_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp17_, "changed::xkb-icon-rgba", (GCallback) ___lambda68__g_settings_changed, self, 0); _tmp18_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp18_, "changed::property-icon-delay-time", (GCallback) ___lambda69__g_settings_changed, self, 0); } static void panel_popup_menu_at_area_window (Panel* self, GtkMenu* menu, GdkRectangle* area, GdkWindow* window, GtkMenuPositionFunc func, gpointer func_target) { GdkGravity rect_anchor = 0; GdkGravity menu_anchor = 0; GdkRectangle _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (menu != NULL); g_return_if_fail (area != NULL); rect_anchor = GDK_GRAVITY_SOUTH_WEST; menu_anchor = GDK_GRAVITY_NORTH_WEST; _tmp0_ = *area; gtk_menu_popup_at_rect (menu, window, &_tmp0_, rect_anchor, menu_anchor, NULL); } static gboolean panel_is_kde (void) { const gchar* _tmp0_; gboolean result = FALSE; _tmp0_ = g_getenv ("XDG_CURRENT_DESKTOP"); if (g_strcmp0 (_tmp0_, "KDE") == 0) { result = TRUE; return result; } g_warning ("panel.vala:255: %s", "If you launch KDE5 on xterm, " "export XDG_CURRENT_DESKTOP=KDE before launch KDE5."); result = FALSE; return result; } static void panel_popup_menu_at_pointer_window (Panel* self, GtkMenu* menu, gint x, gint y, GdkWindow* window, GtkMenuPositionFunc func, gpointer func_target) { gint win_x = 0; gint win_y = 0; gint _tmp0_ = 0; gint _tmp1_ = 0; GdkRectangle area = {0}; GdkRectangle _tmp2_ = {0}; GdkRectangle _tmp3_; g_return_if_fail (self != NULL); g_return_if_fail (menu != NULL); win_x = 0; win_y = 0; gdk_window_get_origin (window, &_tmp0_, &_tmp1_); win_x = _tmp0_; win_y = _tmp1_; _tmp2_.x = x - win_x; _tmp2_.y = y - win_y; _tmp2_.width = 1; _tmp2_.height = 1; area = _tmp2_; _tmp3_ = area; panel_popup_menu_at_area_window (self, menu, &_tmp3_, window, func, func_target); } static void ___lambda71_ (Panel* self) { Indicator* _tmp0_; _tmp0_ = self->priv->m_indicator; indicator_set_status (_tmp0_, INDICATOR_STATUS_ACTIVE); g_signal_emit_by_name ((IBusPanelService*) self, "state-changed"); } static void ____lambda71__indicator_registered_status_notifier_item (Indicator* _sender, gpointer self) { ___lambda71_ ((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 ___lambda72_ (Panel* self, gint x, gint y, GdkWindow* w, guint b, guint t) { GtkMenu* _tmp0_; GtkMenu* _tmp1_; Indicator* _tmp2_; g_return_if_fail (w != NULL); _tmp0_ = panel_create_context_menu (self); _tmp1_ = _tmp0_; _tmp2_ = self->priv->m_indicator; panel_popup_menu_at_pointer_window (self, _tmp1_, x, y, w, _indicator_position_context_menu_gtk_menu_position_func, _tmp2_); _g_object_unref0 (_tmp1_); } static void ____lambda72__indicator_context_menu (Indicator* _sender, gint x, gint y, GdkWindow* window, guint button, guint activate_time, gpointer self) { ___lambda72_ ((Panel*) self, x, y, window, 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 ___lambda79_ (Panel* self, gint x, gint y, GdkWindow* w) { GtkMenu* _tmp0_; GtkMenu* _tmp1_; Indicator* _tmp2_; g_return_if_fail (w != NULL); _tmp0_ = panel_create_activate_menu (self); _tmp1_ = _tmp0_; _tmp2_ = self->priv->m_indicator; panel_popup_menu_at_pointer_window (self, _tmp1_, x, y, w, _indicator_position_activate_menu_gtk_menu_position_func, _tmp2_); _g_object_unref0 (_tmp1_); } static void ____lambda79__indicator_activate (Indicator* _sender, gint x, gint y, GdkWindow* window, gpointer self) { ___lambda79_ ((Panel*) self, x, y, window); } static void __lambda70_ (Panel* self, GObject* obj, GAsyncResult* res) { GError* _inner_error0_ = NULL; g_return_if_fail (res != NULL); { GDBusConnection* _tmp0_ = NULL; GDBusConnection* _tmp1_; GDBusConnection* _tmp2_; GDBusConnection* _tmp3_; Indicator* _tmp4_; Indicator* _tmp5_; Indicator* _tmp6_; gulong _tmp7_; Indicator* _tmp8_; gulong _tmp9_; Indicator* _tmp10_; gulong _tmp11_; _tmp1_ = g_bus_get_finish (res, &_inner_error0_); _tmp0_ = _tmp1_; if (G_UNLIKELY (_inner_error0_ != NULL)) { if (_inner_error0_->domain == G_IO_ERROR) { goto __catch0_g_io_error; } g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } _tmp2_ = _tmp0_; _tmp0_ = NULL; _g_object_unref0 (self->priv->m_session_bus_connection); self->priv->m_session_bus_connection = _tmp2_; _tmp3_ = self->priv->m_session_bus_connection; _tmp4_ = indicator_new ("ibus-ui-gtk3", _tmp3_, INDICATOR_CATEGORY_APPLICATION_STATUS); g_object_ref_sink (_tmp4_); _g_object_unref0 (self->priv->m_indicator); self->priv->m_indicator = _tmp4_; _tmp5_ = self->priv->m_indicator; indicator_set_title (_tmp5_, _ ("IBus Panel")); _tmp6_ = self->priv->m_indicator; _tmp7_ = g_signal_connect_object (_tmp6_, "registered-status-notifier-item", (GCallback) ____lambda71__indicator_registered_status_notifier_item, self, 0); self->priv->m_registered_status_notifier_item_id = _tmp7_; _tmp8_ = self->priv->m_indicator; _tmp9_ = g_signal_connect_object (_tmp8_, "context-menu", (GCallback) ____lambda72__indicator_context_menu, self, 0); self->priv->m_popup_menu_id = _tmp9_; _tmp10_ = self->priv->m_indicator; _tmp11_ = g_signal_connect_object (_tmp10_, "activate", (GCallback) ____lambda79__indicator_activate, self, 0); self->priv->m_activate_id = _tmp11_; _g_object_unref0 (_tmp0_); } goto __finally0; __catch0_g_io_error: { GError* e = NULL; GError* _tmp12_; const gchar* _tmp13_; e = _inner_error0_; _inner_error0_ = NULL; _tmp12_ = e; _tmp13_ = _tmp12_->message; g_warning ("panel.vala:304: Failed to get the session bus: %s", _tmp13_); _g_error_free0 (e); } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } } static void ___lambda70__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self) { __lambda70_ ((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, ___lambda70__gasync_ready_callback, g_object_ref (self)); } static void _panel_init_status_icon_menu_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self) { panel_init_status_icon_menu ((Panel*) self); } static void panel_init_status_icon (Panel* self) { GtkStatusIcon* _tmp0_; GtkStatusIcon* _tmp1_; GtkStatusIcon* _tmp2_; GtkStatusIcon* _tmp3_; 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; gtk_status_icon_set_title (_tmp2_, _ ("IBus Panel")); _tmp3_ = self->priv->m_status_icon; if (gtk_status_icon_get_size (_tmp3_) > 0) { panel_init_status_icon_menu (self); } else { GtkStatusIcon* _tmp4_; _tmp4_ = self->priv->m_status_icon; g_signal_connect_object ((GObject*) _tmp4_, "notify::size", (GCallback) _panel_init_status_icon_menu_g_object_notify, self, 0); } } 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; (_data6_->func_target_destroy_notify == NULL) ? NULL : (_data6_->func_target_destroy_notify (_data6_->func_target), NULL); _data6_->func = NULL; _data6_->func_target = NULL; _data6_->func_target_destroy_notify = NULL; _g_object_unref0 (_data6_->window); _g_object_unref0 (self); g_slice_free (Block6Data, _data6_); } } static void __lambda81_ (Block6Data* _data6_, guint b, guint t) { Panel* self; GtkMenu* _tmp0_; GtkMenu* _tmp1_; GdkRectangle _tmp2_; GdkWindow* _tmp3_; GtkMenuPositionFunc _tmp4_; gpointer _tmp4__target; self = _data6_->self; _tmp0_ = panel_create_context_menu (self); _tmp1_ = _tmp0_; _tmp2_ = _data6_->area; _tmp3_ = _data6_->window; _tmp4_ = _data6_->func; _tmp4__target = _data6_->func_target; panel_popup_menu_at_area_window (self, _tmp1_, &_tmp2_, _tmp3_, _tmp4_, _tmp4__target); _g_object_unref0 (_tmp1_); } static void ___lambda81__gtk_status_icon_popup_menu (GtkStatusIcon* _sender, guint button, guint activate_time, gpointer self) { __lambda81_ (self, button, activate_time); } static void __lambda82_ (Block6Data* _data6_) { Panel* self; GtkMenu* _tmp0_; GtkMenu* _tmp1_; GdkRectangle _tmp2_; GdkWindow* _tmp3_; GtkMenuPositionFunc _tmp4_; gpointer _tmp4__target; self = _data6_->self; _tmp0_ = panel_create_activate_menu (self); _tmp1_ = _tmp0_; _tmp2_ = _data6_->area; _tmp3_ = _data6_->window; _tmp4_ = _data6_->func; _tmp4__target = _data6_->func_target; panel_popup_menu_at_area_window (self, _tmp1_, &_tmp2_, _tmp3_, _tmp4_, _tmp4__target); _g_object_unref0 (_tmp1_); } static void ___lambda82__gtk_status_icon_activate (GtkStatusIcon* _sender, gpointer self) { __lambda82_ (self); } static void panel_init_status_icon_menu (Panel* self) { Block6Data* _data6_; GdkRectangle _tmp0_ = {0}; GdkDisplay* _tmp1_; GtkStatusIcon* _tmp2_; GdkX11Window* _tmp3_; GdkWindow* _tmp4_; GdkWindow* _tmp5_; GtkOrientation orient = 0; GtkStatusIcon* _tmp6_; GdkRectangle _tmp7_ = {0}; GtkOrientation _tmp8_ = 0; gint win_x = 0; gint win_y = 0; GdkWindow* _tmp9_; gint _tmp10_ = 0; gint _tmp11_ = 0; GtkStatusIcon* _tmp12_; gulong _tmp13_; GtkStatusIcon* _tmp14_; gulong _tmp15_; GtkStatusIcon* _tmp16_; g_return_if_fail (self != NULL); _data6_ = g_slice_new0 (Block6Data); _data6_->_ref_count_ = 1; _data6_->self = g_object_ref (self); _tmp0_.x = 0; _tmp0_.y = 0; _tmp0_.width = 0; _tmp0_.height = 0; _data6_->area = _tmp0_; _data6_->window = NULL; _data6_->func = NULL; _data6_->func_target = NULL; _data6_->func_target_destroy_notify = NULL; _tmp1_ = gdk_display_get_default (); _tmp2_ = self->priv->m_status_icon; _tmp3_ = gdk_x11_window_lookup_for_display (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, gdk_x11_display_get_type ()) ? ((GdkX11Display*) _tmp1_) : NULL, (Window) gtk_status_icon_get_x11_window_id (_tmp2_)); _tmp4_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, gdk_window_get_type ()) ? ((GdkWindow*) _tmp3_) : NULL); _g_object_unref0 (_data6_->window); _data6_->window = _tmp4_; _tmp5_ = _data6_->window; if (_tmp5_ == NULL) { g_warning ("panel.vala:331: StatusIcon does not have GdkWindow"); block6_data_unref (_data6_); _data6_ = NULL; return; } _tmp6_ = self->priv->m_status_icon; gtk_status_icon_get_geometry (_tmp6_, NULL, &_tmp7_, &_tmp8_); _data6_->area = _tmp7_; orient = _tmp8_; win_x = 0; win_y = 0; _tmp9_ = _data6_->window; gdk_window_get_origin (_tmp9_, &_tmp10_, &_tmp11_); win_x = _tmp10_; win_y = _tmp11_; _data6_->area.x = _data6_->area.x - win_x; _data6_->area.y = _data6_->area.y - win_y; _tmp12_ = self->priv->m_status_icon; _tmp13_ = g_signal_connect_data (_tmp12_, "popup-menu", (GCallback) ___lambda81__gtk_status_icon_popup_menu, block6_data_ref (_data6_), (GClosureNotify) block6_data_unref, 0); self->priv->m_popup_menu_id = _tmp13_; _tmp14_ = self->priv->m_status_icon; _tmp15_ = g_signal_connect_data (_tmp14_, "activate", (GCallback) ___lambda82__gtk_status_icon_activate, block6_data_ref (_data6_), (GClosureNotify) block6_data_unref, 0); self->priv->m_activate_id = _tmp15_; _tmp16_ = self->priv->m_status_icon; gtk_status_icon_set_from_icon_name (_tmp16_, "ibus-keyboard"); block6_data_unref (_data6_); _data6_ = NULL; } static void _panel_handle_engine_switch_normal_keybinding_manager_keybinding_handler_func (GdkEvent* event, gpointer self) { panel_handle_engine_switch_normal ((Panel*) self, event); } static void _panel_handle_engine_switch_reverse_keybinding_manager_keybinding_handler_func (GdkEvent* event, gpointer self) { panel_handle_engine_switch_reverse ((Panel*) self, event); } static void panel_bind_switch_shortcut (Panel* self) { gchar** accelerators = NULL; GSettings* _tmp0_; gchar** _tmp1_; gchar** _tmp2_; gint accelerators_length1; gint _accelerators_size_; KeybindingManager* keybinding_manager = NULL; KeybindingManager* _tmp3_; gchar** _tmp4_; gint _tmp4__length1; 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 < accelerator_collection_length1; accelerator_it = accelerator_it + 1) { gchar* _tmp5_; gchar* accelerator = NULL; _tmp5_ = g_strdup (accelerator_collection[accelerator_it]); accelerator = _tmp5_; { KeybindingManager* _tmp6_; const gchar* _tmp7_; _tmp6_ = keybinding_manager; _tmp7_ = accelerator; binding_common_keybinding_manager_bind (_tmp6_, &self->priv->m_keybindings, _tmp7_, BINDING_COMMON_KEY_EVENT_FUNC_TYPE_IME_SWITCHER, _panel_handle_engine_switch_normal_keybinding_manager_keybinding_handler_func, self, _panel_handle_engine_switch_reverse_keybinding_manager_keybinding_handler_func, self); _g_free0 (accelerator); } } } _g_object_unref0 (keybinding_manager); accelerators = (_vala_array_free (accelerators, accelerators_length1, (GDestroyNotify) g_free), 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:". */ static GList* panel_get_engines_from_xkb (Panel* self, GList* engines) { 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_; gchar** layout_array = NULL; const gchar* _tmp4_; gchar** _tmp5_; gchar** _tmp6_; gint layout_array_length1; gint _layout_array_size_; gchar** variant_array = NULL; const gchar* _tmp7_; gchar** _tmp8_; gchar** _tmp9_; gint variant_array_length1; gint _variant_array_size_; GList* _tmp45_; GList* result = NULL; 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) { gchar** _tmp12_; gint _tmp12__length1; gchar* layout = NULL; gchar** _tmp13_; gint _tmp13__length1; const gchar* _tmp14_; gchar* _tmp15_; gchar* variant = NULL; IBusEngineDesc* current_engine = NULL; gchar** _tmp16_; gint _tmp16__length1; const gchar* _tmp20_; IBusEngineDesc* _tmp35_; if (!_tmp10_) { gint _tmp11_; _tmp11_ = i; i = _tmp11_ + 1; } _tmp10_ = FALSE; _tmp12_ = layout_array; _tmp12__length1 = layout_array_length1; if (!(i < _tmp12__length1)) { break; } _tmp13_ = layout_array; _tmp13__length1 = layout_array_length1; _tmp14_ = _tmp13_[i]; _tmp15_ = g_strdup (_tmp14_); layout = _tmp15_; variant = NULL; current_engine = NULL; _tmp16_ = variant_array; _tmp16__length1 = variant_array_length1; if (i < _tmp16__length1) { gchar** _tmp17_; gint _tmp17__length1; const gchar* _tmp18_; gchar* _tmp19_; _tmp17_ = variant_array; _tmp17__length1 = variant_array_length1; _tmp18_ = _tmp17_[i]; _tmp19_ = g_strdup (_tmp18_); _g_free0 (variant); variant = _tmp19_; } _tmp20_ = variant; if (_tmp20_ == NULL) { gchar* _tmp21_; _tmp21_ = g_strdup (""); _g_free0 (variant); variant = _tmp21_; } { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = engines; 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* _tmp22_; const gchar* _tmp23_; gchar* _tmp24_; const gchar* _tmp25_; gboolean _tmp26_ = FALSE; IBusEngineDesc* _tmp27_; const gchar* _tmp28_; const gchar* _tmp29_; _tmp22_ = engine; _tmp23_ = ibus_engine_desc_get_name (_tmp22_); _tmp24_ = g_strdup (_tmp23_); name = _tmp24_; _tmp25_ = name; if (!g_str_has_prefix (_tmp25_, "xkb:")) { _g_free0 (name); continue; } _tmp27_ = engine; _tmp28_ = ibus_engine_desc_get_layout (_tmp27_); _tmp29_ = layout; if (g_strcmp0 (_tmp28_, _tmp29_) == 0) { IBusEngineDesc* _tmp30_; const gchar* _tmp31_; const gchar* _tmp32_; _tmp30_ = engine; _tmp31_ = ibus_engine_desc_get_layout_variant (_tmp30_); _tmp32_ = variant; _tmp26_ = g_strcmp0 (_tmp31_, _tmp32_) == 0; } else { _tmp26_ = FALSE; } if (_tmp26_) { IBusEngineDesc* _tmp33_; IBusEngineDesc* _tmp34_; _tmp33_ = engine; _tmp34_ = _g_object_ref0 (_tmp33_); _g_object_unref0 (current_engine); current_engine = _tmp34_; _g_free0 (name); break; } _g_free0 (name); } } } _tmp35_ = current_engine; if (_tmp35_ != NULL) { IBusEngineDesc* _tmp36_; IBusEngineDesc* _tmp37_; _tmp36_ = current_engine; _tmp37_ = _g_object_ref0 (_tmp36_); xkb_engines = g_list_append (xkb_engines, _tmp37_); } else { GList* _tmp38_; IBusEngineDesc* _tmp39_; GList* _tmp40_; _tmp38_ = xkb_engines; _tmp39_ = us_engine; _tmp40_ = g_list_find (_tmp38_, _tmp39_); if (_tmp40_ == NULL) { const gchar* _tmp41_; const gchar* _tmp42_; IBusEngineDesc* _tmp43_; IBusEngineDesc* _tmp44_; _tmp41_ = layout; _tmp42_ = variant; g_warning ("panel.vala:449: Fallback %s(%s) to us layout.", _tmp41_, _tmp42_); _tmp43_ = us_engine; _tmp44_ = _g_object_ref0 (_tmp43_); xkb_engines = g_list_append (xkb_engines, _tmp44_); } } _g_object_unref0 (current_engine); _g_free0 (variant); _g_free0 (layout); } } } _tmp45_ = xkb_engines; if (g_list_length (_tmp45_) == ((guint) 0)) { g_warning ("panel.vala:455: 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 __lambda90_ (IBusEngineDesc* a, IBusEngineDesc* b) { gint result = 0; g_return_val_if_fail (a != NULL, 0); g_return_val_if_fail (b != NULL, 0); result = ((gint) ibus_engine_desc_get_rank (b)) - ((gint) ibus_engine_desc_get_rank (a)); return result; } static gint ___lambda90__gcompare_func (gconstpointer a, gconstpointer b) { gint result; result = __lambda90_ ((IBusEngineDesc*) a, (IBusEngineDesc*) b); return result; } static GList* panel_get_engines_from_locale (Panel* self, GList* engines) { gchar* locale = NULL; const gchar* _tmp0_; gchar* _tmp1_; const gchar* _tmp2_; gchar* lang = NULL; const gchar* _tmp4_; gchar** _tmp5_; gchar** _tmp6_; gchar** _tmp7_; gint _tmp7__length1; const gchar* _tmp8_; gchar* _tmp9_; gchar* _tmp10_; GList* im_engines = NULL; GList* _tmp22_; GList* _tmp40_; GList* result = NULL; 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_; _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; { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = engines; 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* _tmp11_; const gchar* _tmp12_; gchar* _tmp13_; const gchar* _tmp14_; gboolean _tmp15_ = FALSE; IBusEngineDesc* _tmp16_; const gchar* _tmp17_; const gchar* _tmp18_; _tmp11_ = engine; _tmp12_ = ibus_engine_desc_get_name (_tmp11_); _tmp13_ = g_strdup (_tmp12_); name = _tmp13_; _tmp14_ = name; if (g_str_has_prefix (_tmp14_, "xkb:")) { _g_free0 (name); continue; } _tmp16_ = engine; _tmp17_ = ibus_engine_desc_get_language (_tmp16_); _tmp18_ = lang; if (g_strcmp0 (_tmp17_, _tmp18_) == 0) { IBusEngineDesc* _tmp19_; _tmp19_ = engine; _tmp15_ = ibus_engine_desc_get_rank (_tmp19_) > ((guint) 0); } else { _tmp15_ = FALSE; } if (_tmp15_) { IBusEngineDesc* _tmp20_; IBusEngineDesc* _tmp21_; _tmp20_ = engine; _tmp21_ = _g_object_ref0 (_tmp20_); im_engines = g_list_append (im_engines, _tmp21_); } _g_free0 (name); } } } _tmp22_ = im_engines; if (g_list_length (_tmp22_) == ((guint) 0)) { const gchar* _tmp23_; gchar** _tmp24_; gchar** _tmp25_; gchar** _tmp26_; gint _tmp26__length1; const gchar* _tmp27_; gchar* _tmp28_; _tmp23_ = lang; _tmp25_ = _tmp24_ = g_strsplit (_tmp23_, "_", 0); _tmp26_ = _tmp25_; _tmp26__length1 = _vala_array_length (_tmp24_); _tmp27_ = _tmp26_[0]; _tmp28_ = g_strdup (_tmp27_); _g_free0 (lang); lang = _tmp28_; _tmp26_ = (_vala_array_free (_tmp26_, _tmp26__length1, (GDestroyNotify) g_free), NULL); { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = engines; 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* _tmp29_; const gchar* _tmp30_; gchar* _tmp31_; const gchar* _tmp32_; gboolean _tmp33_ = FALSE; IBusEngineDesc* _tmp34_; const gchar* _tmp35_; const gchar* _tmp36_; _tmp29_ = engine; _tmp30_ = ibus_engine_desc_get_name (_tmp29_); _tmp31_ = g_strdup (_tmp30_); name = _tmp31_; _tmp32_ = name; if (g_str_has_prefix (_tmp32_, "xkb:")) { _g_free0 (name); continue; } _tmp34_ = engine; _tmp35_ = ibus_engine_desc_get_language (_tmp34_); _tmp36_ = lang; if (g_strcmp0 (_tmp35_, _tmp36_) == 0) { IBusEngineDesc* _tmp37_; _tmp37_ = engine; _tmp33_ = ibus_engine_desc_get_rank (_tmp37_) > ((guint) 0); } else { _tmp33_ = FALSE; } if (_tmp33_) { IBusEngineDesc* _tmp38_; IBusEngineDesc* _tmp39_; _tmp38_ = engine; _tmp39_ = _g_object_ref0 (_tmp38_); im_engines = g_list_append (im_engines, _tmp39_); } _g_free0 (name); } } } } _tmp40_ = im_engines; if (g_list_length (_tmp40_) == ((guint) 0)) { result = im_engines; _g_free0 (lang); _g_free0 (locale); return result; } im_engines = g_list_sort (im_engines, ___lambda90__gcompare_func); result = im_engines; _g_free0 (lang); _g_free0 (locale); return result; } static void _vala_array_add17 (gchar** * array, gint* length, gint* 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, gint* length, gint* 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_; GSettings* _tmp1_; gchar** _tmp2_; gchar** _tmp3_; gchar** _tmp4_; gint _tmp4__length1; GSettings* _tmp5_; gchar** _tmp6_; gchar** _tmp7_; gchar** _tmp8_; gint _tmp8__length1; gboolean _tmp9_; GList* engines = NULL; IBusBus* _tmp10_; GList* _tmp11_; GList* xkb_engines = NULL; GList* _tmp12_; GList* _tmp13_; GList* im_engines = NULL; GList* _tmp14_; GList* _tmp15_; gchar** names = NULL; gchar** _tmp16_; gint names_length1; gint _names_size_; GList* _tmp17_; GList* _tmp22_; GSettings* _tmp27_; gchar** _tmp28_; gint _tmp28__length1; 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_, (gint) _vala_array_length (_tmp2_)); _tmp4_ = (_vala_array_free (_tmp4_, _tmp4__length1, (GDestroyNotify) g_free), NULL); if (self->priv->inited_engines_order) { return; } _tmp5_ = self->priv->m_settings_general; _tmp7_ = _tmp6_ = g_settings_get_strv (_tmp5_, "preload-engines"); _tmp8_ = _tmp7_; _tmp8__length1 = _vala_array_length (_tmp6_); _tmp9_ = _vala_array_length (_tmp6_) > 0; _tmp8_ = (_vala_array_free (_tmp8_, _tmp8__length1, (GDestroyNotify) g_free), NULL); if (_tmp9_) { return; } _tmp10_ = self->priv->m_bus; _tmp11_ = ibus_bus_list_engines (_tmp10_); engines = _tmp11_; _tmp12_ = engines; _tmp13_ = panel_get_engines_from_xkb (self, _tmp12_); xkb_engines = _tmp13_; _tmp14_ = engines; _tmp15_ = panel_get_engines_from_locale (self, _tmp14_); im_engines = _tmp15_; _tmp16_ = g_new0 (gchar*, 0 + 1); names = _tmp16_; names_length1 = 0; _names_size_ = names_length1; _tmp17_ = xkb_engines; { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = _tmp17_; for (engine_it = engine_collection; engine_it != NULL; engine_it = engine_it->next) { IBusEngineDesc* engine = NULL; engine = (IBusEngineDesc*) engine_it->data; { gchar** _tmp18_; gint _tmp18__length1; IBusEngineDesc* _tmp19_; const gchar* _tmp20_; gchar* _tmp21_; _tmp18_ = names; _tmp18__length1 = names_length1; _tmp19_ = engine; _tmp20_ = ibus_engine_desc_get_name (_tmp19_); _tmp21_ = g_strdup (_tmp20_); _vala_array_add17 (&names, &names_length1, &_names_size_, _tmp21_); } } } _tmp22_ = im_engines; { GList* engine_collection = NULL; GList* engine_it = NULL; engine_collection = _tmp22_; for (engine_it = engine_collection; engine_it != NULL; engine_it = engine_it->next) { IBusEngineDesc* engine = NULL; engine = (IBusEngineDesc*) engine_it->data; { gchar** _tmp23_; gint _tmp23__length1; IBusEngineDesc* _tmp24_; const gchar* _tmp25_; gchar* _tmp26_; _tmp23_ = names; _tmp23__length1 = names_length1; _tmp24_ = engine; _tmp25_ = ibus_engine_desc_get_name (_tmp24_); _tmp26_ = g_strdup (_tmp25_); _vala_array_add18 (&names, &names_length1, &_names_size_, _tmp26_); } } } _tmp27_ = self->priv->m_settings_general; _tmp28_ = names; _tmp28__length1 = names_length1; g_settings_set_strv (_tmp27_, "preload-engines", _tmp28_); names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); (im_engines == NULL) ? NULL : (im_engines = (_g_list_free__g_object_unref0_ (im_engines), NULL)); (xkb_engines == NULL) ? NULL : (xkb_engines = (_g_list_free__g_object_unref0_ (xkb_engines), NULL)); (engines == NULL) ? NULL : (engines = (_g_list_free__g_object_unref0_ (engines), NULL)); } static void panel_set_switcher_delay_time (Panel* self) { GSettings* _tmp0_; gboolean _tmp1_ = FALSE; Switcher* _tmp2_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_general; self->priv->m_switcher_delay_time = g_settings_get_int (_tmp0_, "switcher-delay-time"); _tmp2_ = self->priv->m_switcher; if (_tmp2_ != NULL) { _tmp1_ = self->priv->m_switcher_delay_time >= 0; } else { _tmp1_ = FALSE; } if (_tmp1_) { Switcher* _tmp3_; _tmp3_ = self->priv->m_switcher; switcher_set_popup_delay_time (_tmp3_, (guint) self->priv->m_switcher_delay_time); } } static void panel_set_use_system_keyboard_layout (Panel* self) { GSettings* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_general; self->priv->m_use_system_keyboard_layout = g_settings_get_boolean (_tmp0_, "use-system-keyboard-layout"); } static void panel_set_embed_preedit_text (Panel* self) { GVariant* variant = NULL; GSettings* _tmp0_; GVariant* _tmp1_; GVariant* _tmp2_; IBusBus* _tmp3_; GVariant* _tmp4_; 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_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_general; self->priv->m_use_global_engine = g_settings_get_boolean (_tmp0_, "use-global-engine"); } static void panel_set_use_xmodmap (Panel* self) { XKBLayout* _tmp0_; GSettings* _tmp1_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_xkblayout; _tmp1_ = self->priv->m_settings_general; xkb_layout_set_use_xmodmap (_tmp0_, g_settings_get_boolean (_tmp1_, "use-xmodmap")); } static void panel_set_show_icon_on_systray (Panel* self) { PanelIconType _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_icon_type; if (_tmp0_ == PANEL_ICON_TYPE_STATUS_ICON) { GtkStatusIcon* _tmp1_; GtkStatusIcon* _tmp2_; GSettings* _tmp3_; _tmp1_ = self->priv->m_status_icon; if (_tmp1_ == NULL) { return; } _tmp2_ = self->priv->m_status_icon; _tmp3_ = self->priv->m_settings_panel; gtk_status_icon_set_visible (_tmp2_, g_settings_get_boolean (_tmp3_, "show-icon-on-systray")); } else { PanelIconType _tmp4_; _tmp4_ = self->priv->m_icon_type; if (_tmp4_ == PANEL_ICON_TYPE_INDICATOR) { Indicator* _tmp5_; GSettings* _tmp6_; _tmp5_ = self->priv->m_indicator; if (_tmp5_ == NULL) { return; } _tmp6_ = self->priv->m_settings_panel; if (g_settings_get_boolean (_tmp6_, "show-icon-on-systray")) { Indicator* _tmp7_; _tmp7_ = self->priv->m_indicator; indicator_set_status (_tmp7_, INDICATOR_STATUS_ACTIVE); } else { Indicator* _tmp8_; _tmp8_ = self->priv->m_indicator; indicator_set_status (_tmp8_, INDICATOR_STATUS_PASSIVE); } } } } static void panel_set_lookup_table_orientation (Panel* self) { CandidatePanel* _tmp0_; CandidatePanel* _tmp1_; GSettings* _tmp2_; 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; candidate_panel_set_vertical (_tmp1_, g_settings_get_int (_tmp2_, "lookup-table-orientation") == ((gint) IBUS_ORIENTATION_VERTICAL)); } static void panel_set_show_property_panel (Panel* self) { PropertyPanel* _tmp0_; PropertyPanel* _tmp1_; GSettings* _tmp2_; 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; property_panel_set_show (_tmp1_, g_settings_get_int (_tmp2_, "show")); } static void panel_set_timeout_property_panel (Panel* self) { PropertyPanel* _tmp0_; PropertyPanel* _tmp1_; GSettings* _tmp2_; 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; property_panel_set_auto_hide_timeout (_tmp1_, (guint) g_settings_get_int (_tmp2_, "auto-hide-timeout")); } static void panel_set_follow_input_cursor_when_always_shown_property_panel (Panel* self) { PropertyPanel* _tmp0_; PropertyPanel* _tmp1_; GSettings* _tmp2_; 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; property_panel_set_follow_input_cursor_when_always_shown (_tmp1_, g_settings_get_boolean (_tmp2_, "follow-input-cursor-when-always-shown")); } static void panel_set_xkb_icon_rgba (Panel* self) { gchar* spec = NULL; GSettings* _tmp0_; gchar* _tmp1_; GdkRGBA rgba = {0}; GdkRGBA _tmp2_ = {0}; const gchar* _tmp3_; PanelIconType _tmp7_; 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; if (!gdk_rgba_parse (&rgba, _tmp3_)) { const gchar* _tmp4_; GdkRGBA _tmp5_ = {0}; _tmp4_ = spec; g_warning ("panel.vala:634: invalid format of xkb-icon-rgba: %s", _tmp4_); memset (&_tmp5_, 0, sizeof (GdkRGBA)); _tmp5_.red = 0.0; _tmp5_.green = 0.0; _tmp5_.blue = 0.0; _tmp5_.alpha = 1.0; self->priv->m_xkb_icon_rgba = _tmp5_; } else { GdkRGBA _tmp6_; _tmp6_ = rgba; self->priv->m_xkb_icon_rgba = _tmp6_; } _tmp7_ = self->priv->m_icon_type; if (_tmp7_ == PANEL_ICON_TYPE_STATUS_ICON) { GHashTable* _tmp8_; _tmp8_ = self->priv->m_xkb_icon_pixbufs; if (g_hash_table_size (_tmp8_) > ((guint) 0)) { GHashTable* _tmp9_; gboolean _tmp10_ = FALSE; GtkStatusIcon* _tmp11_; _tmp9_ = self->priv->m_xkb_icon_pixbufs; g_hash_table_remove_all (_tmp9_); _tmp11_ = self->priv->m_status_icon; if (_tmp11_ != NULL) { Switcher* _tmp12_; _tmp12_ = self->priv->m_switcher; _tmp10_ = _tmp12_ != NULL; } else { _tmp10_ = FALSE; } if (_tmp10_) { g_signal_emit_by_name ((IBusPanelService*) self, "state-changed"); } } } else { PanelIconType _tmp13_; _tmp13_ = self->priv->m_icon_type; if (_tmp13_ == PANEL_ICON_TYPE_INDICATOR) { GHashTable* _tmp14_; _tmp14_ = self->priv->m_xkb_icon_image; if (g_hash_table_size (_tmp14_) > ((guint) 0)) { GHashTable* _tmp15_; gboolean _tmp16_ = FALSE; Indicator* _tmp17_; _tmp15_ = self->priv->m_xkb_icon_image; g_hash_table_remove_all (_tmp15_); _tmp17_ = self->priv->m_indicator; if (_tmp17_ != NULL) { Switcher* _tmp18_; _tmp18_ = self->priv->m_switcher; _tmp16_ = _tmp18_ != NULL; } else { _tmp16_ = FALSE; } if (_tmp16_) { g_signal_emit_by_name ((IBusPanelService*) self, "state-changed"); } } } } _g_free0 (spec); } static void panel_set_property_icon_delay_time (Panel* self) { GSettings* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_panel; self->priv->m_property_icon_delay_time = g_settings_get_int (_tmp0_, "property-icon-delay-time"); } static gint panel_compare_versions (Panel* self, const gchar* version1, const gchar* version2) { gchar** version1_list = NULL; gchar** _tmp0_; gchar** _tmp1_; gint version1_list_length1; gint _version1_list_size_; gchar** version2_list = NULL; gchar** _tmp2_; gchar** _tmp3_; gint version2_list_length1; gint _version2_list_size_; gint major1 = 0; gint minor1 = 0; gint micro1 = 0; gint major2 = 0; gint minor2 = 0; gint micro2 = 0; gchar** _tmp4_; gint _tmp4__length1; gchar** _tmp5_; gint _tmp5__length1; gchar** _tmp6_; gint _tmp6__length1; const gchar* _tmp7_; gchar** _tmp8_; gint _tmp8__length1; const gchar* _tmp9_; gchar** _tmp10_; gint _tmp10__length1; const gchar* _tmp11_; gchar** _tmp12_; gint _tmp12__length1; const gchar* _tmp13_; gchar** _tmp14_; gint _tmp14__length1; const gchar* _tmp15_; gchar** _tmp16_; gint _tmp16__length1; const gchar* _tmp17_; gboolean _tmp18_ = FALSE; gboolean _tmp19_ = FALSE; gboolean _tmp20_ = FALSE; gboolean _tmp21_ = FALSE; gint result = 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); _tmp1_ = _tmp0_ = g_strsplit (version1, ".", 0); version1_list = _tmp1_; version1_list_length1 = _vala_array_length (_tmp0_); _version1_list_size_ = version1_list_length1; _tmp3_ = _tmp2_ = g_strsplit (version2, ".", 0); version2_list = _tmp3_; version2_list_length1 = _vala_array_length (_tmp2_); _version2_list_size_ = version2_list_length1; if (g_strcmp0 (version1, version2) == 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; } if (g_strcmp0 (version1, "") == 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; } if (g_strcmp0 (version2, "") == 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; } _tmp4_ = version1_list; _tmp4__length1 = version1_list_length1; _vala_assert (_tmp4__length1 >= 3, "version1_list.length >= 3"); _tmp5_ = version2_list; _tmp5__length1 = version2_list_length1; _vala_assert (_tmp5__length1 >= 3, "version2_list.length >= 3"); _tmp6_ = version1_list; _tmp6__length1 = version1_list_length1; _tmp7_ = _tmp6_[0]; major1 = atoi (_tmp7_); _tmp8_ = version1_list; _tmp8__length1 = version1_list_length1; _tmp9_ = _tmp8_[1]; minor1 = atoi (_tmp9_); _tmp10_ = version1_list; _tmp10__length1 = version1_list_length1; _tmp11_ = _tmp10_[2]; micro1 = atoi (_tmp11_); _tmp12_ = version2_list; _tmp12__length1 = version2_list_length1; _tmp13_ = _tmp12_[0]; major2 = atoi (_tmp13_); _tmp14_ = version2_list; _tmp14__length1 = version2_list_length1; _tmp15_ = _tmp14_[1]; minor2 = atoi (_tmp15_); _tmp16_ = version2_list; _tmp16__length1 = version2_list_length1; _tmp17_ = _tmp16_[2]; micro2 = atoi (_tmp17_); if (major1 == minor1) { _tmp19_ = minor1 == minor2; } else { _tmp19_ = FALSE; } if (_tmp19_) { _tmp18_ = micro1 == micro2; } else { _tmp18_ = FALSE; } if (_tmp18_) { 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; } if (major1 > major2) { _tmp21_ = TRUE; } else { gboolean _tmp22_ = FALSE; if (major1 == major2) { _tmp22_ = minor1 > minor2; } else { _tmp22_ = FALSE; } _tmp21_ = _tmp22_; } if (_tmp21_) { _tmp20_ = TRUE; } else { gboolean _tmp23_ = FALSE; gboolean _tmp24_ = FALSE; if (major1 == major2) { _tmp24_ = minor1 == minor2; } else { _tmp24_ = FALSE; } if (_tmp24_) { _tmp23_ = micro1 > micro2; } else { _tmp23_ = FALSE; } _tmp20_ = _tmp23_; } if (_tmp20_) { 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_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_; gchar* _tmp1_; gchar* current_version = NULL; const gchar* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; const gchar* _tmp5_; GSettings* _tmp6_; const gchar* _tmp7_; 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; if (panel_compare_versions (self, _tmp2_, "1.5.8") < 0) { panel_update_version_1_5_8 (self); } _tmp3_ = g_strdup_printf ("%d.%d.%d", IBUS_MAJOR_VERSION, IBUS_MINOR_VERSION, IBUS_MICRO_VERSION); _g_free0 (current_version); current_version = _tmp3_; _tmp4_ = prev_version; _tmp5_ = current_version; if (g_strcmp0 (_tmp4_, _tmp5_) == 0) { _g_free0 (current_version); _g_free0 (prev_version); return; } _tmp6_ = self->priv->m_settings_general; _tmp7_ = current_version; g_settings_set_string (_tmp6_, "version", _tmp7_); _g_free0 (current_version); _g_free0 (prev_version); } void panel_load_settings (Panel* self) { GSettings* _tmp0_; gchar** _tmp1_; gchar** _tmp2_; gchar** _tmp3_; gint _tmp3__length1; GSettings* _tmp4_; gchar** _tmp5_; gchar** _tmp6_; gchar** _tmp7_; gint _tmp7__length1; GList* _tmp8_; GSettings* _tmp9_; 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_, (gint) _vala_array_length (_tmp1_), _tmp7_, (gint) _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); _tmp8_ = self->priv->m_keybindings; binding_common_unbind_switch_shortcut (BINDING_COMMON_KEY_EVENT_FUNC_TYPE_ANY, _tmp8_); (self->priv->m_keybindings == NULL) ? NULL : (self->priv->m_keybindings = (_g_list_free__g_object_unref0_ (self->priv->m_keybindings), NULL)); self->priv->m_keybindings = NULL; panel_bind_switch_shortcut (self); panel_set_switcher_delay_time (self); panel_set_embed_preedit_text (self); _tmp9_ = self->priv->m_settings_panel; binding_common_set_custom_font (_tmp9_, NULL, &self->priv->m_css_provider); 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); } /** * disconnect_signals: * * Call this API before m_panel = null so that the ref_count becomes 0 */ void panel_disconnect_signals (Panel* self) { GObject* object = NULL; GtkStatusIcon* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_status_icon; object = (GObject*) _tmp0_; if (self->priv->m_is_kde) { Indicator* _tmp1_; _tmp1_ = self->priv->m_indicator; object = (GObject*) _tmp1_; } if (self->priv->m_popup_menu_id > ((gulong) 0)) { GObject* _tmp2_; _tmp2_ = object; if (g_signal_handler_is_connected (_tmp2_, self->priv->m_popup_menu_id)) { GObject* _tmp3_; _tmp3_ = object; g_signal_handler_disconnect (_tmp3_, self->priv->m_popup_menu_id); } self->priv->m_popup_menu_id = (gulong) 0; } if (self->priv->m_activate_id > ((gulong) 0)) { GObject* _tmp4_; _tmp4_ = object; if (g_signal_handler_is_connected (_tmp4_, self->priv->m_activate_id)) { GObject* _tmp5_; _tmp5_ = object; g_signal_handler_disconnect (_tmp5_, self->priv->m_activate_id); } self->priv->m_activate_id = (gulong) 0; } if (self->priv->m_registered_status_notifier_item_id > ((gulong) 0)) { GObject* _tmp6_; _tmp6_ = object; if (g_signal_handler_is_connected (_tmp6_, self->priv->m_registered_status_notifier_item_id)) { GObject* _tmp7_; _tmp7_ = object; g_signal_handler_disconnect (_tmp7_, self->priv->m_registered_status_notifier_item_id); } self->priv->m_registered_status_notifier_item_id = (gulong) 0; } if (self->priv->m_preload_engines_id > ((guint) 0)) { g_source_remove (self->priv->m_preload_engines_id); self->priv->m_preload_engines_id = (guint) 0; } } static void panel_engine_contexts_insert (Panel* self, IBusEngineDesc* engine) { GHashTable* _tmp0_; GHashTable* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; IBusEngineDesc* _tmp5_; g_return_if_fail (self != NULL); g_return_if_fail (engine != NULL); if (self->priv->m_use_global_engine) { return; } _tmp0_ = self->priv->m_engine_contexts; if (g_hash_table_size (_tmp0_) >= ((guint) 200)) { GHashTable* _tmp1_; g_warning ("panel.vala:797: Contexts by windows are too much counted!"); _tmp1_ = self->priv->m_engine_contexts; g_hash_table_remove_all (_tmp1_); } _tmp2_ = self->priv->m_engine_contexts; _tmp3_ = self->priv->m_current_context_path; _tmp4_ = g_strdup (_tmp3_); _tmp5_ = _g_object_ref0 (engine); g_hash_table_replace (_tmp2_, _tmp4_, _tmp5_); } static void panel_set_engine (Panel* self, IBusEngineDesc* engine) { IBusBus* _tmp0_; const gchar* _tmp1_; gchar* _tmp3_; g_return_if_fail (self != NULL); g_return_if_fail (engine != NULL); if (self->priv->m_property_icon_delay_time_id > ((guint) 0)) { g_source_remove (self->priv->m_property_icon_delay_time_id); self->priv->m_property_icon_delay_time_id = (guint) 0; } _tmp0_ = self->priv->m_bus; _tmp1_ = ibus_engine_desc_get_name (engine); if (!ibus_bus_set_global_engine (_tmp0_, _tmp1_)) { const gchar* _tmp2_; _tmp2_ = ibus_engine_desc_get_name (engine); g_warning ("panel.vala:811: Switch engine to %s failed.", _tmp2_); return; } _tmp3_ = g_strdup (""); _g_free0 (self->priv->m_icon_prop_key); self->priv->m_icon_prop_key = _tmp3_; if (!self->priv->m_use_system_keyboard_layout) { XKBLayout* _tmp4_; _tmp4_ = self->priv->m_xkblayout; xkb_layout_set_layout (_tmp4_, engine); } panel_engine_contexts_insert (self, engine); } static void panel_switch_engine (Panel* self, gint i, gboolean force) { gboolean _tmp0_ = FALSE; gboolean _tmp2_ = FALSE; IBusEngineDesc* engine = NULL; IBusEngineDesc** _tmp3_; gint _tmp3__length1; IBusEngineDesc* _tmp4_; IBusEngineDesc* _tmp5_; IBusEngineDesc* _tmp6_; g_return_if_fail (self != NULL); if (i >= 0) { IBusEngineDesc** _tmp1_; gint _tmp1__length1; _tmp1_ = self->priv->m_engines; _tmp1__length1 = self->priv->m_engines_length1; _tmp0_ = i < _tmp1__length1; } else { _tmp0_ = FALSE; } _vala_assert (_tmp0_, "i >= 0 && i < m_engines.length"); if (i == 0) { _tmp2_ = !force; } else { _tmp2_ = FALSE; } if (_tmp2_) { return; } _tmp3_ = self->priv->m_engines; _tmp3__length1 = self->priv->m_engines_length1; _tmp4_ = _tmp3_[i]; _tmp5_ = _g_object_ref0 (_tmp4_); engine = _tmp5_; _tmp6_ = engine; panel_set_engine (self, _tmp6_); _g_object_unref0 (engine); } static void panel_handle_engine_switch_normal (Panel* self, GdkEvent* event) { g_return_if_fail (self != NULL); g_return_if_fail (event != NULL); panel_handle_engine_switch (self, event, FALSE); } static void panel_handle_engine_switch_reverse (Panel* self, GdkEvent* event) { g_return_if_fail (self != NULL); g_return_if_fail (event != NULL); panel_handle_engine_switch (self, event, TRUE); } static void panel_handle_engine_switch (Panel* self, GdkEvent* event, gboolean reverse) { IBusEngineDesc** _tmp0_; gint _tmp0__length1; guint keyval = 0U; GdkEventKey* _tmp1_; GdkEventKey* _tmp2_; guint modifiers = 0U; GdkEventKey* _tmp3_; GdkEventKey* _tmp4_; GdkModifierType _tmp5_; guint primary_modifiers = 0U; GdkEventKey* _tmp6_; GdkEventKey* _tmp7_; GdkModifierType _tmp8_; gboolean pressed = FALSE; gboolean _tmp9_ = 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_ = (GdkEventKey *) (event); _tmp2_ = _tmp1_; keyval = _tmp2_->keyval; _tmp3_ = (GdkEventKey *) (event); _tmp4_ = _tmp3_; _tmp5_ = _tmp4_->state; modifiers = KEYBINDING_MANAGER_MODIFIER_FILTER & _tmp5_; _tmp6_ = (GdkEventKey *) (event); _tmp7_ = _tmp6_; _tmp8_ = _tmp7_->state; primary_modifiers = (guint) keybinding_manager_get_primary_modifier ((guint) _tmp8_); pressed = keybinding_manager_primary_modifier_still_pressed (event, primary_modifiers); if (reverse) { modifiers &= (guint) (~GDK_SHIFT_MASK); } if (pressed) { _tmp9_ = self->priv->m_switcher_delay_time >= 0; } else { _tmp9_ = FALSE; } if (_tmp9_) { gint _tmp10_ = 0; gint i = 0; Switcher* _tmp12_; IBusEngineDesc** _tmp13_; gint _tmp13__length1; const gchar* _tmp14_; if (reverse) { IBusEngineDesc** _tmp11_; gint _tmp11__length1; _tmp11_ = self->priv->m_engines; _tmp11__length1 = self->priv->m_engines_length1; _tmp10_ = _tmp11__length1 - 1; } else { _tmp10_ = 1; } i = _tmp10_; _tmp12_ = self->priv->m_switcher; _tmp13_ = self->priv->m_engines; _tmp13__length1 = self->priv->m_engines_length1; _tmp14_ = self->priv->m_real_current_context_path; i = switcher_run (_tmp12_, keyval, modifiers, event, _tmp13_, (gint) _tmp13__length1, i, _tmp14_); if (i < 0) { g_debug ("panel.vala:882: switch cancelled"); } else { if (i == 0) { g_debug ("panel.vala:884: do not have to switch"); } else { panel_switcher_focus_set_engine (self); } } } else { gint _tmp15_ = 0; gint i = 0; if (reverse) { IBusEngineDesc** _tmp16_; gint _tmp16__length1; _tmp16_ = self->priv->m_engines; _tmp16__length1 = self->priv->m_engines_length1; _tmp15_ = _tmp16__length1 - 1; } else { _tmp15_ = 1; } i = _tmp15_; panel_switch_engine (self, i, FALSE); } } 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_)) { Panel* self; self = _data7_->self; _data7_->names = (_vala_array_free (_data7_->names, _data7_->names_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (self); g_slice_free (Block7Data, _data7_); } } static void _vala_array_add19 (gchar** * array, gint* length, gint* 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 __lambda33_ (Block7Data* _data7_) { Panel* self; IBusBus* _tmp0_; IBusBus* _tmp1_; gchar** _tmp2_; gint _tmp2__length1; gboolean result = FALSE; self = _data7_->self; _tmp0_ = self->priv->m_bus; if (!ibus_bus_is_connected (_tmp0_)) { result = FALSE; return result; } _tmp1_ = self->priv->m_bus; _tmp2_ = _data7_->names; _tmp2__length1 = _data7_->names_length1; ibus_bus_preload_engines_async (_tmp1_, _tmp2_, -1, NULL, NULL, NULL); result = FALSE; return result; } static gboolean ___lambda33__gsource_func (gpointer self) { gboolean result; result = __lambda33_ (self); return result; } static void panel_run_preload_engines (Panel* self, IBusEngineDesc** engines, gint engines_length1, gint index) { Block7Data* _data7_; gchar** _tmp0_; gchar** _tmp1_; gint _tmp1__length1; IBusEngineDesc* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; g_return_if_fail (self != NULL); _data7_ = g_slice_new0 (Block7Data); _data7_->_ref_count_ = 1; _data7_->self = g_object_ref (self); _tmp0_ = g_new0 (gchar*, 0 + 1); _data7_->names = _tmp0_; _data7_->names_length1 = 0; _data7_->_names_size_ = _data7_->names_length1; if (engines_length1 <= index) { block7_data_unref (_data7_); _data7_ = NULL; return; } if (self->priv->m_preload_engines_id != ((guint) 0)) { g_source_remove (self->priv->m_preload_engines_id); self->priv->m_preload_engines_id = (guint) 0; } _tmp1_ = _data7_->names; _tmp1__length1 = _data7_->names_length1; _tmp2_ = engines[index]; _tmp3_ = ibus_engine_desc_get_name (_tmp2_); _tmp4_ = g_strdup (_tmp3_); _vala_array_add19 (&_data7_->names, &_data7_->names_length1, &_data7_->_names_size_, _tmp4_); self->priv->m_preload_engines_id = g_timeout_add_full (G_PRIORITY_DEFAULT, PANEL_PRELOAD_ENGINES_DELAY_TIME, ___lambda33__gsource_func, block7_data_ref (_data7_), block7_data_unref); block7_data_unref (_data7_); _data7_ = NULL; } static gchar** _vala_array_dup2 (gchar** self, gint length) { gchar** result; gint i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } static gboolean _vala_string_array_contains (gchar* * stack, gint stack_length, const gchar* needle) { gint i; for (i = 0; i < stack_length; i++) { if (g_strcmp0 (stack[i], needle) == 0) { return TRUE; } } return FALSE; } static void _vala_array_add20 (gchar** * array, gint* length, gint* 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_add21 (gchar** * array, gint* length, gint* 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, gint length) { IBusEngineDesc** result; gint i; result = g_new0 (IBusEngineDesc*, length + 1); for (i = 0; i < length; i++) { IBusEngineDesc* _tmp0_; _tmp0_ = _g_object_ref0 (self[i]); result[i] = _tmp0_; } return result; } static IBusEngineDesc** _vala_array_dup4 (IBusEngineDesc** self, gint length) { IBusEngineDesc** result; gint i; result = g_new0 (IBusEngineDesc*, length + 1); for (i = 0; i < length; i++) { IBusEngineDesc* _tmp0_; _tmp0_ = _g_object_ref0 (self[i]); result[i] = _tmp0_; } return result; } static void panel_update_engines (Panel* self, gchar** unowned_engine_names, gint unowned_engine_names_length1, gchar** order_names, gint order_names_length1) { gchar** engine_names = NULL; gchar** _tmp0_; gint _tmp0__length1; gint engine_names_length1; gint _engine_names_size_; gboolean _tmp1_ = FALSE; gchar** _tmp2_; gint _tmp2__length1; gchar** names = NULL; gchar** _tmp6_; gint names_length1; gint _names_size_; gchar** _tmp13_; gint _tmp13__length1; IBusEngineDesc** engines = NULL; IBusBus* _tmp20_; gchar** _tmp21_; gint _tmp21__length1; IBusEngineDesc** _tmp22_; IBusEngineDesc** _tmp23_; gint engines_length1; gint _engines_size_; IBusEngineDesc** _tmp24_; gint _tmp24__length1; IBusEngineDesc** _tmp33_; gint _tmp33__length1; g_return_if_fail (self != NULL); _tmp0_ = (unowned_engine_names != NULL) ? _vala_array_dup2 (unowned_engine_names, unowned_engine_names_length1) : ((gpointer) unowned_engine_names); _tmp0__length1 = unowned_engine_names_length1; engine_names = _tmp0_; engine_names_length1 = _tmp0__length1; _engine_names_size_ = engine_names_length1; _tmp2_ = engine_names; _tmp2__length1 = engine_names_length1; if (_tmp2_ == NULL) { _tmp1_ = TRUE; } else { gchar** _tmp3_; gint _tmp3__length1; _tmp3_ = engine_names; _tmp3__length1 = engine_names_length1; _tmp1_ = _tmp3__length1 == 0; } if (_tmp1_) { gchar* _tmp4_; gchar** _tmp5_; _tmp4_ = g_strdup ("xkb:us::eng"); _tmp5_ = g_new0 (gchar*, 1 + 1); _tmp5_[0] = _tmp4_; engine_names = (_vala_array_free (engine_names, engine_names_length1, (GDestroyNotify) g_free), NULL); engine_names = _tmp5_; engine_names_length1 = 1; _engine_names_size_ = engine_names_length1; } _tmp6_ = g_new0 (gchar*, 0 + 1); names = _tmp6_; names_length1 = 0; _names_size_ = names_length1; { gchar** name_collection = NULL; gint name_collection_length1 = 0; gint _name_collection_size_ = 0; gint name_it = 0; name_collection = order_names; name_collection_length1 = order_names_length1; for (name_it = 0; name_it < name_collection_length1; name_it = name_it + 1) { gchar* _tmp7_; gchar* name = NULL; _tmp7_ = g_strdup (name_collection[name_it]); name = _tmp7_; { const gchar* _tmp8_; gchar** _tmp9_; gint _tmp9__length1; _tmp8_ = name; _tmp9_ = engine_names; _tmp9__length1 = engine_names_length1; if (_vala_string_array_contains (_tmp9_, _tmp9__length1, _tmp8_)) { gchar** _tmp10_; gint _tmp10__length1; const gchar* _tmp11_; gchar* _tmp12_; _tmp10_ = names; _tmp10__length1 = names_length1; _tmp11_ = name; _tmp12_ = g_strdup (_tmp11_); _vala_array_add20 (&names, &names_length1, &_names_size_, _tmp12_); } _g_free0 (name); } } } _tmp13_ = engine_names; _tmp13__length1 = engine_names_length1; { gchar** name_collection = NULL; gint name_collection_length1 = 0; gint _name_collection_size_ = 0; gint name_it = 0; name_collection = _tmp13_; name_collection_length1 = _tmp13__length1; for (name_it = 0; name_it < name_collection_length1; name_it = name_it + 1) { gchar* _tmp14_; gchar* name = NULL; _tmp14_ = g_strdup (name_collection[name_it]); name = _tmp14_; { const gchar* _tmp15_; gchar** _tmp16_; gint _tmp16__length1; gchar** _tmp17_; gint _tmp17__length1; const gchar* _tmp18_; gchar* _tmp19_; _tmp15_ = name; _tmp16_ = names; _tmp16__length1 = names_length1; if (_vala_string_array_contains (_tmp16_, _tmp16__length1, _tmp15_)) { _g_free0 (name); continue; } _tmp17_ = names; _tmp17__length1 = names_length1; _tmp18_ = name; _tmp19_ = g_strdup (_tmp18_); _vala_array_add21 (&names, &names_length1, &_names_size_, _tmp19_); _g_free0 (name); } } } _tmp20_ = self->priv->m_bus; _tmp21_ = names; _tmp21__length1 = names_length1; _tmp23_ = _tmp22_ = ibus_bus_get_engines_by_names (_tmp20_, _tmp21_); engines = _tmp23_; engines_length1 = _vala_array_length (_tmp22_); _engines_size_ = engines_length1; _tmp24_ = engines; _tmp24__length1 = engines_length1; if (_tmp24__length1 == 0) { gchar* _tmp25_; gchar** _tmp26_; GSettings* _tmp27_; gchar** _tmp28_; gint _tmp28__length1; IBusBus* _tmp29_; gchar** _tmp30_; gint _tmp30__length1; IBusEngineDesc** _tmp31_; IBusEngineDesc** _tmp32_; _tmp25_ = g_strdup ("xkb:us::eng"); _tmp26_ = g_new0 (gchar*, 1 + 1); _tmp26_[0] = _tmp25_; names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); names = _tmp26_; names_length1 = 1; _names_size_ = names_length1; _tmp27_ = self->priv->m_settings_general; _tmp28_ = names; _tmp28__length1 = names_length1; g_settings_set_strv (_tmp27_, "preload-engines", _tmp28_); _tmp29_ = self->priv->m_bus; _tmp30_ = names; _tmp30__length1 = names_length1; _tmp32_ = _tmp31_ = ibus_bus_get_engines_by_names (_tmp29_, _tmp30_); engines = (_vala_array_free (engines, engines_length1, (GDestroyNotify) g_object_unref), NULL); engines = _tmp32_; engines_length1 = _vala_array_length (_tmp31_); _engines_size_ = engines_length1; } _tmp33_ = self->priv->m_engines; _tmp33__length1 = self->priv->m_engines_length1; if (_tmp33__length1 == 0) { IBusEngineDesc** _tmp34_; gint _tmp34__length1; IBusEngineDesc** _tmp35_; gint _tmp35__length1; IBusEngineDesc** _tmp36_; gint _tmp36__length1; _tmp34_ = engines; _tmp34__length1 = engines_length1; _tmp35_ = (_tmp34_ != NULL) ? _vala_array_dup3 (_tmp34_, _tmp34__length1) : ((gpointer) _tmp34_); _tmp35__length1 = _tmp34__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 = _tmp35_; self->priv->m_engines_length1 = _tmp35__length1; self->priv->_m_engines_size_ = self->priv->m_engines_length1; panel_switch_engine (self, 0, TRUE); _tmp36_ = engines; _tmp36__length1 = engines_length1; panel_run_preload_engines (self, _tmp36_, (gint) _tmp36__length1, 1); } else { IBusEngineDesc* current_engine = NULL; IBusEngineDesc** _tmp37_; gint _tmp37__length1; IBusEngineDesc* _tmp38_; IBusEngineDesc* _tmp39_; IBusEngineDesc** _tmp40_; gint _tmp40__length1; IBusEngineDesc** _tmp41_; gint _tmp41__length1; gint i = 0; IBusEngineDesc** _tmp52_; gint _tmp52__length1; _tmp37_ = self->priv->m_engines; _tmp37__length1 = self->priv->m_engines_length1; _tmp38_ = _tmp37_[0]; _tmp39_ = _g_object_ref0 (_tmp38_); current_engine = _tmp39_; _tmp40_ = engines; _tmp40__length1 = engines_length1; _tmp41_ = (_tmp40_ != NULL) ? _vala_array_dup4 (_tmp40_, _tmp40__length1) : ((gpointer) _tmp40_); _tmp41__length1 = _tmp40__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 = _tmp41_; self->priv->m_engines_length1 = _tmp41__length1; self->priv->_m_engines_size_ = self->priv->m_engines_length1; { gboolean _tmp42_ = FALSE; i = 0; _tmp42_ = TRUE; while (TRUE) { IBusEngineDesc** _tmp44_; gint _tmp44__length1; IBusEngineDesc* _tmp45_; const gchar* _tmp46_; IBusEngineDesc** _tmp47_; gint _tmp47__length1; IBusEngineDesc* _tmp48_; const gchar* _tmp49_; if (!_tmp42_) { gint _tmp43_; _tmp43_ = i; i = _tmp43_ + 1; } _tmp42_ = FALSE; _tmp44_ = self->priv->m_engines; _tmp44__length1 = self->priv->m_engines_length1; if (!(i < _tmp44__length1)) { break; } _tmp45_ = current_engine; _tmp46_ = ibus_engine_desc_get_name (_tmp45_); _tmp47_ = engines; _tmp47__length1 = engines_length1; _tmp48_ = _tmp47_[i]; _tmp49_ = ibus_engine_desc_get_name (_tmp48_); if (g_strcmp0 (_tmp46_, _tmp49_) == 0) { panel_switch_engine (self, i, FALSE); if (i != 0) { IBusEngineDesc** _tmp50_; gint _tmp50__length1; _tmp50_ = engines; _tmp50__length1 = engines_length1; panel_run_preload_engines (self, _tmp50_, (gint) _tmp50__length1, 0); } else { IBusEngineDesc** _tmp51_; gint _tmp51__length1; _tmp51_ = engines; _tmp51__length1 = engines_length1; panel_run_preload_engines (self, _tmp51_, (gint) _tmp51__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); _tmp52_ = engines; _tmp52__length1 = engines_length1; panel_run_preload_engines (self, _tmp52_, (gint) _tmp52__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_; PangoLayout* layout = NULL; PangoLayout* _tmp1_; gint _tmp2_; gint _tmp3_; PangoLayout* _tmp5_; PangoFontDescription* _tmp6_; PangoLayout* _tmp7_; PangoLayout* _tmp8_; gint _tmp9_ = 0; gint _tmp10_ = 0; GdkRGBA _tmp11_; GdkRGBA _tmp12_; GdkRGBA _tmp13_; GdkRGBA _tmp14_; PangoLayout* _tmp15_; 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_ = pango_cairo_create_layout (cr); layout = _tmp1_; _tmp2_ = strlen (symbol); _tmp3_ = _tmp2_; if (_tmp3_ >= 3) { PangoFontDescription* _tmp4_; _tmp4_ = pango_font_description_from_string ("Monospace Bold 18"); __vala_PangoFontDescription_free0 (desc); desc = _tmp4_; } _tmp5_ = layout; _tmp6_ = desc; pango_layout_set_font_description (_tmp5_, _tmp6_); _tmp7_ = layout; pango_layout_set_text (_tmp7_, symbol, -1); _tmp8_ = layout; pango_layout_get_size (_tmp8_, &_tmp9_, &_tmp10_); lwidth = _tmp9_; lheight = _tmp10_; cairo_move_to (cr, (gdouble) ((image_width - (lwidth / PANGO_SCALE)) / 2), (gdouble) ((image_height - (lheight / PANGO_SCALE)) / 2)); _tmp11_ = self->priv->m_xkb_icon_rgba; _tmp12_ = self->priv->m_xkb_icon_rgba; _tmp13_ = self->priv->m_xkb_icon_rgba; _tmp14_ = self->priv->m_xkb_icon_rgba; cairo_set_source_rgba (cr, _tmp11_.red, _tmp12_.green, _tmp13_.blue, _tmp14_.alpha); _tmp15_ = layout; pango_cairo_show_layout (cr, _tmp15_); _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* image = NULL; cairo_surface_t* _tmp4_; cairo_t* cr = NULL; cairo_surface_t* _tmp5_; cairo_t* _tmp6_; gint width = 0; cairo_surface_t* _tmp7_; gint height = 0; cairo_surface_t* _tmp8_; gint stride = 0; cairo_surface_t* _tmp9_; cairo_t* _tmp10_; cairo_t* _tmp11_; cairo_t* _tmp12_; cairo_t* _tmp13_; cairo_t* _tmp14_; cairo_surface_t* _tmp15_; PanelIconType _tmp16_; cairo_surface_t* result = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (symbol != NULL, NULL); image = NULL; if (cache) { GHashTable* _tmp0_; gconstpointer _tmp1_; cairo_surface_t* _tmp2_; cairo_surface_t* _tmp3_; _tmp0_ = self->priv->m_xkb_icon_image; _tmp1_ = g_hash_table_lookup (_tmp0_, symbol); _tmp2_ = _cairo_surface_reference0 ((cairo_surface_t*) _tmp1_); _cairo_surface_destroy0 (image); image = _tmp2_; _tmp3_ = image; if (_tmp3_ != NULL) { result = image; return result; } } _tmp4_ = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 48, 48); _cairo_surface_destroy0 (image); image = _tmp4_; _tmp5_ = image; _tmp6_ = cairo_create (_tmp5_); cr = _tmp6_; _tmp7_ = image; width = cairo_image_surface_get_width (_tmp7_); _tmp8_ = image; height = cairo_image_surface_get_height (_tmp8_); _tmp9_ = image; stride = cairo_image_surface_get_stride (_tmp9_); _tmp10_ = cr; cairo_set_source_rgba (_tmp10_, 0.0, 0.0, 0.0, 0.0); _tmp11_ = cr; cairo_set_operator (_tmp11_, CAIRO_OPERATOR_SOURCE); _tmp12_ = cr; cairo_paint (_tmp12_); _tmp13_ = cr; cairo_set_operator (_tmp13_, CAIRO_OPERATOR_OVER); _tmp14_ = cr; panel_context_render_string (self, _tmp14_, symbol, width, height); _tmp15_ = image; cairo_surface_flush (_tmp15_); _tmp16_ = self->priv->m_icon_type; if (_tmp16_ == PANEL_ICON_TYPE_INDICATOR) { if (G_BYTE_ORDER == G_LITTLE_ENDIAN) { guint* data = NULL; cairo_surface_t* _tmp17_; guchar* _tmp18_; gint data_length1; gint _data_size_; gint length = 0; _tmp17_ = image; _tmp18_ = cairo_image_surface_get_data (_tmp17_); data = (guint*) _tmp18_; data_length1 = (-1 * sizeof (guchar)) / sizeof (guint); _data_size_ = data_length1; length = (stride * height) / ((gint) sizeof (guint)); { gint i = 0; i = 0; { gboolean _tmp19_ = FALSE; _tmp19_ = TRUE; while (TRUE) { guint* _tmp21_; gint _tmp21__length1; guint* _tmp22_; gint _tmp22__length1; guint _tmp23_; if (!_tmp19_) { gint _tmp20_; _tmp20_ = i; i = _tmp20_ + 1; } _tmp19_ = FALSE; if (!(i < length)) { break; } _tmp21_ = data; _tmp21__length1 = data_length1; _tmp22_ = data; _tmp22__length1 = data_length1; _tmp23_ = _tmp22_[i]; _tmp21_[i] = GUINT_TO_BE (_tmp23_); } } } } } if (cache) { GHashTable* _tmp24_; gchar* _tmp25_; cairo_surface_t* _tmp26_; cairo_surface_t* _tmp27_; _tmp24_ = self->priv->m_xkb_icon_image; _tmp25_ = g_strdup (symbol); _tmp26_ = image; _tmp27_ = _cairo_surface_reference0 (_tmp26_); g_hash_table_insert (_tmp24_, _tmp25_, _tmp27_); } result = image; _cairo_destroy0 (cr); return result; } static GdkPixbuf* panel_create_icon_pixbuf_with_string (Panel* self, const gchar* symbol) { GdkPixbuf* pixbuf = NULL; GHashTable* _tmp0_; gconstpointer _tmp1_; GdkPixbuf* _tmp2_; GdkPixbuf* _tmp3_; cairo_surface_t* image = NULL; cairo_surface_t* _tmp4_; gint width = 0; cairo_surface_t* _tmp5_; gint height = 0; cairo_surface_t* _tmp6_; cairo_surface_t* _tmp7_; GdkPixbuf* _tmp8_; GHashTable* _tmp9_; gchar* _tmp10_; GdkPixbuf* _tmp11_; GdkPixbuf* _tmp12_; GdkPixbuf* result = 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_ = g_hash_table_lookup (_tmp0_, symbol); _tmp2_ = _g_object_ref0 ((GdkPixbuf*) _tmp1_); pixbuf = _tmp2_; _tmp3_ = pixbuf; if (_tmp3_ != NULL) { result = pixbuf; return result; } _tmp4_ = panel_create_cairo_image_surface_with_string (self, symbol, FALSE); image = _tmp4_; _tmp5_ = image; width = cairo_image_surface_get_width (_tmp5_); _tmp6_ = image; height = cairo_image_surface_get_height (_tmp6_); _tmp7_ = image; _tmp8_ = gdk_pixbuf_get_from_surface (_tmp7_, 0, 0, width, height); _g_object_unref0 (pixbuf); pixbuf = _tmp8_; _tmp9_ = self->priv->m_xkb_icon_pixbufs; _tmp10_ = g_strdup (symbol); _tmp11_ = pixbuf; _tmp12_ = _g_object_ref0 (_tmp11_); g_hash_table_insert (_tmp9_, _tmp10_, _tmp12_); result = pixbuf; _cairo_surface_destroy0 (image); return result; } static void __lambda74_ (Panel* self, GPid pid, gint state) { if (pid != self->priv->m_setup_pid) { return; } self->priv->m_setup_pid = (GPid) 0; g_spawn_close_pid (pid); } static void ___lambda74__gchild_watch_func (GPid pid, gint status, gpointer self) { __lambda74_ ((Panel*) self, pid, status); } static void panel_show_setup_dialog (Panel* self) { gchar* binary = NULL; gchar* _tmp0_; GError* _inner_error0_ = NULL; g_return_if_fail (self != NULL); if (self->priv->m_setup_pid != ((GPid) 0)) { if (kill ((pid_t) self->priv->m_setup_pid, (gint) SIGUSR1) == 0) { return; } self->priv->m_setup_pid = (GPid) 0; } _tmp0_ = g_build_filename (BINDIR, "ibus-setup", NULL); binary = _tmp0_; { const gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; gchar** _tmp4_; gchar** _tmp5_; gint _tmp5__length1; GPid _tmp6_ = 0; _tmp1_ = binary; _tmp2_ = g_strdup (_tmp1_); _tmp3_ = g_strdup ("ibus-setup"); _tmp4_ = g_new0 (gchar*, 2 + 1); _tmp4_[0] = _tmp2_; _tmp4_[1] = _tmp3_; _tmp5_ = _tmp4_; _tmp5__length1 = 2; g_spawn_async (NULL, _tmp5_, NULL, G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, &_tmp6_, &_inner_error0_); self->priv->m_setup_pid = _tmp6_; _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_free), NULL); if (G_UNLIKELY (_inner_error0_ != NULL)) { if (_inner_error0_->domain == G_SPAWN_ERROR) { goto __catch0_g_spawn_error; } _g_free0 (binary); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } } goto __finally0; __catch0_g_spawn_error: { GError* e = NULL; const gchar* _tmp7_; GError* _tmp8_; const gchar* _tmp9_; e = _inner_error0_; _inner_error0_ = NULL; _tmp7_ = binary; _tmp8_ = e; _tmp9_ = _tmp8_->message; g_warning ("panel.vala:1070: Execute %s failed! %s", _tmp7_, _tmp9_); self->priv->m_setup_pid = (GPid) 0; _g_error_free0 (e); } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_free0 (binary); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } g_child_watch_add_full (G_PRIORITY_DEFAULT_IDLE, self->priv->m_setup_pid, ___lambda74__gchild_watch_func, g_object_ref (self), g_object_unref); _g_free0 (binary); } static void panel_show_about_dialog (Panel* self) { GtkAboutDialog* _tmp0_; GtkAboutDialog* _tmp21_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_about_dialog; if (_tmp0_ == NULL) { GtkAboutDialog* _tmp1_; GtkAboutDialog* _tmp2_; GtkAboutDialog* _tmp3_; gchar* copyright = NULL; gchar* _tmp4_; GtkAboutDialog* _tmp5_; const gchar* _tmp6_; GtkAboutDialog* _tmp7_; GtkAboutDialog* _tmp8_; GtkAboutDialog* _tmp9_; GtkAboutDialog* _tmp10_; gchar* _tmp11_; gchar** _tmp12_; gchar** _tmp13_; gint _tmp13__length1; GtkAboutDialog* _tmp14_; gchar* _tmp15_; gchar** _tmp16_; gchar** _tmp17_; gint _tmp17__length1; GtkAboutDialog* _tmp18_; GtkAboutDialog* _tmp19_; GtkAboutDialog* _tmp20_; _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-2019 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; gtk_about_dialog_set_comments (_tmp8_, _ ("IBus is an intelligent input bus for Linux/Unix.")); _tmp9_ = self->priv->m_about_dialog; gtk_about_dialog_set_website (_tmp9_, "https://github.com/ibus/ibus/wiki"); _tmp10_ = self->priv->m_about_dialog; _tmp11_ = g_strdup ("Peng Huang "); _tmp12_ = g_new0 (gchar*, 1 + 1); _tmp12_[0] = _tmp11_; _tmp13_ = _tmp12_; _tmp13__length1 = 1; gtk_about_dialog_set_authors (_tmp10_, _tmp13_); _tmp13_ = (_vala_array_free (_tmp13_, _tmp13__length1, (GDestroyNotify) g_free), NULL); _tmp14_ = self->priv->m_about_dialog; _tmp15_ = g_strdup ("Peng Huang "); _tmp16_ = g_new0 (gchar*, 1 + 1); _tmp16_[0] = _tmp15_; _tmp17_ = _tmp16_; _tmp17__length1 = 1; gtk_about_dialog_set_documenters (_tmp14_, _tmp17_); _tmp17_ = (_vala_array_free (_tmp17_, _tmp17__length1, (GDestroyNotify) g_free), NULL); _tmp18_ = self->priv->m_about_dialog; gtk_about_dialog_set_translator_credits (_tmp18_, _ ("translator-credits")); _tmp19_ = self->priv->m_about_dialog; gtk_about_dialog_set_logo_icon_name (_tmp19_, "ibus"); _tmp20_ = self->priv->m_about_dialog; gtk_window_set_icon_name ((GtkWindow*) _tmp20_, "ibus"); _g_free0 (copyright); } _tmp21_ = self->priv->m_about_dialog; if (!gtk_widget_get_visible ((GtkWidget*) _tmp21_)) { GtkAboutDialog* _tmp22_; GtkAboutDialog* _tmp23_; _tmp22_ = self->priv->m_about_dialog; gtk_dialog_run ((GtkDialog*) _tmp22_); _tmp23_ = self->priv->m_about_dialog; gtk_widget_hide ((GtkWidget*) _tmp23_); } else { GtkAboutDialog* _tmp24_; _tmp24_ = self->priv->m_about_dialog; gtk_window_present ((GtkWindow*) _tmp24_); } } static void ___lambda73_ (Panel* self, GtkMenuItem* i) { g_return_if_fail (i != NULL); panel_show_setup_dialog (self); } static void ____lambda73__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) { ___lambda73_ ((Panel*) self, _sender); } static void ___lambda75_ (Panel* self, GtkMenuItem* i) { IBusExtensionEvent* event = NULL; IBusExtensionEvent* _tmp0_; IBusExtensionEvent* _tmp1_; g_return_if_fail (i != NULL); _tmp0_ = ibus_extension_event_new ("name", "emoji", "is-enabled", TRUE, "params", "category-list", NULL); g_object_ref_sink (_tmp0_); event = _tmp0_; _tmp1_ = _g_object_ref0 (event); ibus_panel_service_panel_extension ((IBusPanelService*) self, _tmp1_); _g_object_unref0 (event); } static void ____lambda75__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) { ___lambda75_ ((Panel*) self, _sender); } static void ___lambda76_ (Panel* self, GtkMenuItem* i) { g_return_if_fail (i != NULL); panel_show_about_dialog (self); } static void ____lambda76__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) { ___lambda76_ ((Panel*) self, _sender); } static void ___lambda77_ (Panel* self, GtkMenuItem* i) { IBusBus* _tmp0_; g_return_if_fail (i != NULL); _tmp0_ = self->priv->m_bus; ibus_bus_exit (_tmp0_, TRUE); } static void ____lambda77__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) { ___lambda77_ ((Panel*) self, _sender); } static void ___lambda78_ (Panel* self, GtkMenuItem* i) { IBusBus* _tmp0_; g_return_if_fail (i != NULL); _tmp0_ = self->priv->m_bus; ibus_bus_exit (_tmp0_, FALSE); } static void ____lambda78__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) { ___lambda78_ ((Panel*) self, _sender); } static GtkMenu* panel_create_context_menu (Panel* self) { GtkMenu* _tmp0_; GtkMenu* _tmp26_; GtkMenu* _tmp27_; GtkMenu* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_sys_menu; if (_tmp0_ == NULL) { GtkMenuItem* item = NULL; GtkMenu* _tmp1_; GtkMenuItem* _tmp2_; GtkMenuItem* _tmp3_; GtkMenu* _tmp4_; GtkMenuItem* _tmp5_; GtkMenuItem* _tmp6_; GtkMenuItem* _tmp7_; GtkMenu* _tmp8_; GtkMenuItem* _tmp9_; GtkMenuItem* _tmp10_; GtkMenuItem* _tmp11_; GtkMenu* _tmp12_; GtkMenuItem* _tmp13_; GtkMenu* _tmp14_; GtkSeparatorMenuItem* _tmp15_; GtkSeparatorMenuItem* _tmp16_; GtkMenuItem* _tmp17_; GtkMenuItem* _tmp18_; GtkMenu* _tmp19_; GtkMenuItem* _tmp20_; GtkMenuItem* _tmp21_; GtkMenuItem* _tmp22_; GtkMenu* _tmp23_; GtkMenuItem* _tmp24_; GtkMenu* _tmp25_; _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_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_ ("Preferences")); g_object_ref_sink (_tmp2_); _g_object_unref0 (item); item = _tmp2_; _tmp3_ = item; g_signal_connect_object (_tmp3_, "activate", (GCallback) ____lambda73__gtk_menu_item_activate, self, 0); _tmp4_ = self->priv->m_sys_menu; _tmp5_ = item; gtk_menu_shell_append ((GtkMenuShell*) _tmp4_, _tmp5_); _tmp6_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_ ("Emoji Choice")); g_object_ref_sink (_tmp6_); _g_object_unref0 (item); item = _tmp6_; _tmp7_ = item; g_signal_connect_object (_tmp7_, "activate", (GCallback) ____lambda75__gtk_menu_item_activate, self, 0); _tmp8_ = self->priv->m_sys_menu; _tmp9_ = item; gtk_menu_shell_append ((GtkMenuShell*) _tmp8_, _tmp9_); _tmp10_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_ ("About")); g_object_ref_sink (_tmp10_); _g_object_unref0 (item); item = _tmp10_; _tmp11_ = item; g_signal_connect_object (_tmp11_, "activate", (GCallback) ____lambda76__gtk_menu_item_activate, self, 0); _tmp12_ = self->priv->m_sys_menu; _tmp13_ = item; gtk_menu_shell_append ((GtkMenuShell*) _tmp12_, _tmp13_); _tmp14_ = self->priv->m_sys_menu; _tmp15_ = (GtkSeparatorMenuItem*) gtk_separator_menu_item_new (); g_object_ref_sink (_tmp15_); _tmp16_ = _tmp15_; gtk_menu_shell_append ((GtkMenuShell*) _tmp14_, (GtkMenuItem*) _tmp16_); _g_object_unref0 (_tmp16_); _tmp17_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_ ("Restart")); g_object_ref_sink (_tmp17_); _g_object_unref0 (item); item = _tmp17_; _tmp18_ = item; g_signal_connect_object (_tmp18_, "activate", (GCallback) ____lambda77__gtk_menu_item_activate, self, 0); _tmp19_ = self->priv->m_sys_menu; _tmp20_ = item; gtk_menu_shell_append ((GtkMenuShell*) _tmp19_, _tmp20_); _tmp21_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_ ("Quit")); g_object_ref_sink (_tmp21_); _g_object_unref0 (item); item = _tmp21_; _tmp22_ = item; g_signal_connect_object (_tmp22_, "activate", (GCallback) ____lambda78__gtk_menu_item_activate, self, 0); _tmp23_ = self->priv->m_sys_menu; _tmp24_ = item; gtk_menu_shell_append ((GtkMenuShell*) _tmp23_, _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 Block8Data* block8_data_ref (Block8Data* _data8_) { g_atomic_int_inc (&_data8_->_ref_count_); return _data8_; } static void block8_data_unref (void * _userdata_) { Block8Data* _data8_; _data8_ = (Block8Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data8_->_ref_count_)) { Panel* self; self = _data8_->self; _g_object_unref0 (_data8_->e); _g_object_unref0 (self); g_slice_free (Block8Data, _data8_); } } static void ____lambda80_ (Block8Data* _data8_, GtkMenuItem* item) { Panel* self; self = _data8_->self; g_return_if_fail (item != NULL); { gint i = 0; i = 0; { gboolean _tmp0_ = FALSE; _tmp0_ = TRUE; while (TRUE) { IBusEngineDesc** _tmp2_; gint _tmp2__length1; IBusEngineDesc* _tmp3_; IBusEngineDesc** _tmp4_; gint _tmp4__length1; IBusEngineDesc* _tmp5_; if (!_tmp0_) { gint _tmp1_; _tmp1_ = i; i = _tmp1_ + 1; } _tmp0_ = FALSE; _tmp2_ = self->priv->m_engines; _tmp2__length1 = self->priv->m_engines_length1; if (!(i < _tmp2__length1)) { break; } _tmp3_ = _data8_->e; _tmp4_ = self->priv->m_engines; _tmp4__length1 = self->priv->m_engines_length1; _tmp5_ = _tmp4_[i]; if (_tmp3_ == _tmp5_) { panel_switch_engine (self, i, FALSE); break; } } } } } static void _____lambda80__gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) { ____lambda80_ (self, _sender); } static GtkMenu* panel_create_activate_menu (Panel* self) { GtkMenu* _tmp0_; PropertyManager* _tmp1_; GtkMenu* _tmp2_; GtkMenu* _tmp3_; GtkSeparatorMenuItem* _tmp4_; GtkSeparatorMenuItem* _tmp5_; IBusEngineDesc** _tmp6_; gint _tmp6__length1; GtkMenu* _tmp33_; GtkMenu* _tmp34_; GtkMenu* _tmp35_; GtkMenu* _tmp36_; GtkMenu* result = 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_, (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 < engine_collection_length1; engine_it = engine_it + 1) { IBusEngineDesc* _tmp7_; IBusEngineDesc* engine = NULL; _tmp7_ = _g_object_ref0 (engine_collection[engine_it]); engine = _tmp7_; { Block8Data* _data8_; gchar* language = NULL; IBusEngineDesc* _tmp8_; const gchar* _tmp9_; gchar* _tmp10_; gchar* longname = NULL; IBusEngineDesc* _tmp11_; const gchar* _tmp12_; gchar* _tmp13_; gchar* textdomain = NULL; IBusEngineDesc* _tmp14_; const gchar* _tmp15_; gchar* _tmp16_; gchar* transname = NULL; const gchar* _tmp17_; const gchar* _tmp18_; gchar* _tmp19_; GtkMenuItem* item = NULL; const gchar* _tmp20_; gchar* _tmp21_; gchar* _tmp22_; const gchar* _tmp23_; gchar* _tmp24_; gchar* _tmp25_; GtkMenuItem* _tmp26_; GtkMenuItem* _tmp27_; IBusEngineDesc* _tmp28_; IBusEngineDesc* _tmp29_; GtkMenuItem* _tmp30_; GtkMenu* _tmp31_; GtkMenuItem* _tmp32_; _data8_ = g_slice_new0 (Block8Data); _data8_->_ref_count_ = 1; _data8_->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_ = engine; _tmp15_ = ibus_engine_desc_get_textdomain (_tmp14_); _tmp16_ = g_strdup (_tmp15_); textdomain = _tmp16_; _tmp17_ = textdomain; _tmp18_ = longname; _tmp19_ = g_strdup (g_dgettext (_tmp17_, _tmp18_)); transname = _tmp19_; _tmp20_ = language; _tmp21_ = ibus_get_language_name (_tmp20_); _tmp22_ = _tmp21_; _tmp23_ = transname; _tmp24_ = g_strdup_printf ("%s - %s", _tmp22_, _tmp23_); _tmp25_ = _tmp24_; _tmp26_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_tmp25_); g_object_ref_sink (_tmp26_); _tmp27_ = _tmp26_; _g_free0 (_tmp25_); _g_free0 (_tmp22_); item = _tmp27_; _tmp28_ = engine; _tmp29_ = _g_object_ref0 (_tmp28_); _data8_->e = _tmp29_; _tmp30_ = item; g_signal_connect_data (_tmp30_, "activate", (GCallback) _____lambda80__gtk_menu_item_activate, block8_data_ref (_data8_), (GClosureNotify) block8_data_unref, 0); _tmp31_ = self->priv->m_ime_menu; _tmp32_ = item; gtk_container_add ((GtkContainer*) _tmp31_, (GtkWidget*) _tmp32_); _g_object_unref0 (item); _g_free0 (transname); _g_free0 (textdomain); _g_free0 (longname); _g_free0 (language); _g_object_unref0 (engine); block8_data_unref (_data8_); _data8_ = NULL; } } } _tmp33_ = self->priv->m_ime_menu; gtk_widget_show_all ((GtkWidget*) _tmp33_); _tmp34_ = self->priv->m_ime_menu; gtk_menu_shell_set_take_focus ((GtkMenuShell*) _tmp34_, FALSE); _tmp35_ = self->priv->m_ime_menu; _tmp36_ = _g_object_ref0 (_tmp35_); result = _tmp36_; 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; IBusProperty* _tmp0_; IBusProperty* _tmp1_; IBusProperty* _tmp2_; IBusProperty* _tmp3_; gint _tmp4_; _tmp0_ = ibus_prop_list_get (props, (guint) i); _tmp1_ = _g_object_ref0 (_tmp0_); prop = _tmp1_; _tmp2_ = prop; if (_tmp2_ == NULL) { _g_object_unref0 (prop); break; } _tmp3_ = ibus_prop_list_get (props, (guint) i); panel_set_property (self, _tmp3_, TRUE); _tmp4_ = i; i = _tmp4_ + 1; _g_object_unref0 (prop); } } static void panel_set_property (Panel* self, IBusProperty* prop, gboolean all_update) { gchar* symbol = NULL; IBusText* _tmp0_; const gchar* _tmp1_; gchar* _tmp2_; gboolean _tmp3_ = FALSE; gboolean _tmp4_ = FALSE; const gchar* _tmp5_; g_return_if_fail (self != NULL); g_return_if_fail (prop != NULL); _tmp0_ = ibus_property_get_symbol (prop); _tmp1_ = ibus_text_get_text (_tmp0_); _tmp2_ = g_strdup (_tmp1_); symbol = _tmp2_; _tmp5_ = self->priv->m_icon_prop_key; if (g_strcmp0 (_tmp5_, "") != 0) { const gchar* _tmp6_; const gchar* _tmp7_; _tmp6_ = ibus_property_get_key (prop); _tmp7_ = self->priv->m_icon_prop_key; _tmp4_ = g_strcmp0 (_tmp6_, _tmp7_) == 0; } else { _tmp4_ = FALSE; } if (_tmp4_) { const gchar* _tmp8_; _tmp8_ = symbol; _tmp3_ = g_strcmp0 (_tmp8_, "") != 0; } else { _tmp3_ = FALSE; } if (_tmp3_) { const gchar* _tmp9_; _tmp9_ = symbol; panel_animate_icon (self, _tmp9_, all_update); } _g_free0 (symbol); } static Block9Data* block9_data_ref (Block9Data* _data9_) { g_atomic_int_inc (&_data9_->_ref_count_); return _data9_; } static void block9_data_unref (void * _userdata_) { Block9Data* _data9_; _data9_ = (Block9Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data9_->_ref_count_)) { Panel* self; self = _data9_->self; _g_free0 (_data9_->symbol); _g_object_unref0 (self); g_slice_free (Block9Data, _data9_); } } static gboolean __lambda91_ (Block9Data* _data9_) { Panel* self; PanelIconType _tmp0_; gboolean result = FALSE; self = _data9_->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; GdkPixbuf* _tmp1_; GtkStatusIcon* _tmp2_; GdkPixbuf* _tmp3_; _tmp1_ = panel_create_icon_pixbuf_with_string (self, _data9_->symbol); pixbuf = _tmp1_; _tmp2_ = self->priv->m_status_icon; _tmp3_ = pixbuf; gtk_status_icon_set_from_pixbuf (_tmp2_, _tmp3_); _g_object_unref0 (pixbuf); } else { PanelIconType _tmp4_; _tmp4_ = self->priv->m_icon_type; if (_tmp4_ == PANEL_ICON_TYPE_INDICATOR) { cairo_surface_t* image = NULL; cairo_surface_t* _tmp5_; Indicator* _tmp6_; cairo_surface_t* _tmp7_; _tmp5_ = panel_create_cairo_image_surface_with_string (self, _data9_->symbol, TRUE); image = _tmp5_; _tmp6_ = self->priv->m_indicator; _tmp7_ = image; indicator_set_cairo_image_surface_full (_tmp6_, _tmp7_, ""); _cairo_surface_destroy0 (image); } } result = FALSE; return result; } static gboolean ___lambda91__gsource_func (gpointer self) { gboolean result; result = __lambda91_ (self); return result; } static void panel_animate_icon (Panel* self, const gchar* symbol, gboolean all_update) { Block9Data* _data9_; gchar* _tmp0_; guint timeout = 0U; g_return_if_fail (self != NULL); g_return_if_fail (symbol != NULL); _data9_ = g_slice_new0 (Block9Data); _data9_->_ref_count_ = 1; _data9_->self = g_object_ref (self); _tmp0_ = g_strdup (symbol); _g_free0 (_data9_->symbol); _data9_->symbol = _tmp0_; if (self->priv->m_property_icon_delay_time < 0) { block9_data_unref (_data9_); _data9_ = NULL; return; } timeout = (guint) 0; if (all_update) { timeout = (guint) self->priv->m_property_icon_delay_time; } if (self->priv->m_property_icon_delay_time_id > ((guint) 0)) { g_source_remove (self->priv->m_property_icon_delay_time_id); self->priv->m_property_icon_delay_time_id = (guint) 0; } self->priv->m_property_icon_delay_time_id = g_timeout_add_full (G_PRIORITY_DEFAULT, timeout, ___lambda91__gsource_func, block9_data_ref (_data9_), block9_data_unref); block9_data_unref (_data9_); _data9_ = NULL; } static void panel_real_set_cursor_location (IBusPanelService* base, gint x, gint y, gint width, gint height) { Panel * self; CandidatePanel* _tmp0_; PropertyPanel* _tmp1_; self = (Panel*) base; _tmp0_ = self->priv->m_candidate_panel; candidate_panel_set_cursor_location (_tmp0_, x, y, width, height); _tmp1_ = self->priv->m_property_panel; property_panel_set_cursor_location (_tmp1_, x, y, width, height); } static gboolean panel_switcher_focus_set_engine_real (Panel* self) { IBusEngineDesc* selected_engine = NULL; Switcher* _tmp0_; IBusEngineDesc* _tmp1_; gchar* prev_context_path = NULL; Switcher* _tmp2_; gchar* _tmp3_; gboolean _tmp4_ = FALSE; gboolean _tmp5_ = FALSE; IBusEngineDesc* _tmp6_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_switcher; _tmp1_ = switcher_get_selected_engine (_tmp0_); selected_engine = _tmp1_; _tmp2_ = self->priv->m_switcher; _tmp3_ = switcher_get_input_context_path (_tmp2_); prev_context_path = _tmp3_; _tmp6_ = selected_engine; if (_tmp6_ != NULL) { const gchar* _tmp7_; _tmp7_ = prev_context_path; _tmp5_ = g_strcmp0 (_tmp7_, "") != 0; } else { _tmp5_ = FALSE; } if (_tmp5_) { const gchar* _tmp8_; const gchar* _tmp9_; _tmp8_ = prev_context_path; _tmp9_ = self->priv->m_current_context_path; _tmp4_ = g_strcmp0 (_tmp8_, _tmp9_) == 0; } else { _tmp4_ = FALSE; } if (_tmp4_) { IBusEngineDesc* _tmp10_; Switcher* _tmp11_; _tmp10_ = selected_engine; panel_set_engine (self, _tmp10_); _tmp11_ = self->priv->m_switcher; switcher_reset (_tmp11_); result = TRUE; _g_free0 (prev_context_path); _g_object_unref0 (selected_engine); return result; } result = FALSE; _g_free0 (prev_context_path); _g_object_unref0 (selected_engine); return result; } static gpointer _g_main_context_ref0 (gpointer self) { return self ? g_main_context_ref (self) : NULL; } static gboolean ___lambda60_ (Panel* self) { gboolean result = FALSE; panel_switcher_focus_set_engine_real (self); self->priv->m_switcher_focus_set_engine_id = (guint) -1; result = FALSE; return result; } static gboolean ____lambda60__gsource_func (gpointer self) { gboolean result; result = ___lambda60_ ((Panel*) self); return result; } static void panel_switcher_focus_set_engine (Panel* self) { IBusEngineDesc* selected_engine = NULL; Switcher* _tmp0_; IBusEngineDesc* _tmp1_; gchar* prev_context_path = NULL; Switcher* _tmp2_; gchar* _tmp3_; gboolean _tmp4_ = FALSE; gboolean _tmp5_ = FALSE; IBusEngineDesc* _tmp6_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_switcher; _tmp1_ = switcher_get_selected_engine (_tmp0_); selected_engine = _tmp1_; _tmp2_ = self->priv->m_switcher; _tmp3_ = switcher_get_input_context_path (_tmp2_); prev_context_path = _tmp3_; _tmp6_ = selected_engine; if (_tmp6_ == NULL) { const gchar* _tmp7_; _tmp7_ = prev_context_path; _tmp5_ = g_strcmp0 (_tmp7_, "") != 0; } else { _tmp5_ = FALSE; } if (_tmp5_) { Switcher* _tmp8_; _tmp8_ = self->priv->m_switcher; _tmp4_ = switcher_is_running (_tmp8_); } else { _tmp4_ = FALSE; } if (_tmp4_) { GMainContext* context = NULL; GMainContext* _tmp9_; GMainContext* _tmp10_; gboolean _tmp11_ = FALSE; _tmp9_ = g_main_context_default (); _tmp10_ = _g_main_context_ref0 (_tmp9_); context = _tmp10_; if (self->priv->m_switcher_focus_set_engine_id > ((guint) 0)) { GMainContext* _tmp12_; GSource* _tmp13_; _tmp12_ = context; _tmp13_ = g_main_context_find_source_by_id (_tmp12_, self->priv->m_switcher_focus_set_engine_id); _tmp11_ = _tmp13_ != NULL; } else { _tmp11_ = FALSE; } if (_tmp11_) { g_source_remove (self->priv->m_switcher_focus_set_engine_id); } self->priv->m_switcher_focus_set_engine_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ____lambda60__gsource_func, g_object_ref (self), g_object_unref); _g_main_context_unref0 (context); } else { if (panel_switcher_focus_set_engine_real (self)) { GMainContext* context = NULL; GMainContext* _tmp14_; GMainContext* _tmp15_; gboolean _tmp16_ = FALSE; _tmp14_ = g_main_context_default (); _tmp15_ = _g_main_context_ref0 (_tmp14_); context = _tmp15_; if (self->priv->m_switcher_focus_set_engine_id > ((guint) 0)) { GMainContext* _tmp17_; GSource* _tmp18_; _tmp17_ = context; _tmp18_ = g_main_context_find_source_by_id (_tmp17_, self->priv->m_switcher_focus_set_engine_id); _tmp16_ = _tmp18_ != NULL; } else { _tmp16_ = FALSE; } if (_tmp16_) { g_source_remove (self->priv->m_switcher_focus_set_engine_id); } self->priv->m_switcher_focus_set_engine_id = (guint) -1; _g_main_context_unref0 (context); } } _g_free0 (prev_context_path); _g_object_unref0 (selected_engine); } static void panel_real_focus_in (IBusPanelService* base, const gchar* input_context_path) { Panel * self; gchar* _tmp0_; IBusEngineDesc* engine = NULL; GHashTable* _tmp4_; gconstpointer _tmp5_; IBusEngineDesc* _tmp6_; IBusEngineDesc* _tmp7_; IBusEngineDesc* _tmp20_; self = (Panel*) base; g_return_if_fail (input_context_path != NULL); _tmp0_ = g_strdup (input_context_path); _g_free0 (self->priv->m_current_context_path); self->priv->m_current_context_path = _tmp0_; if (!g_str_has_suffix (input_context_path, "InputContext_1")) { const gchar* _tmp1_; gchar* _tmp2_; PropertyPanel* _tmp3_; _tmp1_ = self->priv->m_current_context_path; _tmp2_ = g_strdup (_tmp1_); _g_free0 (self->priv->m_real_current_context_path); self->priv->m_real_current_context_path = _tmp2_; _tmp3_ = self->priv->m_property_panel; property_panel_focus_in (_tmp3_); panel_switcher_focus_set_engine (self); } if (self->priv->m_use_global_engine) { return; } _tmp4_ = self->priv->m_engine_contexts; _tmp5_ = g_hash_table_lookup (_tmp4_, input_context_path); _tmp6_ = _g_object_ref0 ((IBusEngineDesc*) _tmp5_); engine = _tmp6_; _tmp7_ = engine; if (_tmp7_ == NULL) { IBusEngineDesc* _tmp8_ = NULL; IBusEngineDesc** _tmp9_; gint _tmp9__length1; IBusEngineDesc* _tmp12_; IBusEngineDesc* _tmp13_; _tmp9_ = self->priv->m_engines; _tmp9__length1 = self->priv->m_engines_length1; if (_tmp9__length1 > 0) { IBusEngineDesc** _tmp10_; gint _tmp10__length1; IBusEngineDesc* _tmp11_; _tmp10_ = self->priv->m_engines; _tmp10__length1 = self->priv->m_engines_length1; _tmp11_ = _tmp10_[0]; _tmp8_ = _tmp11_; } else { _tmp8_ = NULL; } _tmp12_ = _g_object_ref0 (_tmp8_); _g_object_unref0 (engine); engine = _tmp12_; _tmp13_ = engine; if (_tmp13_ == NULL) { _g_object_unref0 (engine); return; } } else { gboolean in_engines = FALSE; IBusEngineDesc** _tmp14_; gint _tmp14__length1; in_engines = FALSE; _tmp14_ = self->priv->m_engines; _tmp14__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 = _tmp14_; e_collection_length1 = _tmp14__length1; for (e_it = 0; e_it < e_collection_length1; e_it = e_it + 1) { IBusEngineDesc* _tmp15_; IBusEngineDesc* e = NULL; _tmp15_ = _g_object_ref0 (e_collection[e_it]); e = _tmp15_; { IBusEngineDesc* _tmp16_; const gchar* _tmp17_; IBusEngineDesc* _tmp18_; const gchar* _tmp19_; _tmp16_ = engine; _tmp17_ = ibus_engine_desc_get_name (_tmp16_); _tmp18_ = e; _tmp19_ = ibus_engine_desc_get_name (_tmp18_); if (g_strcmp0 (_tmp17_, _tmp19_) == 0) { in_engines = TRUE; _g_object_unref0 (e); break; } _g_object_unref0 (e); } } } if (!in_engines) { _g_object_unref0 (engine); return; } } _tmp20_ = engine; panel_set_engine (self, _tmp20_); _g_object_unref0 (engine); } static void panel_real_focus_out (IBusPanelService* base, const gchar* input_context_path) { Panel * self; gchar* _tmp0_; self = (Panel*) base; g_return_if_fail (input_context_path != NULL); _tmp0_ = g_strdup (""); _g_free0 (self->priv->m_current_context_path); self->priv->m_current_context_path = _tmp0_; } static void panel_real_destroy_context (IBusPanelService* base, const gchar* input_context_path) { Panel * self; GHashTable* _tmp0_; self = (Panel*) base; g_return_if_fail (input_context_path != NULL); if (self->priv->m_use_global_engine) { return; } _tmp0_ = self->priv->m_engine_contexts; g_hash_table_remove (_tmp0_, input_context_path); } static void panel_real_register_properties (IBusPanelService* base, IBusPropList* props) { Panel * self; PropertyManager* _tmp0_; PropertyPanel* _tmp1_; self = (Panel*) base; g_return_if_fail (props != NULL); _tmp0_ = self->priv->m_property_manager; property_manager_set_properties (_tmp0_, props); _tmp1_ = self->priv->m_property_panel; property_panel_set_properties (_tmp1_, props); panel_set_properties (self, props); } static void panel_real_update_property (IBusPanelService* base, IBusProperty* prop) { Panel * self; PropertyManager* _tmp0_; PropertyPanel* _tmp1_; self = (Panel*) base; g_return_if_fail (prop != NULL); _tmp0_ = self->priv->m_property_manager; property_manager_update_property (_tmp0_, prop); _tmp1_ = self->priv->m_property_panel; property_panel_update_property (_tmp1_, prop); panel_set_property (self, prop, FALSE); } static void panel_real_update_preedit_text (IBusPanelService* base, IBusText* text, guint cursor_pos, gboolean visible) { Panel * self; self = (Panel*) base; g_return_if_fail (text != NULL); if (visible) { CandidatePanel* _tmp0_; PropertyPanel* _tmp1_; _tmp0_ = self->priv->m_candidate_panel; candidate_panel_set_preedit_text (_tmp0_, text, cursor_pos); _tmp1_ = self->priv->m_property_panel; property_panel_set_preedit_text (_tmp1_, text, cursor_pos); } else { CandidatePanel* _tmp2_; PropertyPanel* _tmp3_; _tmp2_ = self->priv->m_candidate_panel; candidate_panel_set_preedit_text (_tmp2_, NULL, (guint) 0); _tmp3_ = self->priv->m_property_panel; property_panel_set_preedit_text (_tmp3_, NULL, (guint) 0); } } static void panel_real_hide_preedit_text (IBusPanelService* base) { Panel * self; CandidatePanel* _tmp0_; 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; CandidatePanel* _tmp1_; IBusText* _tmp2_ = NULL; PropertyPanel* _tmp3_; self = (Panel*) base; g_return_if_fail (text != NULL); if (visible) { _tmp0_ = text; } else { _tmp0_ = NULL; } _tmp1_ = self->priv->m_candidate_panel; candidate_panel_set_auxiliary_text (_tmp1_, _tmp0_); if (visible) { _tmp2_ = text; } else { _tmp2_ = NULL; } _tmp3_ = self->priv->m_property_panel; property_panel_set_auxiliary_text (_tmp3_, _tmp2_); } static void panel_real_hide_auxiliary_text (IBusPanelService* base) { Panel * self; CandidatePanel* _tmp0_; 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; CandidatePanel* _tmp1_; IBusLookupTable* _tmp2_ = NULL; PropertyPanel* _tmp3_; self = (Panel*) base; g_return_if_fail (table != NULL); if (visible) { _tmp0_ = table; } else { _tmp0_ = NULL; } _tmp1_ = self->priv->m_candidate_panel; candidate_panel_set_lookup_table (_tmp1_, _tmp0_); if (visible) { _tmp2_ = table; } else { _tmp2_ = NULL; } _tmp3_ = self->priv->m_property_panel; property_panel_set_lookup_table (_tmp3_, _tmp2_); } static void panel_real_hide_lookup_table (IBusPanelService* base) { Panel * self; CandidatePanel* _tmp0_; 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_; self = (Panel*) base; _tmp0_ = self->priv->m_candidate_panel; candidate_panel_set_content_type (_tmp0_, purpose, hints); } static gchar string_get (const gchar* self, glong index) { gchar _tmp0_; gchar result = '\0'; g_return_val_if_fail (self != NULL, '\0'); _tmp0_ = ((gchar*) self)[index]; result = _tmp0_; return result; } static gchar* string_slice (const gchar* self, glong start, glong end) { glong string_length = 0L; gint _tmp0_; gint _tmp1_; gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; gchar* _tmp4_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = strlen (self); _tmp1_ = _tmp0_; string_length = (glong) _tmp1_; if (start < ((glong) 0)) { start = string_length + start; } if (end < ((glong) 0)) { end = string_length + end; } if (start >= ((glong) 0)) { _tmp2_ = start <= string_length; } else { _tmp2_ = FALSE; } g_return_val_if_fail (_tmp2_, NULL); if (end >= ((glong) 0)) { _tmp3_ = end <= string_length; } else { _tmp3_ = FALSE; } g_return_val_if_fail (_tmp3_, NULL); g_return_val_if_fail (start <= end, NULL); _tmp4_ = g_strndup (((gchar*) self) + start, (gsize) (end - start)); result = _tmp4_; return result; } static void _vala_array_add22 (gchar** * array, gint* length, gint* 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; Switcher* _tmp0_; PanelIconType _tmp1_; gchar* icon_name = NULL; gchar* _tmp3_; IBusEngineDesc* engine = NULL; IBusBus* _tmp4_; IBusEngineDesc* _tmp5_; IBusEngineDesc* _tmp6_; const gchar* _tmp14_; IBusEngineDesc* _tmp63_; gint i = 0; IBusEngineDesc** _tmp72_; gint _tmp72__length1; IBusEngineDesc** _tmp79_; gint _tmp79__length1; IBusEngineDesc* _tmp80_; IBusEngineDesc* _tmp81_; gchar** names = NULL; gchar** _tmp82_; gint names_length1; gint _names_size_; IBusEngineDesc** _tmp83_; gint _tmp83__length1; GSettings* _tmp89_; gchar** _tmp90_; gint _tmp90__length1; self = (Panel*) base; _tmp0_ = self->priv->m_switcher; if (switcher_is_running (_tmp0_)) { return; } _tmp1_ = self->priv->m_icon_type; if (_tmp1_ == PANEL_ICON_TYPE_INDICATOR) { Indicator* _tmp2_; _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_); engine = _tmp5_; _tmp6_ = engine; if (_tmp6_ != NULL) { IBusEngineDesc* _tmp7_; const gchar* _tmp8_; gchar* _tmp9_; IBusEngineDesc* _tmp10_; const gchar* _tmp11_; gchar* _tmp12_; _tmp7_ = engine; _tmp8_ = ibus_engine_desc_get_icon (_tmp7_); _tmp9_ = g_strdup (_tmp8_); _g_free0 (icon_name); icon_name = _tmp9_; _tmp10_ = engine; _tmp11_ = ibus_engine_desc_get_icon_prop_key (_tmp10_); _tmp12_ = g_strdup (_tmp11_); _g_free0 (self->priv->m_icon_prop_key); self->priv->m_icon_prop_key = _tmp12_; } else { gchar* _tmp13_; _tmp13_ = g_strdup (""); _g_free0 (self->priv->m_icon_prop_key); self->priv->m_icon_prop_key = _tmp13_; } _tmp14_ = icon_name; if (string_get (_tmp14_, (glong) 0) == '/') { PanelIconType _tmp15_; _tmp15_ = self->priv->m_icon_type; if (_tmp15_ == PANEL_ICON_TYPE_STATUS_ICON) { GtkStatusIcon* _tmp16_; const gchar* _tmp17_; _tmp16_ = self->priv->m_status_icon; _tmp17_ = icon_name; gtk_status_icon_set_from_file (_tmp16_, _tmp17_); } else { PanelIconType _tmp18_; _tmp18_ = self->priv->m_icon_type; if (_tmp18_ == PANEL_ICON_TYPE_INDICATOR) { Indicator* _tmp19_; const gchar* _tmp20_; _tmp19_ = self->priv->m_indicator; _tmp20_ = icon_name; indicator_set_icon_full (_tmp19_, _tmp20_, ""); } } } else { gchar* language = NULL; IBusEngineDesc* _tmp21_; const gchar* _tmp35_; language = NULL; _tmp21_ = engine; if (_tmp21_ != NULL) { gchar* name = NULL; IBusEngineDesc* _tmp22_; const gchar* _tmp23_; gchar* _tmp24_; gboolean _tmp25_ = FALSE; const gchar* _tmp26_; gint _tmp27_; gint _tmp28_; _tmp22_ = engine; _tmp23_ = ibus_engine_desc_get_name (_tmp22_); _tmp24_ = g_strdup (_tmp23_); name = _tmp24_; _tmp26_ = name; _tmp27_ = strlen (_tmp26_); _tmp28_ = _tmp27_; if (_tmp28_ >= 4) { const gchar* _tmp29_; gchar* _tmp30_; gchar* _tmp31_; _tmp29_ = name; _tmp30_ = string_slice (_tmp29_, (glong) 0, (glong) 4); _tmp31_ = _tmp30_; _tmp25_ = g_strcmp0 (_tmp31_, "xkb:") == 0; _g_free0 (_tmp31_); } else { _tmp25_ = FALSE; } if (_tmp25_) { Switcher* _tmp32_; IBusEngineDesc* _tmp33_; gchar* _tmp34_; _tmp32_ = self->priv->m_switcher; _tmp33_ = engine; _tmp34_ = switcher_get_xkb_language (_tmp32_, _tmp33_); _g_free0 (language); language = _tmp34_; } _g_free0 (name); } _tmp35_ = language; if (_tmp35_ != NULL) { PanelIconType _tmp36_; _tmp36_ = self->priv->m_icon_type; if (_tmp36_ == PANEL_ICON_TYPE_STATUS_ICON) { GdkPixbuf* pixbuf = NULL; const gchar* _tmp37_; GdkPixbuf* _tmp38_; GtkStatusIcon* _tmp39_; GdkPixbuf* _tmp40_; _tmp37_ = language; _tmp38_ = panel_create_icon_pixbuf_with_string (self, _tmp37_); pixbuf = _tmp38_; _tmp39_ = self->priv->m_status_icon; _tmp40_ = pixbuf; gtk_status_icon_set_from_pixbuf (_tmp39_, _tmp40_); _g_object_unref0 (pixbuf); } else { PanelIconType _tmp41_; _tmp41_ = self->priv->m_icon_type; if (_tmp41_ == PANEL_ICON_TYPE_INDICATOR) { cairo_surface_t* image = NULL; const gchar* _tmp42_; cairo_surface_t* _tmp43_; Indicator* _tmp44_; cairo_surface_t* _tmp45_; _tmp42_ = language; _tmp43_ = panel_create_cairo_image_surface_with_string (self, _tmp42_, TRUE); image = _tmp43_; _tmp44_ = self->priv->m_indicator; _tmp45_ = image; indicator_set_cairo_image_surface_full (_tmp44_, _tmp45_, ""); _cairo_surface_destroy0 (image); } } } else { GtkIconTheme* theme = NULL; GtkIconTheme* _tmp46_; GtkIconTheme* _tmp47_; GtkIconTheme* _tmp48_; const gchar* _tmp49_; GtkIconInfo* _tmp50_; GtkIconInfo* _tmp51_; gboolean _tmp52_; _tmp46_ = gtk_icon_theme_get_default (); _tmp47_ = _g_object_ref0 (_tmp46_); theme = _tmp47_; _tmp48_ = theme; _tmp49_ = icon_name; _tmp50_ = gtk_icon_theme_lookup_icon (_tmp48_, _tmp49_, 48, 0); _tmp51_ = _tmp50_; _tmp52_ = _tmp51_ != NULL; _g_object_unref0 (_tmp51_); if (_tmp52_) { PanelIconType _tmp53_; _tmp53_ = self->priv->m_icon_type; if (_tmp53_ == PANEL_ICON_TYPE_STATUS_ICON) { GtkStatusIcon* _tmp54_; const gchar* _tmp55_; _tmp54_ = self->priv->m_status_icon; _tmp55_ = icon_name; gtk_status_icon_set_from_icon_name (_tmp54_, _tmp55_); } else { PanelIconType _tmp56_; _tmp56_ = self->priv->m_icon_type; if (_tmp56_ == PANEL_ICON_TYPE_INDICATOR) { Indicator* _tmp57_; const gchar* _tmp58_; _tmp57_ = self->priv->m_indicator; _tmp58_ = icon_name; indicator_set_icon_full (_tmp57_, _tmp58_, ""); } } } else { PanelIconType _tmp59_; _tmp59_ = self->priv->m_icon_type; if (_tmp59_ == PANEL_ICON_TYPE_STATUS_ICON) { GtkStatusIcon* _tmp60_; _tmp60_ = self->priv->m_status_icon; gtk_status_icon_set_from_icon_name (_tmp60_, "ibus-engine"); } else { PanelIconType _tmp61_; _tmp61_ = self->priv->m_icon_type; if (_tmp61_ == PANEL_ICON_TYPE_INDICATOR) { Indicator* _tmp62_; _tmp62_ = self->priv->m_indicator; indicator_set_icon_full (_tmp62_, "ibus-engine", ""); } } } _g_object_unref0 (theme); } _g_free0 (language); } _tmp63_ = engine; if (_tmp63_ == NULL) { _g_object_unref0 (engine); _g_free0 (icon_name); return; } { gboolean _tmp64_ = FALSE; i = 0; _tmp64_ = TRUE; while (TRUE) { IBusEngineDesc** _tmp66_; gint _tmp66__length1; IBusEngineDesc** _tmp67_; gint _tmp67__length1; IBusEngineDesc* _tmp68_; const gchar* _tmp69_; IBusEngineDesc* _tmp70_; const gchar* _tmp71_; if (!_tmp64_) { gint _tmp65_; _tmp65_ = i; i = _tmp65_ + 1; } _tmp64_ = FALSE; _tmp66_ = self->priv->m_engines; _tmp66__length1 = self->priv->m_engines_length1; if (!(i < _tmp66__length1)) { break; } _tmp67_ = self->priv->m_engines; _tmp67__length1 = self->priv->m_engines_length1; _tmp68_ = _tmp67_[i]; _tmp69_ = ibus_engine_desc_get_name (_tmp68_); _tmp70_ = engine; _tmp71_ = ibus_engine_desc_get_name (_tmp70_); if (g_strcmp0 (_tmp69_, _tmp71_) == 0) { break; } } } if (i == 0) { _g_object_unref0 (engine); _g_free0 (icon_name); return; } _tmp72_ = self->priv->m_engines; _tmp72__length1 = self->priv->m_engines_length1; if (i >= _tmp72__length1) { _g_object_unref0 (engine); _g_free0 (icon_name); return; } { gint j = 0; j = i; { gboolean _tmp73_ = FALSE; _tmp73_ = TRUE; while (TRUE) { IBusEngineDesc** _tmp75_; gint _tmp75__length1; IBusEngineDesc** _tmp76_; gint _tmp76__length1; IBusEngineDesc* _tmp77_; IBusEngineDesc* _tmp78_; if (!_tmp73_) { gint _tmp74_; _tmp74_ = j; j = _tmp74_ - 1; } _tmp73_ = FALSE; if (!(j > 0)) { break; } _tmp75_ = self->priv->m_engines; _tmp75__length1 = self->priv->m_engines_length1; _tmp76_ = self->priv->m_engines; _tmp76__length1 = self->priv->m_engines_length1; _tmp77_ = _tmp76_[j - 1]; _tmp78_ = _g_object_ref0 (_tmp77_); _g_object_unref0 (_tmp75_[j]); _tmp75_[j] = _tmp78_; } } } _tmp79_ = self->priv->m_engines; _tmp79__length1 = self->priv->m_engines_length1; _tmp80_ = engine; _tmp81_ = _g_object_ref0 (_tmp80_); _g_object_unref0 (_tmp79_[0]); _tmp79_[0] = _tmp81_; _tmp82_ = g_new0 (gchar*, 0 + 1); names = _tmp82_; names_length1 = 0; _names_size_ = names_length1; _tmp83_ = self->priv->m_engines; _tmp83__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 = _tmp83_; desc_collection_length1 = _tmp83__length1; for (desc_it = 0; desc_it < desc_collection_length1; desc_it = desc_it + 1) { IBusEngineDesc* _tmp84_; IBusEngineDesc* desc = NULL; _tmp84_ = _g_object_ref0 (desc_collection[desc_it]); desc = _tmp84_; { gchar** _tmp85_; gint _tmp85__length1; IBusEngineDesc* _tmp86_; const gchar* _tmp87_; gchar* _tmp88_; _tmp85_ = names; _tmp85__length1 = names_length1; _tmp86_ = desc; _tmp87_ = ibus_engine_desc_get_name (_tmp86_); _tmp88_ = g_strdup (_tmp87_); _vala_array_add22 (&names, &names_length1, &_names_size_, _tmp88_); _g_object_unref0 (desc); } } } _tmp89_ = self->priv->m_settings_general; _tmp90_ = names; _tmp90__length1 = names_length1; g_settings_set_strv (_tmp89_, "engines-order", _tmp90_); names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (engine); _g_free0 (icon_name); } static void panel_class_init (PanelClass * klass, gpointer klass_data) { panel_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &Panel_private_offset); ((IBusPanelServiceClass *) klass)->set_cursor_location = (void (*) (IBusPanelService*, gint, gint, gint, gint)) panel_real_set_cursor_location; ((IBusPanelServiceClass *) klass)->focus_in = (void (*) (IBusPanelService*, const gchar*)) panel_real_focus_in; ((IBusPanelServiceClass *) klass)->focus_out = (void (*) (IBusPanelService*, const gchar*)) panel_real_focus_out; ((IBusPanelServiceClass *) klass)->destroy_context = (void (*) (IBusPanelService*, const gchar*)) panel_real_destroy_context; ((IBusPanelServiceClass *) klass)->register_properties = (void (*) (IBusPanelService*, IBusPropList*)) panel_real_register_properties; ((IBusPanelServiceClass *) klass)->update_property = (void (*) (IBusPanelService*, IBusProperty*)) panel_real_update_property; ((IBusPanelServiceClass *) klass)->update_preedit_text = (void (*) (IBusPanelService*, IBusText*, guint, gboolean)) panel_real_update_preedit_text; ((IBusPanelServiceClass *) klass)->hide_preedit_text = (void (*) (IBusPanelService*)) panel_real_hide_preedit_text; ((IBusPanelServiceClass *) klass)->update_auxiliary_text = (void (*) (IBusPanelService*, IBusText*, gboolean)) panel_real_update_auxiliary_text; ((IBusPanelServiceClass *) klass)->hide_auxiliary_text = (void (*) (IBusPanelService*)) panel_real_hide_auxiliary_text; ((IBusPanelServiceClass *) klass)->update_lookup_table = (void (*) (IBusPanelService*, IBusLookupTable*, gboolean)) panel_real_update_lookup_table; ((IBusPanelServiceClass *) klass)->hide_lookup_table = (void (*) (IBusPanelService*)) panel_real_hide_lookup_table; ((IBusPanelServiceClass *) klass)->set_content_type = (void (*) (IBusPanelService*, guint, guint)) panel_real_set_content_type; ((IBusPanelServiceClass *) klass)->state_changed = (void (*) (IBusPanelService*)) panel_real_state_changed; G_OBJECT_CLASS (klass)->finalize = panel_finalize; } static void panel_instance_init (Panel * self, gpointer klass) { IBusEngineDesc** _tmp0_; GHashFunc _tmp1_; GEqualFunc _tmp2_; GHashTable* _tmp3_; gchar* _tmp4_; gchar* _tmp5_; GHashFunc _tmp6_; GEqualFunc _tmp7_; GHashTable* _tmp8_; GHashFunc _tmp9_; GEqualFunc _tmp10_; GHashTable* _tmp11_; GdkRGBA _tmp12_ = {0}; XKBLayout* _tmp13_; gchar* _tmp14_; self->priv = panel_get_instance_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_; _tmp5_ = g_strdup (""); self->priv->m_real_current_context_path = _tmp5_; self->priv->m_use_global_engine = TRUE; self->priv->m_setup_pid = (GPid) 0; self->priv->m_switcher_delay_time = 400; self->priv->m_use_system_keyboard_layout = FALSE; _tmp6_ = g_str_hash; _tmp7_ = g_str_equal; _tmp8_ = g_hash_table_new_full (_tmp6_, _tmp7_, _g_free0_, _g_object_unref0_); self->priv->m_xkb_icon_pixbufs = _tmp8_; _tmp9_ = g_str_hash; _tmp10_ = g_str_equal; _tmp11_ = g_hash_table_new_full (_tmp9_, _tmp10_, _g_free0_, _cairo_surface_destroy0_); self->priv->m_xkb_icon_image = _tmp11_; memset (&_tmp12_, 0, sizeof (GdkRGBA)); _tmp12_.red = 0.0; _tmp12_.green = 0.0; _tmp12_.blue = 0.0; _tmp12_.alpha = 1.0; self->priv->m_xkb_icon_rgba = _tmp12_; _tmp13_ = xkb_layout_new (); self->priv->m_xkblayout = _tmp13_; self->priv->inited_engines_order = TRUE; _tmp14_ = g_strdup (""); self->priv->m_icon_prop_key = _tmp14_; self->priv->m_property_icon_delay_time = 500; self->priv->m_is_kde = panel_is_kde (); self->priv->m_keybindings = NULL; } static void panel_finalize (GObject * obj) { Panel * self; Indicator* _tmp0_; GList* _tmp2_; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PANEL, Panel); _tmp0_ = self->priv->m_indicator; if (_tmp0_ != NULL) { Indicator* _tmp1_; _tmp1_ = self->priv->m_indicator; indicator_unregister_connection (_tmp1_); } _tmp2_ = self->priv->m_keybindings; binding_common_unbind_switch_shortcut (BINDING_COMMON_KEY_EVENT_FUNC_TYPE_ANY, _tmp2_); (self->priv->m_keybindings == NULL) ? NULL : (self->priv->m_keybindings = (_g_list_free__g_object_unref0_ (self->priv->m_keybindings), NULL)); self->priv->m_keybindings = NULL; _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_free0 (self->priv->m_real_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); (self->priv->m_keybindings == NULL) ? NULL : (self->priv->m_keybindings = (_g_list_free__g_object_unref0_ (self->priv->m_keybindings), NULL)); G_OBJECT_CLASS (panel_parent_class)->finalize (obj); } static GType panel_get_type_once (void) { 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); Panel_private_offset = g_type_add_instance_private (panel_type_id, sizeof (PanelPrivate)); return panel_type_id; } GType panel_get_type (void) { static volatile gsize panel_type_id__volatile = 0; if (g_once_init_enter (&panel_type_id__volatile)) { GType panel_type_id; panel_type_id = panel_get_type_once (); 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)) { gint 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) { gint length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; } ibus-1.5.22/ui/gtk3/gtkextension.xml.in0000644000000000000000000000072013623750431014573 00000000000000 org.freedesktop.IBus.Panel.Extension Gtk Panel Extension Component @libexecdir@/ibus-extension-gtk3 @VERSION@ Takao Fujiwara <takao.fujiwara1@gmail.com> GPL https://github.com/ibus/ibus/wiki ibus ibus-1.5.22/ui/gtk3/panelbinding.vala0000644000000000000000000011233013623750431014222 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2018 Peng Huang * Copyright(c) 2018 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 Preedit : Gtk.Window { private Gtk.Label m_extension_preedit_text; private Gtk.Label m_extension_preedit_emoji; private IBus.Text? m_engine_preedit_text; private bool m_engine_preedit_text_show; private uint m_engine_preedit_cursor_pos; private string m_prefix = "@"; private bool m_is_shown = true; public Preedit() { GLib.Object( name : "IBusPreedit", type: Gtk.WindowType.POPUP ); m_extension_preedit_text = new Gtk.Label(""); m_extension_preedit_emoji = new Gtk.Label(""); } public new void hide() { reset(); base.hide(); m_is_shown = false; } public bool is_shown() { return m_is_shown; } public void reset() { set_emoji(""); set_text(""); resize(1, 1); m_is_shown = true; } public void append_text(string text) { if (text.length == 0) return; string total = m_extension_preedit_text.get_text(); total += text; m_extension_preedit_text.set_text(total); } public string get_text() { return m_extension_preedit_text.get_text(); } public void set_text(string text) { m_extension_preedit_text.set_text(text); } public string get_emoji() { return m_extension_preedit_emoji.get_text(); } public void set_emoji(string text) { m_extension_preedit_emoji.set_text(text); } public bool backspace() { string total = m_extension_preedit_emoji.get_text(); if (total.length > 0) { m_extension_preedit_emoji.set_text(""); resize(1, 1); return false; } total = m_extension_preedit_text.get_text(); int char_count = total.char_count(); if (char_count == 0) return true; total = total[0:total.index_of_nth_char(char_count - 1)]; resize(1, 1); m_extension_preedit_text.set_text(total); if (total.length == 0) resize(1, 1); return true; } private string get_extension_text () { string extension_text = m_extension_preedit_emoji.get_text(); if (extension_text.length == 0) extension_text = m_extension_preedit_text.get_text(); return m_prefix + extension_text; } private void set_preedit_color(IBus.Text text, uint start_index, uint end_index) { text.append_attribute(IBus.AttrType.UNDERLINE, IBus.AttrUnderline.SINGLE, start_index, (int)end_index); } public IBus.Text get_engine_preedit_text() { string extension_text = get_extension_text(); uint char_count = extension_text.char_count(); IBus.Text retval; if (m_engine_preedit_text == null || !m_engine_preedit_text_show) { retval = new IBus.Text.from_string(extension_text); set_preedit_color(retval, 0, char_count); return retval; } retval = new IBus.Text.from_string( extension_text + m_engine_preedit_text.get_text()); set_preedit_color(retval, 0, char_count); unowned IBus.AttrList attrs = m_engine_preedit_text.get_attributes(); if (attrs == null) return retval; int i = 0; while (true) { IBus.Attribute attr = attrs.get(i++); if (attr == null) break; long start_index = attr.start_index; long end_index = attr.end_index; if (start_index < 0) start_index = 0; if (end_index < 0) end_index = m_engine_preedit_text.get_length(); retval.append_attribute(attr.type, attr.value, char_count + (uint)start_index, (int)char_count + (int)end_index); } return retval; } public void set_engine_preedit_text(IBus.Text? text) { m_engine_preedit_text = text; } public void show_engine_preedit_text() { m_engine_preedit_text_show = true; } public void hide_engine_preedit_text() { m_engine_preedit_text_show = false; } public uint get_engine_preedit_cursor_pos() { return get_extension_text().char_count() + m_engine_preedit_cursor_pos; } public void set_engine_preedit_cursor_pos(uint cursor_pos) { m_engine_preedit_cursor_pos = cursor_pos; } public IBus.Text get_commit_text() { string extension_text = m_extension_preedit_emoji.get_text(); if (extension_text.length == 0) extension_text = m_extension_preedit_text.get_text(); return new IBus.Text.from_string(extension_text); } public void set_extension_name(string extension_name) { if (extension_name.length == 0) m_prefix = "@"; else m_prefix = extension_name[0:1]; } } class PanelBinding : IBus.PanelService { private bool m_is_wayland; private bool m_wayland_lookup_table_is_visible; private IBus.Bus m_bus; private Gtk.Application m_application; private GLib.Settings m_settings_panel = null; private GLib.Settings m_settings_emoji = null; private string m_current_context_path = ""; private string m_real_current_context_path = ""; private IBusEmojier? m_emojier; private uint m_emojier_set_emoji_lang_id; private uint m_emojier_focus_commit_text_id; private string[] m_emojier_favorites = {}; private Gtk.CssProvider m_css_provider; private const uint PRELOAD_ENGINES_DELAY_TIME = 30000; private bool m_load_emoji_at_startup; private bool m_loaded_emoji = false; private bool m_load_unicode_at_startup; private bool m_loaded_unicode = false; private bool m_enable_extension; private string m_extension_name = ""; private Preedit m_preedit; private IBus.ProcessKeyEventData m_key_event_data = IBus.ProcessKeyEventData(); public PanelBinding(IBus.Bus bus, Gtk.Application application) { GLib.assert(bus.is_connected()); // Chain up base class constructor GLib.Object(connection : bus.get_connection(), object_path : IBus.PATH_PANEL_EXTENSION_EMOJI); #if USE_GDK_WAYLAND Type instance_type = Gdk.Display.get_default().get_type(); Type wayland_type = typeof(GdkWayland.Display); m_is_wayland = instance_type.is_a(wayland_type); #else m_is_wayland = false; warning("Checking Wayland is disabled"); #endif m_bus = bus; m_application = application; init_settings(); m_preedit = new Preedit(); } private void init_settings() { m_settings_panel = new GLib.Settings("org.freedesktop.ibus.panel"); m_settings_emoji = new GLib.Settings("org.freedesktop.ibus.panel.emoji"); m_settings_panel.changed["custom-font"].connect((key) => { BindingCommon.set_custom_font(m_settings_panel, m_settings_emoji, ref m_css_provider); }); m_settings_panel.changed["use-custom-font"].connect((key) => { BindingCommon.set_custom_font(m_settings_panel, m_settings_emoji, ref m_css_provider); }); m_settings_emoji.changed["unicode-hotkey"].connect((key) => { set_emoji_hotkey(); }); m_settings_emoji.changed["font"].connect((key) => { BindingCommon.set_custom_font(m_settings_panel, m_settings_emoji, ref m_css_provider); }); m_settings_emoji.changed["hotkey"].connect((key) => { set_emoji_hotkey(); }); m_settings_emoji.changed["favorites"].connect((key) => { set_emoji_favorites(); }); m_settings_emoji.changed["favorite-annotations"].connect((key) => { set_emoji_favorites(); }); m_settings_emoji.changed["lang"].connect((key) => { set_emoji_lang(); }); m_settings_emoji.changed["has-partial-match"].connect((key) => { set_emoji_partial_match(); }); m_settings_emoji.changed["partial-match-length"].connect((key) => { set_emoji_partial_match(); }); m_settings_emoji.changed["partial-match-condition"].connect((key) => { set_emoji_partial_match(); }); m_settings_emoji.changed["load-emoji-at-startup"].connect((key) => { set_load_emoji_at_startup(); }); m_settings_emoji.changed["load-unicode-at-startup"].connect((key) => { set_load_unicode_at_startup(); }); } // Returning unowned IBus.KeyEventData causes NULL with gcc optimization // and use m_key_event_data. private void parse_accelerator(string accelerator) { m_key_event_data = {}; uint keysym = 0; IBus.ModifierType modifiers = 0; IBus.accelerator_parse(accelerator, out keysym, out modifiers); if (keysym == 0U && modifiers == 0) { warning("Failed to parse shortcut key '%s'".printf(accelerator)); return; } if ((modifiers & IBus.ModifierType.SUPER_MASK) != 0) { modifiers ^= IBus.ModifierType.SUPER_MASK; modifiers |= IBus.ModifierType.MOD4_MASK; } m_key_event_data.keyval = keysym; m_key_event_data.state = modifiers; } private void set_emoji_hotkey() { IBus.ProcessKeyEventData[] emoji_keys = {}; IBus.ProcessKeyEventData key; string[] accelerators = m_settings_emoji.get_strv("hotkey"); foreach (var accelerator in accelerators) { parse_accelerator(accelerator); emoji_keys += m_key_event_data; } /* Since {} is not allocated, parse_accelerator() should be unowned. */ key = {}; emoji_keys += key; IBus.ProcessKeyEventData[] unicode_keys = {}; accelerators = m_settings_emoji.get_strv("unicode-hotkey"); foreach (var accelerator in accelerators) { parse_accelerator(accelerator); unicode_keys += m_key_event_data; } key = {}; unicode_keys += key; panel_extension_register_keys("emoji", emoji_keys, "unicode", unicode_keys); } private void set_emoji_favorites() { m_emojier_favorites = m_settings_emoji.get_strv("favorites"); IBusEmojier.set_favorites( m_emojier_favorites, m_settings_emoji.get_strv("favorite-annotations")); } private void set_emoji_lang() { if (m_emojier_set_emoji_lang_id > 0) { GLib.Source.remove(m_emojier_set_emoji_lang_id); m_emojier_set_emoji_lang_id = 0; } m_emojier_set_emoji_lang_id = GLib.Idle.add(() => { IBusEmojier.set_annotation_lang( m_settings_emoji.get_string("lang")); m_emojier_set_emoji_lang_id = 0; m_loaded_emoji = true; if (m_load_unicode_at_startup && !m_loaded_unicode) { IBusEmojier.load_unicode_dict(); m_loaded_unicode = true; } return false; }); } private void set_emoji_partial_match() { IBusEmojier.set_partial_match( m_settings_emoji.get_boolean("has-partial-match")); IBusEmojier.set_partial_match_length( m_settings_emoji.get_int("partial-match-length")); IBusEmojier.set_partial_match_condition( m_settings_emoji.get_int("partial-match-condition")); } private void set_load_emoji_at_startup() { m_load_emoji_at_startup = m_settings_emoji.get_boolean("load-emoji-at-startup"); } private void set_load_unicode_at_startup() { m_load_unicode_at_startup = m_settings_emoji.get_boolean("load-unicode-at-startup"); } public void load_settings() { set_emoji_hotkey(); set_load_emoji_at_startup(); set_load_unicode_at_startup(); BindingCommon.set_custom_font(m_settings_panel, m_settings_emoji, ref m_css_provider); set_emoji_favorites(); if (m_load_emoji_at_startup && !m_loaded_emoji) set_emoji_lang(); set_emoji_partial_match(); } /** * disconnect_signals: * * Call this API before m_panel = null so that the ref_count becomes 0 */ public void disconnect_signals() { if (m_emojier_set_emoji_lang_id > 0) { GLib.Source.remove(m_emojier_set_emoji_lang_id); m_emojier_set_emoji_lang_id = 0; } if (m_emojier != null) { m_application.remove_window(m_emojier); m_emojier = null; } m_application = null; } private void commit_text_update_favorites(IBus.Text text, bool disable_extension) { commit_text(text); // If disable_extension is false, the extension event is already // sent before the focus-in is received. if (disable_extension) { IBus.ExtensionEvent event = new IBus.ExtensionEvent( "name", m_extension_name, "is-enabled", false, "is-extension", true); panel_extension(event); } string committed_string = text.text; string preedit_string = m_preedit.get_text(); m_preedit.hide(); if (preedit_string == committed_string) return; bool has_favorite = false; foreach (unowned string favorite in m_emojier_favorites) { if (favorite == committed_string) { has_favorite = true; break; } } if (!has_favorite) { m_emojier_favorites += committed_string; m_settings_emoji.set_strv("favorites", m_emojier_favorites); } } private bool emojier_focus_commit_real() { if (m_emojier == null) return true; string selected_string = m_emojier.get_selected_string(); string prev_context_path = m_emojier.get_input_context_path(); if (selected_string != null && prev_context_path != "" && prev_context_path == m_current_context_path) { IBus.Text text = new IBus.Text.from_string(selected_string); commit_text_update_favorites(text, false); m_emojier.reset(); return true; } return false; } private void emojier_focus_commit() { if (m_emojier == null) return; string selected_string = m_emojier.get_selected_string(); string prev_context_path = m_emojier.get_input_context_path(); if (selected_string == null && prev_context_path != "") { var context = GLib.MainContext.default(); if (m_emojier_focus_commit_text_id > 0 && context.find_source_by_id(m_emojier_focus_commit_text_id) != null) { GLib.Source.remove(m_emojier_focus_commit_text_id); } m_emojier_focus_commit_text_id = GLib.Timeout.add(100, () => { // focus_in is comming before switcher returns emojier_focus_commit_real(); m_emojier_focus_commit_text_id = -1; return false; }); } else { if (emojier_focus_commit_real()) { var context = GLib.MainContext.default(); if (m_emojier_focus_commit_text_id > 0 && context.find_source_by_id(m_emojier_focus_commit_text_id) != null) { GLib.Source.remove(m_emojier_focus_commit_text_id); } m_emojier_focus_commit_text_id = -1; } } } private bool key_press_escape() { if (is_emoji_lookup_table()) { bool show_candidate = m_emojier.key_press_escape(); convert_preedit_text(); return show_candidate; } if (m_preedit.get_emoji() != "") { m_preedit.set_emoji(""); string annotation = m_preedit.get_text(); m_emojier.set_annotation(annotation); return false; } m_enable_extension = false; hide_emoji_lookup_table(); m_preedit.hide(); IBus.ExtensionEvent event = new IBus.ExtensionEvent( "name", m_extension_name, "is-enabled", false, "is-extension", true); panel_extension(event); return false; } private bool key_press_keyval(uint keyval) { unichar ch = IBus.keyval_to_unicode(keyval); if (ch.iscntrl()) return false; string str = ch.to_string(); m_preedit.append_text(str); string annotation = m_preedit.get_text(); m_emojier.set_annotation(annotation); m_preedit.set_emoji(""); return true; } private bool key_press_enter() { if (m_extension_name != "unicode" && is_emoji_lookup_table()) { // Check if variats exist if (m_emojier.key_press_enter(false)) { convert_preedit_text(); return true; } } IBus.Text text = m_preedit.get_commit_text(); commit_text_update_favorites(text, true); return false; } private void convert_preedit_text() { if (m_emojier.get_number_of_candidates() > 0) m_preedit.set_emoji(m_emojier.get_current_candidate()); else m_preedit.set_emoji(""); } private bool key_press_space() { bool show_candidate = false; if (m_preedit.get_emoji() != "") { m_emojier.key_press_cursor_horizontal(Gdk.Key.Right, 0); show_candidate = true; } else { string annotation = m_preedit.get_text(); if (annotation.length == 0) { show_candidate = true; if (is_emoji_lookup_table()) m_emojier.key_press_cursor_horizontal(Gdk.Key.Right, 0); } else { m_emojier.set_annotation(annotation); } } convert_preedit_text(); return show_candidate; } private bool key_press_cursor_horizontal(uint keyval, uint modifiers) { if (is_emoji_lookup_table()) { m_emojier.key_press_cursor_horizontal(keyval, modifiers); convert_preedit_text(); return true; } return false; } private bool key_press_cursor_vertical(uint keyval, uint modifiers) { if (is_emoji_lookup_table()) { m_emojier.key_press_cursor_vertical(keyval, modifiers); convert_preedit_text(); return true; } return false; } private bool key_press_cursor_home_end(uint keyval, uint modifiers) { if (is_emoji_lookup_table()) { m_emojier.key_press_cursor_home_end(keyval, modifiers); convert_preedit_text(); return true; } return false; } private bool key_press_control_keyval(uint keyval, uint modifiers) { bool show_candidate = false; switch(keyval) { case Gdk.Key.f: show_candidate = key_press_cursor_horizontal(Gdk.Key.Right, modifiers); break; case Gdk.Key.b: show_candidate = key_press_cursor_horizontal(Gdk.Key.Left, modifiers); break; case Gdk.Key.n: case Gdk.Key.N: show_candidate = key_press_cursor_vertical(Gdk.Key.Down, modifiers); break; case Gdk.Key.p: case Gdk.Key.P: show_candidate = key_press_cursor_vertical(Gdk.Key.Up, modifiers); break; case Gdk.Key.h: show_candidate = key_press_cursor_home_end(Gdk.Key.Home, modifiers); break; case Gdk.Key.e: show_candidate = key_press_cursor_home_end(Gdk.Key.End, modifiers); break; case Gdk.Key.u: m_preedit.reset(); m_emojier.set_annotation(""); hide_emoji_lookup_table(); break; case Gdk.Key.C: case Gdk.Key.c: if ((modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { if (!m_is_wayland && m_emojier != null && m_emojier.get_number_of_candidates() > 0) { var text = m_emojier.get_current_candidate(); Gtk.Clipboard clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD); clipboard.set_text(text, -1); clipboard.store(); } show_candidate = is_emoji_lookup_table(); } break; default: show_candidate = is_emoji_lookup_table(); break; } return show_candidate; } private void hide_wayland_lookup_table() { m_wayland_lookup_table_is_visible = false; var text = new IBus.Text.from_string(""); update_auxiliary_text_received(text, false); update_lookup_table_received( new IBus.LookupTable(1, 0, false, true), false); } private void show_wayland_lookup_table(IBus.Text text) { m_wayland_lookup_table_is_visible = true; var table = m_emojier.get_one_dimension_lookup_table(); uint ncandidates = table.get_number_of_candidates(); update_auxiliary_text_received( text, ncandidates > 0 ? true : false); update_lookup_table_received( table, ncandidates > 0 ? true : false); } private void hide_emoji_lookup_table() { if (m_emojier == null) return; if (m_wayland_lookup_table_is_visible) hide_wayland_lookup_table(); else m_emojier.hide(); } private void show_emoji_lookup_table() { /* Emojier category_list is shown in both Xorg and Wayland * because the annotation information is useful but the Wayland lookup * window is alway one dimension. So the category_list is shown * when the user annotation is null. */ if (m_is_wayland && m_preedit.get_text() != "") { var text = m_emojier.get_title_text(); show_wayland_lookup_table(text); } else { // POPUP window takes the focus in Wayland. if (m_is_wayland) m_emojier.set_input_context_path(m_real_current_context_path); m_emojier.show_all(); } } private bool is_emoji_lookup_table() { if (m_is_wayland) return m_wayland_lookup_table_is_visible; else return m_emojier.get_visible(); } private void show_preedit_and_candidate(bool show_candidate) { uint cursor_pos = 0; if (!show_candidate) cursor_pos = m_preedit.get_engine_preedit_cursor_pos(); update_preedit_text_received( m_preedit.get_engine_preedit_text(), cursor_pos, true); if (!show_candidate) { hide_emoji_lookup_table(); return; } if (m_emojier == null) return; /* Wayland gives the focus on Emojir which is a GTK popup window * and move the focus fom the current input context to Emojier. * This forwards the lookup table to gnome-shell's lookup table * but it enables one dimension lookup table only. */ show_emoji_lookup_table(); } public override void focus_in(string input_context_path) { m_current_context_path = input_context_path; /* 'fake' input context is named as * '/org/freedesktop/IBus/InputContext_1' and always send in * focus-out events by ibus-daemon for the global engine mode. * Now ibus-daemon assumes to always use the global engine. * But this event should not be used for modal dialogs * such as Switcher. */ if (!input_context_path.has_suffix("InputContext_1")) { m_real_current_context_path = m_current_context_path; if (m_is_wayland) this.emojier_focus_commit(); } } public override void focus_out(string input_context_path) { m_current_context_path = ""; } public override void panel_extension_received(IBus.ExtensionEvent event) { m_extension_name = event.get_name(); if (m_extension_name != "emoji" && m_extension_name != "unicode") { string format = "The name %s is not implemented in PanelExtension"; warning (format.printf(m_extension_name)); m_extension_name = ""; return; } m_enable_extension = event.is_enabled; if (!m_enable_extension) { hide_emoji_lookup_table(); return; } if (!m_loaded_emoji) set_emoji_lang(); if (!m_loaded_unicode && m_loaded_emoji) { IBusEmojier.load_unicode_dict(); m_loaded_unicode = true; } if (m_emojier == null) { m_emojier = new IBusEmojier(); // For title handling in gnome-shell m_application.add_window(m_emojier); m_emojier.candidate_clicked.connect((i, b, s) => { candidate_clicked_lookup_table_real(i, b, s, true); }); m_emojier.commit_text.connect((s) => { if (!m_is_wayland) return; // Currently emojier has a focus but the text input focus // does not and commit the text later. IBus.ExtensionEvent close_event = new IBus.ExtensionEvent( "name", m_extension_name, "is-enabled", false, "is-extension", true); panel_extension(close_event); }); } m_emojier.reset(); m_emojier.set_annotation(""); m_preedit.set_extension_name(m_extension_name); m_preedit.reset(); update_preedit_text_received( m_preedit.get_engine_preedit_text(), m_preedit.get_engine_preedit_cursor_pos(), true); string params = event.get_params(); if (params == "category-list") { key_press_space(); show_preedit_and_candidate(true); } } public override void set_cursor_location(int x, int y, int width, int height) { if (m_emojier != null) m_emojier.set_cursor_location(x, y, width, height); } public override void update_preedit_text(IBus.Text text, uint cursor_pos, bool visible) { m_preedit.set_engine_preedit_text(text); if (visible) m_preedit.show_engine_preedit_text(); else m_preedit.hide_engine_preedit_text(); m_preedit.set_engine_preedit_cursor_pos(cursor_pos); update_preedit_text_received(m_preedit.get_engine_preedit_text(), m_preedit.get_engine_preedit_cursor_pos(), visible); } public override void show_preedit_text() { m_preedit.show_engine_preedit_text(); show_preedit_and_candidate(false); } public override void hide_preedit_text() { m_preedit.hide_engine_preedit_text(); show_preedit_and_candidate(false); } public override bool process_key_event(uint keyval, uint keycode, uint state) { if ((state & IBus.ModifierType.RELEASE_MASK) != 0) return false; uint modifiers = state; bool show_candidate = false; switch(keyval) { case Gdk.Key.Escape: show_candidate = key_press_escape(); if (!m_preedit.is_shown()) return true; break; case Gdk.Key.Return: case Gdk.Key.KP_Enter: if (m_extension_name == "unicode") key_press_space(); show_candidate = key_press_enter(); if (!m_preedit.is_shown()) { hide_emoji_lookup_table(); return true; } break; case Gdk.Key.BackSpace: m_preedit.backspace(); string annotation = m_preedit.get_text(); if (annotation == "" && m_extension_name == "unicode") { key_press_escape(); return true; } m_emojier.set_annotation(annotation); break; case Gdk.Key.space: case Gdk.Key.KP_Space: if ((modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { if (!key_press_keyval(keyval)) return true; show_candidate = is_emoji_lookup_table(); break; } show_candidate = key_press_space(); if (m_extension_name == "unicode") { key_press_enter(); return true; } break; case Gdk.Key.Right: case Gdk.Key.KP_Right: /* one dimension in Wayland, two dimensions in X11 */ if (m_is_wayland) { show_candidate = key_press_cursor_vertical(Gdk.Key.Down, modifiers); } else { show_candidate = key_press_cursor_horizontal(Gdk.Key.Right, modifiers); } break; case Gdk.Key.Left: case Gdk.Key.KP_Left: if (m_is_wayland) { show_candidate = key_press_cursor_vertical(Gdk.Key.Up, modifiers); } else { show_candidate = key_press_cursor_horizontal(Gdk.Key.Left, modifiers); } break; case Gdk.Key.Down: case Gdk.Key.KP_Down: if (m_is_wayland) { show_candidate = key_press_cursor_horizontal(Gdk.Key.Right, modifiers); } else { show_candidate = key_press_cursor_vertical(Gdk.Key.Down, modifiers); } break; case Gdk.Key.Up: case Gdk.Key.KP_Up: if (m_is_wayland) { show_candidate = key_press_cursor_horizontal(Gdk.Key.Left, modifiers); } else { show_candidate = key_press_cursor_vertical(Gdk.Key.Up, modifiers); } break; case Gdk.Key.Page_Down: case Gdk.Key.KP_Page_Down: if (m_is_wayland) { show_candidate = key_press_cursor_vertical(Gdk.Key.Down, modifiers); } else { show_candidate = key_press_cursor_vertical(Gdk.Key.Page_Down, modifiers); } break; case Gdk.Key.Page_Up: case Gdk.Key.KP_Page_Up: if (m_is_wayland) { show_candidate = key_press_cursor_vertical(Gdk.Key.Up, modifiers); } else { show_candidate = key_press_cursor_vertical(Gdk.Key.Page_Up, modifiers); } break; case Gdk.Key.Home: case Gdk.Key.KP_Home: show_candidate = key_press_cursor_home_end(Gdk.Key.Home, modifiers); break; case Gdk.Key.End: case Gdk.Key.KP_End: show_candidate = key_press_cursor_home_end(Gdk.Key.End, modifiers); break; default: if ((modifiers & Gdk.ModifierType.CONTROL_MASK) != 0) { show_candidate = key_press_control_keyval(keyval, modifiers); break; } if (!key_press_keyval(keyval)) return true; show_candidate = is_emoji_lookup_table(); break; } show_preedit_and_candidate(show_candidate); return true; } public override void commit_text_received(IBus.Text text) { unowned string? str = text.text; if (str == null) return; /* Do not call convert_preedit_text() because it depends on * each IME whether process_key_event() receives Shift-space or not. */ m_preedit.append_text(str); m_preedit.set_emoji(""); string annotation = m_preedit.get_text(); m_emojier.set_annotation(annotation); show_preedit_and_candidate(false); } public override void page_up_lookup_table() { bool show_candidate = key_press_cursor_vertical(Gdk.Key.Up, 0); show_preedit_and_candidate(show_candidate); } public override void page_down_lookup_table() { bool show_candidate = key_press_cursor_vertical(Gdk.Key.Down, 0); show_preedit_and_candidate(show_candidate); } public override void cursor_up_lookup_table() { bool show_candidate = key_press_cursor_horizontal(Gdk.Key.Left, 0); show_preedit_and_candidate(show_candidate); } public override void cursor_down_lookup_table() { bool show_candidate = key_press_cursor_horizontal(Gdk.Key.Right, 0); show_preedit_and_candidate(show_candidate); } private void candidate_clicked_lookup_table_real(uint index, uint button, uint state, bool is_emojier) { if (button == IBusEmojier.BUTTON_CLOSE_BUTTON) { m_enable_extension = false; hide_emoji_lookup_table(); m_preedit.hide(); IBus.ExtensionEvent event = new IBus.ExtensionEvent( "name", m_extension_name, "is-enabled", false, "is-extension", true); panel_extension(event); return; } if (m_emojier == null) return; bool show_candidate = false; uint ncandidates = m_emojier.get_number_of_candidates(); if (ncandidates > 0 && ncandidates >= index) { m_emojier.set_cursor_pos(index); bool need_commit_signal = m_is_wayland && is_emojier; show_candidate = m_emojier.has_variants(index, need_commit_signal); if (!m_is_wayland) m_preedit.set_emoji(m_emojier.get_current_candidate()); } else { return; } if (!show_candidate) { IBus.Text text = m_preedit.get_commit_text(); hide_emoji_lookup_table(); if (!is_emojier || !m_is_wayland) commit_text_update_favorites(text, true); return; } show_preedit_and_candidate(show_candidate); } public override void candidate_clicked_lookup_table(uint index, uint button, uint state) { candidate_clicked_lookup_table_real(index, button, state, false); } } ibus-1.5.22/ui/gtk3/gen-notification-item.xml.c0000644000000000000000000000750113623751711016064 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.22/ui/gtk3/indicator.vala0000644000000000000000000005314513623750431013554 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2015-2017 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; private Gdk.Window m_indicator_window; 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(); Gdk.Window window = query_gdk_window(); context_menu(m_context_menu_x, m_context_menu_y, window, 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(); Gdk.Window window = query_gdk_window(); activate(m_activate_menu_x, m_activate_menu_y, window); } private Gdk.Window? query_gdk_window() { if (m_indicator_window != null) return m_indicator_window; Gdk.Display display = Gdk.Display.get_default(); unowned X.Display xdisplay = (display as Gdk.X11.Display).get_xdisplay(); X.Window current = xdisplay.default_root_window(); X.Window parent = 0; X.Window child = 0; int root_x, root_y, win_x, win_y; uint mask = 0; root_x = root_y = win_x = win_y = 0; bool retval; // Need XSetErrorHandler for BadWindow? while ((retval = xdisplay.query_pointer(current, out parent, out child, out root_x, out root_y, out win_x, out win_y, out mask))) { if (child == 0) break; current = child; } if (!retval) { string format = "XQueryPointer is failed: current: %x root: %x " + "child: %x (%d, %d), (%d, %d), %u"; string message = format.printf((uint)current, (uint)xdisplay.default_root_window(), (uint)child, root_x, root_y, win_x, win_y, mask); warning("XQueryPointer is failed: %s", message); return null; } if (current == xdisplay.default_root_window()) warning("The query window is root window"); m_indicator_window = Gdk.X11.Window.lookup_for_display( display as Gdk.X11.Display, current); if (m_indicator_window != null) return m_indicator_window; m_indicator_window = new Gdk.X11.Window.foreign_for_display( display as Gdk.X11.Display, current); return m_indicator_window; } 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; } /** * unregister_connection: * * "Destroy" dbus method is not called for the indicator's connection * when panel's connection is disconnected because the dbus connection * is a shared session bus so need to call * g_dbus_connection_unregister_object() by manual here * so that g_object_unref(m_panel) will be called later with an idle method, * which was assigned in the arguments of * g_dbus_connection_register_object() */ public void unregister_connection() { unregister(get_connection()); } public signal void context_menu(int x, int y, Gdk.Window window, uint button, uint activate_time); public signal void activate(int x, int y, Gdk.Window window); public signal void registered_status_notifier_item(); } ibus-1.5.22/ui/gtk3/xkblayout.vala0000644000000000000000000002077213623750431013622 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.22/ui/gtk3/keybindingmanager.vala0000644000000000000000000002436013623750431015253 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 registered * 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 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; uint keyval = event.key.keyval; if (keyval >= IBus.KEY_A && keyval <= IBus.KEY_Z && (modifiers & Gdk.ModifierType.SHIFT_MASK) != 0) { keyval = keyval - IBus.KEY_A + IBus.KEY_a; } foreach (var binding in m_bindings) { if (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.22/ui/gtk3/separator.c0000644000000000000000000001422413623751707013101 00000000000000/* separator.c generated by valac 0.47.91, 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 #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; enum { HSEPARATOR_0_PROPERTY, HSEPARATOR_NUM_PROPERTIES }; static GParamSpec* hseparator_properties[HSEPARATOR_NUM_PROPERTIES]; #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; enum { VSEPARATOR_0_PROPERTY, VSEPARATOR_NUM_PROPERTIES }; static GParamSpec* vseparator_properties[VSEPARATOR_NUM_PROPERTIES]; 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (HSeparator, g_object_unref) HSeparator* hseparator_new (void); HSeparator* hseparator_construct (GType object_type); static GType hseparator_get_type_once (void); GType vseparator_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (VSeparator, g_object_unref) VSeparator* vseparator_new (void); VSeparator* vseparator_construct (GType object_type); static GType vseparator_get_type_once (void); 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, gpointer klass_data) { hseparator_parent_class = g_type_class_peek_parent (klass); } static void hseparator_instance_init (HSeparator * self, gpointer klass) { } static GType hseparator_get_type_once (void) { 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); return hseparator_type_id; } GType hseparator_get_type (void) { static volatile gsize hseparator_type_id__volatile = 0; if (g_once_init_enter (&hseparator_type_id__volatile)) { GType hseparator_type_id; hseparator_type_id = hseparator_get_type_once (); 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, gpointer klass_data) { vseparator_parent_class = g_type_class_peek_parent (klass); } static void vseparator_instance_init (VSeparator * self, gpointer klass) { } static GType vseparator_get_type_once (void) { 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); return vseparator_type_id; } GType vseparator_get_type (void) { static volatile gsize vseparator_type_id__volatile = 0; if (g_once_init_enter (&vseparator_type_id__volatile)) { GType vseparator_type_id; vseparator_type_id = vseparator_get_type_once (); g_once_init_leave (&vseparator_type_id__volatile, vseparator_type_id); } return vseparator_type_id__volatile; } ibus-1.5.22/ui/gtk3/ibus-emoji.7.in0000644000000000000000000000570613623750431013473 00000000000000.\" This file is distributed under the same license as the ibus .\" package. .\" Copyright (C) Takao Fujiwara , 2017-2018. .\" .TH "IBUS EMOJI" 7 "August 2018" "@VERSION@" "User Commands" .SH NAME .B ibus-emoji \- Call the IBus emoji utility by .B IBus Emojier .SH "SYNOPSIS" .B /usr/libexec/ibus\-ui\-emojier [\fIOPTION\fR]... .SH "DESCRIPTION" .PP IBus Emojier provides a GUI to select an emoji by typing an emoji annotation or choosing a character with mouse click and it's designed to work as an extended IBus lookup window using Space, Enter, and Arrow keys. The text entry accepts an emoji annotation or Unicode points. If IBus panel is launched, IBus panel calls IBus Emojier with a shortcut key or the right click menu and output the selected emoji on the previous focused text on an application. If IBus panel is not available likes GNOME desktop, You can still use .B ibus emoji command to launch IBus Emojier and it saves the selected emoji in your clipboard and you can paste the emoji by a paste key likes Control\-v. .PP Refer .B emoji section in .B ibus (1) for the command line options. .PP Homepage: https://github.com/ibus/ibus/wiki .SH "SETTINGS" .TP \fBANNOTATION LANGUAGE\fR You can choose a language of emoji annotations with .B ibus\-setup (1). .TP \fBFONT\fR You can choose an emoji font with .B ibus\-setup (1). E.g. "Noto Color Emoji", "Android Emoji" font. .SH "KEYBOARD OPERATIONS" .TP \fBControl-Shift-e\fR Launch IBus Emojier. The shortcut key can be customized by .B ibus\-setup (1). .TP \fBLeft, Right arrow, Control-b or Control-f\fR Select the next left or right category or emoji on the list if an annotation is not typed. Otherwise move the cursor to the immdediate left or right in the typed annotation. .TP \fBDown, Up arrow, Control-n or Control-p\fR Select the next top or down category or emoji on the list .TP \fBEnter\fR Commit the selected emoji. .TP \fBEscape\fR Go back to the category list from emoji list, erase the typed annotation, and close IBus Emojier. .TP \fBSpace\fR Select the next left category or emoji on the list. If Shift\-Space is typed, a space chararacter can be inserted between words in an annotation or Unicode points. E.g. 1f466 Shift\-Space 1f3fb .TP \fBPageDown, PageUp, Control-Shift-n or Control-Shift-p\fR Move to the next or previous page in the category or emoji list. .TP \fBHead, End, Control-h or Control-e\fR Select the first or last emoji on the list if an annotation is not typed. Otherwise move the cursor to the head or end in the typed annotation. .TP \fBControl-u\fR Erase the typed annotation. .TP \fBControl-x or Control-v or Control-c\fR Cut the selected annotation to the clipboard with Control-x. Paste the contents of the clipboard into the annotation entry with Control-v. Copy the selected annotation to the clipboard with Control-c. .TP \fBControl-Shift-c\fR Copy the selected emoji to the clipboard. .SH BUGS If you find a bug, please report it at https://github.com/ibus/ibus/issues ibus-1.5.22/ui/gtk3/handle.vala0000644000000000000000000001557613623750431013041 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2016 Peng Huang * Copyright(c) 2016-2017 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 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() { // Call base class constructor GLib.Object( name : "IBusHandle" ); 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( "#IBusHandle { 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(); } 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.for_display( Gdk.Display.get_default(), Gdk.CursorType.FLEUR)); 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.22/ui/gtk3/switcher.c0000644000000000000000000016465413623751707012746 00000000000000/* switcher.c generated by valac 0.47.91, the Vala compiler * generated from switcher.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2016 Peng Huang * Copyright(c) 2015-2019 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 #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; enum { SWITCHER_0_PROPERTY, SWITCHER_NUM_PROPERTIES }; static GParamSpec* switcher_properties[SWITCHER_NUM_PROPERTIES]; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_free0(var) (var = (g_free (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))) typedef struct _Block10Data Block10Data; #define __vala_GdkEventMotion_free0(var) ((var == NULL) ? NULL : (var = (_vala_GdkEventMotion_free (var), NULL))) #define __vala_GdkEventKey_free0(var) ((var == NULL) ? NULL : (var = (_vala_GdkEventKey_free (var), NULL))) typedef struct _SwitcherIBusEngineButtonPrivate SwitcherIBusEngineButtonPrivate; enum { SWITCHER_IBUS_ENGINE_BUTTON_0_PROPERTY, SWITCHER_IBUS_ENGINE_BUTTON_TRANSNAME_PROPERTY, SWITCHER_IBUS_ENGINE_BUTTON_NUM_PROPERTIES }; static GParamSpec* switcher_ibus_engine_button_properties[SWITCHER_IBUS_ENGINE_BUTTON_NUM_PROPERTIES]; #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; gboolean m_is_running; gchar* m_input_context_path; GMainLoop* m_loop; gint m_result; IBusEngineDesc* m_result_engine; guint m_popup_delay_time; guint m_popup_delay_time_id; gint m_root_x; gint m_root_y; gdouble m_mouse_init_x; gdouble m_mouse_init_y; gboolean m_mouse_moved; GHashTable* m_xkb_languages; }; struct _Block10Data { int _ref_count_; Switcher* self; gint index; SwitcherIBusEngineButton* button; }; struct _SwitcherIBusEngineButton { GtkButton parent_instance; SwitcherIBusEngineButtonPrivate * priv; }; struct _SwitcherIBusEngineButtonClass { GtkButtonClass parent_class; }; struct _SwitcherIBusEngineButtonPrivate { gchar* _transname; }; static gint Switcher_private_offset; static gpointer switcher_parent_class = NULL; static gint SwitcherIBusEngineButton_private_offset; static gpointer switcher_ibus_engine_button_parent_class = NULL; GType switcher_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Switcher, g_object_unref) static GType switcher_ibus_engine_button_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (SwitcherIBusEngineButton, g_object_unref) 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, gint engines_length1, gint index, const gchar* input_context_path); 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, gint engines_length1); static const gchar* switcher_ibus_engine_button_get_transname (SwitcherIBusEngineButton* self); static gboolean ___lambda23_ (Switcher* self); static void switcher_restore_window_position (Switcher* self, const gchar* debug_str); static gboolean ____lambda23__gsource_func (gpointer self); static IBusEngineDesc** _vala_array_dup5 (IBusEngineDesc** self, gint length); static Block10Data* block10_data_ref (Block10Data* _data10_); static void block10_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 _____lambda20_ (Switcher* self, GdkEventCrossing* e); static gboolean ______lambda20__gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self); static gboolean _____lambda21_ (Block10Data* _data10_, GdkEventMotion* e); static GdkEventMotion* _vala_GdkEventMotion_copy (GdkEventMotion* self); static void _vala_GdkEventMotion_free (GdkEventMotion* self); static gboolean ______lambda21__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self); static gboolean _____lambda22_ (Block10Data* _data10_, GdkEventButton* e); static gboolean ______lambda22__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void switcher_ibus_engine_button_set_transname (SwitcherIBusEngineButton* self, const gchar* value); static void _vala_array_add25 (SwitcherIBusEngineButton** * array, gint* length, gint* 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); gboolean switcher_is_running (Switcher* self); gchar* switcher_get_input_context_path (Switcher* self); IBusEngineDesc* switcher_get_selected_engine (Switcher* self); void switcher_reset (Switcher* self); GType icon_widget_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IconWidget, g_object_unref) 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 GType switcher_ibus_engine_button_get_type_once (void); 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 GType switcher_get_type_once (void); 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 inline gpointer switcher_get_instance_private (Switcher* self) { return G_STRUCT_MEMBER_P (self, Switcher_private_offset); } 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_; GtkBox* _tmp1_; GtkBox* _tmp2_; GtkBox* _tmp3_; GtkBox* _tmp4_; GtkLabel* _tmp5_; AtkObject* obj = NULL; GtkLabel* _tmp6_; AtkObject* _tmp7_; AtkObject* _tmp8_; GtkLabel* _tmp9_; GtkLabel* _tmp10_; GtkLabel* _tmp11_; GtkLabel* _tmp12_; GtkLabel* _tmp13_; 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_widget_set_margin_start ((GtkWidget*) _tmp9_, 3); _tmp10_ = self->priv->m_label; gtk_widget_set_margin_end ((GtkWidget*) _tmp10_, 3); _tmp11_ = self->priv->m_label; gtk_widget_set_margin_top ((GtkWidget*) _tmp11_, 3); _tmp12_ = self->priv->m_label; gtk_widget_set_margin_bottom ((GtkWidget*) _tmp12_, 3); _tmp13_ = self->priv->m_label; gtk_box_pack_end (vbox, (GtkWidget*) _tmp13_, 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 ___lambda23_ (Switcher* self) { gboolean result = FALSE; switcher_restore_window_position (self, "timeout"); result = FALSE; return result; } static gboolean ____lambda23__gsource_func (gpointer self) { gboolean result; result = ___lambda23_ ((Switcher*) self); return result; } gint switcher_run (Switcher* self, guint keyval, guint state, GdkEvent* event, IBusEngineDesc** engines, gint engines_length1, gint index, const gchar* input_context_path) { GMainLoop* _tmp0_; gchar* _tmp1_; GtkLabel* _tmp2_; SwitcherIBusEngineButton** _tmp3_; gint _tmp3__length1; SwitcherIBusEngineButton* _tmp4_; const gchar* _tmp5_; const gchar* _tmp6_; SwitcherIBusEngineButton** _tmp7_; gint _tmp7__length1; SwitcherIBusEngineButton* _tmp8_; GdkDevice* pointer = NULL; GdkSeat* seat = NULL; GdkSeat* _tmp11_; GdkSeat* _tmp12_; GdkSeat* _tmp13_; GdkSeat* _tmp19_; GdkDevice* _tmp20_; GdkDevice* _tmp21_; GdkGrabStatus status = 0; GdkSeat* _tmp22_; GdkWindow* _tmp23_; GdkGrabStatus _tmp24_; GdkSeat* _tmp26_; GdkWindow* _tmp27_; GdkGrabStatus _tmp28_; GdkDevice* _tmp30_; gdouble _tmp31_ = 0.0; gdouble _tmp32_ = 0.0; GMainLoop* _tmp33_; GMainLoop* _tmp34_; GdkSeat* _tmp35_; IBusEngineDesc** _tmp36_; gint _tmp36__length1; IBusEngineDesc** _tmp37_; gint _tmp37__length1; IBusEngineDesc* _tmp38_; IBusEngineDesc* _tmp39_; gint result = 0; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (event != NULL, 0); g_return_val_if_fail (input_context_path != NULL, 0); _tmp0_ = self->priv->m_loop; _vala_assert (_tmp0_ == NULL, "m_loop == null"); _vala_assert (index < engines_length1, "index < engines.length"); self->priv->m_is_running = TRUE; self->priv->m_keyval = keyval; self->priv->m_modifiers = state; self->priv->m_primary_modifier = keybinding_manager_get_primary_modifier (state & KEYBINDING_MANAGER_MODIFIER_FILTER); self->priv->m_result = index; self->priv->m_selected_engine = (guint) self->priv->m_result; _tmp1_ = g_strdup (input_context_path); _g_free0 (self->priv->m_input_context_path); self->priv->m_input_context_path = _tmp1_; _g_object_unref0 (self->priv->m_result_engine); self->priv->m_result_engine = NULL; switcher_update_engines (self, engines, (gint) engines_length1); gtk_window_resize ((GtkWindow*) self, 1, 1); _tmp2_ = self->priv->m_label; _tmp3_ = self->priv->m_buttons; _tmp3__length1 = self->priv->m_buttons_length1; _tmp4_ = _tmp3_[index]; _tmp5_ = switcher_ibus_engine_button_get_transname (_tmp4_); _tmp6_ = _tmp5_; gtk_label_set_text (_tmp2_, _tmp6_); _tmp7_ = self->priv->m_buttons; _tmp7__length1 = self->priv->m_buttons_length1; _tmp8_ = _tmp7_[index]; gtk_widget_grab_focus ((GtkWidget*) _tmp8_); if (self->priv->m_popup_delay_time > ((guint) 0)) { gint _tmp9_ = 0; gint _tmp10_ = 0; gtk_window_get_position ((GtkWindow*) self, &_tmp9_, &_tmp10_); self->priv->m_root_x = _tmp9_; self->priv->m_root_y = _tmp10_; gtk_window_move ((GtkWindow*) self, -1000, -1000); } gtk_widget_show_all ((GtkWidget*) self); if (self->priv->m_popup_delay_time > ((guint) 0)) { self->priv->m_popup_delay_time_id = g_timeout_add_full (G_PRIORITY_DEFAULT, self->priv->m_popup_delay_time, ____lambda23__gsource_func, g_object_ref (self), g_object_unref); } _tmp11_ = gdk_event_get_seat (event); _tmp12_ = _g_object_ref0 (_tmp11_); seat = _tmp12_; _tmp13_ = seat; if (_tmp13_ == NULL) { GdkDisplay* display = NULL; GdkDisplay* _tmp14_; GdkDisplay* _tmp15_; GdkDisplay* _tmp16_; GdkSeat* _tmp17_; GdkSeat* _tmp18_; _tmp14_ = gtk_widget_get_display ((GtkWidget*) self); _tmp15_ = _g_object_ref0 (_tmp14_); display = _tmp15_; _tmp16_ = display; _tmp17_ = gdk_display_get_default_seat (_tmp16_); _tmp18_ = _g_object_ref0 (_tmp17_); _g_object_unref0 (seat); seat = _tmp18_; _g_object_unref0 (display); } _tmp19_ = seat; _tmp20_ = gdk_seat_get_pointer (_tmp19_); _tmp21_ = _g_object_ref0 (_tmp20_); _g_object_unref0 (pointer); pointer = _tmp21_; _tmp22_ = seat; _tmp23_ = gtk_widget_get_window ((GtkWidget*) self); status = gdk_seat_grab (_tmp22_, _tmp23_, GDK_SEAT_CAPABILITY_KEYBOARD, TRUE, NULL, event, NULL, NULL); _tmp24_ = status; if (_tmp24_ != GDK_GRAB_SUCCESS) { GdkGrabStatus _tmp25_; _tmp25_ = status; g_warning ("switcher.vala:202: Grab keyboard failed! status = %d", (gint) _tmp25_); } _tmp26_ = seat; _tmp27_ = gtk_widget_get_window ((GtkWidget*) self); status = gdk_seat_grab (_tmp26_, _tmp27_, GDK_SEAT_CAPABILITY_POINTER, TRUE, NULL, event, NULL, NULL); _tmp28_ = status; if (_tmp28_ != GDK_GRAB_SUCCESS) { GdkGrabStatus _tmp29_; _tmp29_ = status; g_warning ("switcher.vala:210: Grab pointer failed! status = %d", (gint) _tmp29_); } _tmp30_ = pointer; gdk_device_get_position_double (_tmp30_, NULL, &_tmp31_, &_tmp32_); self->priv->m_mouse_init_x = _tmp31_; self->priv->m_mouse_init_y = _tmp32_; self->priv->m_mouse_moved = FALSE; _tmp33_ = g_main_loop_new (NULL, FALSE); _g_main_loop_unref0 (self->priv->m_loop); self->priv->m_loop = _tmp33_; _tmp34_ = self->priv->m_loop; g_main_loop_run (_tmp34_); _g_main_loop_unref0 (self->priv->m_loop); self->priv->m_loop = NULL; _tmp35_ = seat; gdk_seat_ungrab (_tmp35_); gtk_widget_hide ((GtkWidget*) self); while (TRUE) { if (!gtk_events_pending ()) { break; } gtk_main_iteration (); } _tmp36_ = self->priv->m_engines; _tmp36__length1 = self->priv->m_engines_length1; _vala_assert (self->priv->m_result < _tmp36__length1, "m_result < m_engines.length"); _tmp37_ = self->priv->m_engines; _tmp37__length1 = self->priv->m_engines_length1; _tmp38_ = _tmp37_[self->priv->m_result]; _tmp39_ = _g_object_ref0 (_tmp38_); _g_object_unref0 (self->priv->m_result_engine); self->priv->m_result_engine = _tmp39_; self->priv->m_is_running = FALSE; result = self->priv->m_result; _g_object_unref0 (seat); _g_object_unref0 (pointer); return result; } static IBusEngineDesc** _vala_array_dup5 (IBusEngineDesc** self, gint length) { IBusEngineDesc** result; gint i; result = g_new0 (IBusEngineDesc*, length + 1); for (i = 0; i < length; i++) { IBusEngineDesc* _tmp0_; _tmp0_ = _g_object_ref0 (self[i]); result[i] = _tmp0_; } return result; } static Block10Data* block10_data_ref (Block10Data* _data10_) { g_atomic_int_inc (&_data10_->_ref_count_); return _data10_; } static void block10_data_unref (void * _userdata_) { Block10Data* _data10_; _data10_ = (Block10Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data10_->_ref_count_)) { Switcher* self; self = _data10_->self; _g_object_unref0 (_data10_->button); _g_object_unref0 (self); g_slice_free (Block10Data, _data10_); } } static gboolean _____lambda20_ (Switcher* self, GdkEventCrossing* e) { gboolean result = FALSE; g_return_val_if_fail (e != NULL, FALSE); result = TRUE; return result; } static gboolean ______lambda20__gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self) { gboolean result; result = _____lambda20_ ((Switcher*) self, event); return result; } static GdkEventMotion* _vala_GdkEventMotion_copy (GdkEventMotion* self) { return g_boxed_copy (gdk_event_get_type (), self); } static gpointer __vala_GdkEventMotion_copy0 (gpointer self) { return self ? _vala_GdkEventMotion_copy (self) : NULL; } static void _vala_GdkEventMotion_free (GdkEventMotion* self) { g_boxed_free (gdk_event_get_type (), self); } static gboolean _____lambda21_ (Block10Data* _data10_, GdkEventMotion* e) { Switcher* self; GdkEventMotion* pe = NULL; GdkEventMotion* _tmp0_; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; SwitcherIBusEngineButton* _tmp5_; gboolean result = FALSE; self = _data10_->self; g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = __vala_GdkEventMotion_copy0 (e); pe = _tmp0_; if (self->priv->m_selected_engine == ((guint) _data10_->index)) { result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } if (!self->priv->m_mouse_moved) { GdkEventMotion* _tmp3_; _tmp3_ = pe; _tmp2_ = self->priv->m_mouse_init_x == _tmp3_->x_root; } else { _tmp2_ = FALSE; } if (_tmp2_) { GdkEventMotion* _tmp4_; _tmp4_ = pe; _tmp1_ = self->priv->m_mouse_init_y == _tmp4_->y_root; } else { _tmp1_ = FALSE; } if (_tmp1_) { result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } self->priv->m_mouse_moved = TRUE; _tmp5_ = _data10_->button; gtk_widget_grab_focus ((GtkWidget*) _tmp5_); self->priv->m_selected_engine = (guint) _data10_->index; result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } static gboolean ______lambda21__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self) { gboolean result; result = _____lambda21_ (self, event); return result; } static gboolean _____lambda22_ (Block10Data* _data10_, GdkEventButton* e) { Switcher* self; GMainLoop* _tmp0_; gboolean result = FALSE; self = _data10_->self; g_return_val_if_fail (e != NULL, FALSE); self->priv->m_selected_engine = (guint) _data10_->index; self->priv->m_result = (gint) self->priv->m_selected_engine; _tmp0_ = self->priv->m_loop; g_main_loop_quit (_tmp0_); result = TRUE; return result; } static gboolean ______lambda22__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = _____lambda22_ (self, event); return result; } static void _vala_array_add25 (SwitcherIBusEngineButton** * array, gint* length, gint* 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, gint engines_length1) { SwitcherIBusEngineButton** _tmp0_; gint _tmp0__length1; SwitcherIBusEngineButton** _tmp3_; IBusEngineDesc** _tmp5_; gint _tmp5__length1; gint max_label_width = 0; GtkLabel* _tmp40_; SwitcherIBusEngineButton** _tmp41_; gint _tmp41__length1; SwitcherIBusEngineButton* _tmp42_; const gchar* _tmp43_; const gchar* _tmp44_; GtkLabel* _tmp45_; GdkDisplay* display = NULL; GdkDisplay* _tmp46_; GdkDisplay* _tmp47_; gint screen_width = 0; GdkMonitor* monitor = NULL; GdkDisplay* _tmp48_; GdkMonitor* _tmp49_; GdkMonitor* _tmp50_; GdkRectangle area = {0}; GdkMonitor* _tmp51_; GdkRectangle _tmp52_ = {0}; GdkRectangle _tmp53_; gboolean _tmp54_ = FALSE; 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 < button_collection_length1; button_it = button_it + 1) { SwitcherIBusEngineButton* _tmp1_; SwitcherIBusEngineButton* button = NULL; _tmp1_ = _g_object_ref0 (button_collection[button_it]); button = _tmp1_; { SwitcherIBusEngineButton* _tmp2_; _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; if (engines == NULL) { IBusEngineDesc** _tmp4_; _tmp4_ = 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 = _tmp4_; self->priv->m_engines_length1 = 0; self->priv->_m_engines_size_ = self->priv->m_engines_length1; return; } _tmp5_ = (engines != NULL) ? _vala_array_dup5 (engines, engines_length1) : ((gpointer) engines); _tmp5__length1 = engines_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 = _tmp5_; self->priv->m_engines_length1 = _tmp5__length1; self->priv->_m_engines_size_ = self->priv->m_engines_length1; max_label_width = 0; { gint i = 0; i = 0; { gboolean _tmp6_ = FALSE; _tmp6_ = TRUE; while (TRUE) { Block10Data* _data10_; IBusEngineDesc** _tmp8_; gint _tmp8__length1; IBusEngineDesc* engine = NULL; IBusEngineDesc** _tmp9_; gint _tmp9__length1; IBusEngineDesc* _tmp10_; IBusEngineDesc* _tmp11_; IBusEngineDesc* _tmp12_; SwitcherIBusEngineButton* _tmp13_; gchar* longname = NULL; IBusEngineDesc* _tmp14_; const gchar* _tmp15_; gchar* _tmp16_; gchar* textdomain = NULL; IBusEngineDesc* _tmp17_; const gchar* _tmp18_; gchar* _tmp19_; gchar* transname = NULL; const gchar* _tmp20_; const gchar* _tmp21_; gchar* _tmp22_; SwitcherIBusEngineButton* _tmp23_; SwitcherIBusEngineButton* _tmp24_; SwitcherIBusEngineButton* _tmp25_; SwitcherIBusEngineButton* _tmp26_; SwitcherIBusEngineButton* _tmp27_; SwitcherIBusEngineButton* _tmp28_; SwitcherIBusEngineButton* _tmp29_; const gchar* _tmp30_; GtkLabel* _tmp31_; const gchar* _tmp32_; gint width = 0; GtkLabel* _tmp33_; gint _tmp34_ = 0; GtkBox* _tmp35_; SwitcherIBusEngineButton* _tmp36_; SwitcherIBusEngineButton** _tmp37_; gint _tmp37__length1; SwitcherIBusEngineButton* _tmp38_; SwitcherIBusEngineButton* _tmp39_; _data10_ = g_slice_new0 (Block10Data); _data10_->_ref_count_ = 1; _data10_->self = g_object_ref (self); if (!_tmp6_) { gint _tmp7_; _tmp7_ = i; i = _tmp7_ + 1; } _tmp6_ = FALSE; _tmp8_ = self->priv->m_engines; _tmp8__length1 = self->priv->m_engines_length1; if (!(i < _tmp8__length1)) { block10_data_unref (_data10_); _data10_ = NULL; break; } _data10_->index = i; _tmp9_ = self->priv->m_engines; _tmp9__length1 = self->priv->m_engines_length1; _tmp10_ = _tmp9_[i]; _tmp11_ = _g_object_ref0 (_tmp10_); engine = _tmp11_; _tmp12_ = engine; _tmp13_ = switcher_ibus_engine_button_new (_tmp12_, self); g_object_ref_sink (_tmp13_); _data10_->button = _tmp13_; _tmp14_ = engine; _tmp15_ = ibus_engine_desc_get_longname (_tmp14_); _tmp16_ = g_strdup (_tmp15_); longname = _tmp16_; _tmp17_ = engine; _tmp18_ = ibus_engine_desc_get_textdomain (_tmp17_); _tmp19_ = g_strdup (_tmp18_); textdomain = _tmp19_; _tmp20_ = textdomain; _tmp21_ = longname; _tmp22_ = g_strdup (g_dgettext (_tmp20_, _tmp21_)); transname = _tmp22_; _tmp23_ = _data10_->button; gtk_button_set_relief ((GtkButton*) _tmp23_, GTK_RELIEF_NONE); _tmp24_ = _data10_->button; gtk_widget_add_events ((GtkWidget*) _tmp24_, (gint) GDK_POINTER_MOTION_MASK); _tmp25_ = _data10_->button; gtk_widget_show ((GtkWidget*) _tmp25_); _tmp26_ = _data10_->button; g_signal_connect_object ((GtkWidget*) _tmp26_, "enter-notify-event", (GCallback) ______lambda20__gtk_widget_enter_notify_event, self, 0); _tmp27_ = _data10_->button; g_signal_connect_data ((GtkWidget*) _tmp27_, "motion-notify-event", (GCallback) ______lambda21__gtk_widget_motion_notify_event, block10_data_ref (_data10_), (GClosureNotify) block10_data_unref, 0); _tmp28_ = _data10_->button; g_signal_connect_data ((GtkWidget*) _tmp28_, "button-press-event", (GCallback) ______lambda22__gtk_widget_button_press_event, block10_data_ref (_data10_), (GClosureNotify) block10_data_unref, 0); _tmp29_ = _data10_->button; _tmp30_ = transname; switcher_ibus_engine_button_set_transname (_tmp29_, _tmp30_); _tmp31_ = self->priv->m_label; _tmp32_ = transname; gtk_label_set_label (_tmp31_, _tmp32_); _tmp33_ = self->priv->m_label; gtk_widget_get_preferred_width ((GtkWidget*) _tmp33_, NULL, &_tmp34_); width = _tmp34_; max_label_width = MAX (max_label_width, width); _tmp35_ = self->priv->m_box; _tmp36_ = _data10_->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_ = _data10_->button; _tmp39_ = _g_object_ref0 (_tmp38_); _vala_array_add25 (&self->priv->m_buttons, &self->priv->m_buttons_length1, &self->priv->_m_buttons_size_, _tmp39_); _g_free0 (transname); _g_free0 (textdomain); _g_free0 (longname); _g_object_unref0 (engine); block10_data_unref (_data10_); _data10_ = 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_transname (_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_; screen_width = 0; _tmp48_ = display; _tmp49_ = gdk_display_get_primary_monitor (_tmp48_); _tmp50_ = _g_object_ref0 (_tmp49_); monitor = _tmp50_; _tmp51_ = monitor; gdk_monitor_get_geometry (_tmp51_, &_tmp52_); area = _tmp52_; _tmp53_ = area; screen_width = _tmp53_.width; if (screen_width > 0) { _tmp54_ = max_label_width > (screen_width / 4); } else { _tmp54_ = FALSE; } if (_tmp54_) { max_label_width = screen_width / 4; } max_label_width += 20; gtk_window_set_default_size ((GtkWindow*) self, max_label_width, -1); _g_object_unref0 (monitor); _g_object_unref0 (display); } static void switcher_next_engine (Switcher* self) { IBusEngineDesc** _tmp0_; gint _tmp0__length1; GtkLabel* _tmp2_; SwitcherIBusEngineButton** _tmp3_; gint _tmp3__length1; SwitcherIBusEngineButton* _tmp4_; const gchar* _tmp5_; const gchar* _tmp6_; SwitcherIBusEngineButton** _tmp7_; gint _tmp7__length1; SwitcherIBusEngineButton* _tmp8_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_engines; _tmp0__length1 = self->priv->m_engines_length1; if (self->priv->m_selected_engine == ((guint) (_tmp0__length1 - 1))) { self->priv->m_selected_engine = (guint) 0; } else { guint _tmp1_; _tmp1_ = self->priv->m_selected_engine; self->priv->m_selected_engine = _tmp1_ + 1; } _tmp2_ = self->priv->m_label; _tmp3_ = self->priv->m_buttons; _tmp3__length1 = self->priv->m_buttons_length1; _tmp4_ = _tmp3_[self->priv->m_selected_engine]; _tmp5_ = switcher_ibus_engine_button_get_transname (_tmp4_); _tmp6_ = _tmp5_; gtk_label_set_text (_tmp2_, _tmp6_); _tmp7_ = self->priv->m_buttons; _tmp7__length1 = self->priv->m_buttons_length1; _tmp8_ = _tmp7_[self->priv->m_selected_engine]; gtk_window_set_focus ((GtkWindow*) self, (GtkWidget*) _tmp8_); } static void switcher_previous_engine (Switcher* self) { GtkLabel* _tmp2_; SwitcherIBusEngineButton** _tmp3_; gint _tmp3__length1; SwitcherIBusEngineButton* _tmp4_; const gchar* _tmp5_; const gchar* _tmp6_; SwitcherIBusEngineButton** _tmp7_; gint _tmp7__length1; SwitcherIBusEngineButton* _tmp8_; g_return_if_fail (self != NULL); if (self->priv->m_selected_engine == ((guint) 0)) { IBusEngineDesc** _tmp0_; gint _tmp0__length1; _tmp0_ = self->priv->m_engines; _tmp0__length1 = self->priv->m_engines_length1; self->priv->m_selected_engine = (guint) (_tmp0__length1 - 1); } else { guint _tmp1_; _tmp1_ = self->priv->m_selected_engine; self->priv->m_selected_engine = _tmp1_ - 1; } _tmp2_ = self->priv->m_label; _tmp3_ = self->priv->m_buttons; _tmp3__length1 = self->priv->m_buttons_length1; _tmp4_ = _tmp3_[self->priv->m_selected_engine]; _tmp5_ = switcher_ibus_engine_button_get_transname (_tmp4_); _tmp6_ = _tmp5_; gtk_label_set_text (_tmp2_, _tmp6_); _tmp7_ = self->priv->m_buttons; _tmp7__length1 = self->priv->m_buttons_length1; _tmp8_ = _tmp7_[self->priv->m_selected_engine]; gtk_window_set_focus ((GtkWindow*) self, (GtkWidget*) _tmp8_); } static void switcher_restore_window_position (Switcher* self, const gchar* debug_str) { g_return_if_fail (self != NULL); g_return_if_fail (debug_str != NULL); g_debug ("switcher.vala:404: restore_window_position %s: (%ld, %ld)\n", debug_str, (glong) self->priv->m_root_x, (glong) self->priv->m_root_y); if (self->priv->m_popup_delay_time_id == ((guint) 0)) { return; } g_source_remove (self->priv->m_popup_delay_time_id); self->priv->m_popup_delay_time_id = (guint) 0; gtk_window_move ((GtkWindow*) self, self->priv->m_root_x, self->priv->m_root_y); } 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 retval = FALSE; GdkEventKey* pe = NULL; GdkEventKey* _tmp0_; gboolean result = FALSE; self = (Switcher*) base; g_return_val_if_fail (e != NULL, FALSE); retval = TRUE; _tmp0_ = __vala_GdkEventKey_copy0 (e); pe = _tmp0_; if (self->priv->m_popup_delay_time > ((guint) 0)) { switcher_restore_window_position (self, "pressed"); } { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { guint modifiers = 0U; GdkEventKey* _tmp2_; GdkModifierType _tmp3_; gboolean _tmp4_ = FALSE; GdkEventKey* _tmp5_; GdkEventKey* _tmp6_; if (!_tmp1_) { if (!FALSE) { break; } } _tmp1_ = FALSE; _tmp2_ = pe; _tmp3_ = _tmp2_->state; modifiers = KEYBINDING_MANAGER_MODIFIER_FILTER & _tmp3_; if (modifiers != self->priv->m_modifiers) { _tmp4_ = modifiers != (self->priv->m_modifiers | GDK_SHIFT_MASK); } else { _tmp4_ = FALSE; } if (_tmp4_) { break; } _tmp5_ = pe; if (_tmp5_->keyval == self->priv->m_keyval) { if (modifiers == self->priv->m_modifiers) { switcher_next_engine (self); } else { switcher_previous_engine (self); } break; } _tmp6_ = pe; switch (_tmp6_->keyval) { 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* _tmp7_; _tmp7_ = pe; g_debug ("switcher.vala:470: 0x%04x", _tmp7_->keyval); break; } } } } result = retval; __vala_GdkEventKey_free0 (pe); return result; } static gboolean switcher_real_key_release_event (GtkWidget* base, GdkEventKey* e) { Switcher * self; GdkEventKey* pe = NULL; GdkEventKey* _tmp0_; GdkEventKey* _tmp1_; GdkModifierType _tmp2_; GMainLoop* _tmp3_; GMainLoop* _tmp4_; gboolean result = FALSE; self = (Switcher*) base; g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = __vala_GdkEventKey_copy0 (e); pe = _tmp0_; _tmp1_ = pe; _tmp2_ = self->priv->m_primary_modifier; if (keybinding_manager_primary_modifier_still_pressed ((GdkEvent*) _tmp1_, (guint) _tmp2_)) { result = TRUE; __vala_GdkEventKey_free0 (pe); return result; } _tmp3_ = self->priv->m_loop; if (_tmp3_ == NULL) { result = FALSE; __vala_GdkEventKey_free0 (pe); return result; } if (self->priv->m_popup_delay_time > ((guint) 0)) { if (self->priv->m_popup_delay_time_id != ((guint) 0)) { g_source_remove (self->priv->m_popup_delay_time_id); self->priv->m_popup_delay_time_id = (guint) 0; } } _tmp4_ = self->priv->m_loop; g_main_loop_quit (_tmp4_); self->priv->m_result = (gint) self->priv->m_selected_engine; result = TRUE; __vala_GdkEventKey_free0 (pe); return result; } void switcher_set_popup_delay_time (Switcher* self, guint popup_delay_time) { g_return_if_fail (self != NULL); self->priv->m_popup_delay_time = popup_delay_time; } static gchar* string_slice (const gchar* self, glong start, glong end) { glong string_length = 0L; gint _tmp0_; gint _tmp1_; gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; gchar* _tmp4_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = strlen (self); _tmp1_ = _tmp0_; string_length = (glong) _tmp1_; if (start < ((glong) 0)) { start = string_length + start; } if (end < ((glong) 0)) { end = string_length + end; } if (start >= ((glong) 0)) { _tmp2_ = start <= string_length; } else { _tmp2_ = FALSE; } g_return_val_if_fail (_tmp2_, NULL); if (end >= ((glong) 0)) { _tmp3_ = end <= string_length; } else { _tmp3_ = FALSE; } g_return_val_if_fail (_tmp3_, NULL); g_return_val_if_fail (start <= end, NULL); _tmp4_ = g_strndup (((gchar*) self) + start, (gsize) (end - start)); result = _tmp4_; return result; } static gchar* g_unichar_to_string (gunichar self) { gchar* str = NULL; gchar* _tmp0_; gchar* result = NULL; _tmp0_ = g_new0 (gchar, 7); str = (gchar*) _tmp0_; g_unichar_to_utf8 (self, str); result = str; return result; } gchar* switcher_get_xkb_language (Switcher* self, IBusEngineDesc* engine) { gchar* name = NULL; const gchar* _tmp0_; gchar* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_; gchar* _tmp4_; gchar* language = NULL; GHashTable* _tmp5_; const gchar* _tmp6_; gconstpointer _tmp7_; gchar* _tmp8_; const gchar* _tmp9_; const gchar* _tmp10_; gchar* _tmp11_; gint length = 0; const gchar* _tmp12_; gint _tmp13_; gint _tmp14_; const gchar* _tmp15_; gchar* _tmp16_; gint index = 0; GHashTable* _tmp17_; GList* _tmp18_; GHashTable* _tmp29_; const gchar* _tmp30_; gchar* _tmp31_; const gchar* _tmp32_; gchar* _tmp33_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (engine != NULL, NULL); _tmp0_ = ibus_engine_desc_get_name (engine); _tmp1_ = g_strdup (_tmp0_); name = _tmp1_; _tmp2_ = name; _tmp3_ = string_slice (_tmp2_, (glong) 0, (glong) 4); _tmp4_ = _tmp3_; _vala_assert (g_strcmp0 (_tmp4_, "xkb:") == 0, "name[0:4] == \"xkb:\""); _g_free0 (_tmp4_); _tmp5_ = self->priv->m_xkb_languages; _tmp6_ = name; _tmp7_ = g_hash_table_lookup (_tmp5_, _tmp6_); _tmp8_ = g_strdup ((const gchar*) _tmp7_); language = _tmp8_; _tmp9_ = language; if (_tmp9_ != NULL) { result = language; _g_free0 (name); return result; } _tmp10_ = ibus_engine_desc_get_language (engine); _tmp11_ = g_strdup (_tmp10_); _g_free0 (language); language = _tmp11_; _tmp12_ = language; _tmp13_ = strlen (_tmp12_); _tmp14_ = _tmp13_; length = _tmp14_; if (length < 2) { result = language; _g_free0 (name); return result; } _tmp15_ = language; _tmp16_ = g_utf8_strup (_tmp15_, (gssize) -1); _g_free0 (language); language = _tmp16_; index = 0; _tmp17_ = self->priv->m_xkb_languages; _tmp18_ = g_hash_table_get_values (_tmp17_); { GList* saved_language_collection = NULL; GList* saved_language_it = NULL; saved_language_collection = _tmp18_; 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* _tmp19_; const gchar* _tmp20_; gchar* _tmp21_; gchar* _tmp22_; gboolean _tmp23_; _tmp19_ = language; _tmp20_ = saved_language; _tmp21_ = string_slice (_tmp20_, (glong) 0, (glong) length); _tmp22_ = _tmp21_; _tmp23_ = g_strcmp0 (_tmp19_, _tmp22_) == 0; _g_free0 (_tmp22_); if (_tmp23_) { gint _tmp24_; _tmp24_ = index; index = _tmp24_ + 1; } } } (saved_language_collection == NULL) ? NULL : (saved_language_collection = (g_list_free (saved_language_collection), NULL)); } if (index > 0) { gunichar u = 0U; const gchar* _tmp25_; gchar* _tmp26_; gchar* _tmp27_; gchar* _tmp28_; u = (gunichar) (0x2081 + index); _tmp25_ = language; _tmp26_ = g_unichar_to_string (u); _tmp27_ = _tmp26_; _tmp28_ = g_strdup_printf ("%s%s", _tmp25_, _tmp27_); _g_free0 (language); language = _tmp28_; _g_free0 (_tmp27_); } _tmp29_ = self->priv->m_xkb_languages; _tmp30_ = name; _tmp31_ = g_strdup (_tmp30_); _tmp32_ = language; _tmp33_ = g_strdup (_tmp32_); g_hash_table_insert (_tmp29_, _tmp31_, _tmp33_); result = language; _g_free0 (name); return result; } gboolean switcher_is_running (Switcher* self) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); result = self->priv->m_is_running; return result; } gchar* switcher_get_input_context_path (Switcher* self) { const gchar* _tmp0_; gchar* _tmp1_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_input_context_path; _tmp1_ = g_strdup (_tmp0_); result = _tmp1_; return result; } IBusEngineDesc* switcher_get_selected_engine (Switcher* self) { IBusEngineDesc* _tmp0_; IBusEngineDesc* _tmp1_; IBusEngineDesc* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_result_engine; _tmp1_ = _g_object_ref0 (_tmp0_); result = _tmp1_; return result; } void switcher_reset (Switcher* self) { gchar* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = g_strdup (""); _g_free0 (self->priv->m_input_context_path); self->priv->m_input_context_path = _tmp0_; self->priv->m_result = -1; _g_object_unref0 (self->priv->m_result_engine); self->priv->m_result_engine = NULL; } static inline gpointer switcher_ibus_engine_button_get_instance_private (SwitcherIBusEngineButton* self) { return G_STRUCT_MEMBER_P (self, SwitcherIBusEngineButton_private_offset); } static SwitcherIBusEngineButton* switcher_ibus_engine_button_construct (GType object_type, IBusEngineDesc* engine, Switcher* switcher) { SwitcherIBusEngineButton * self = NULL; gchar* longname = NULL; const gchar* _tmp0_; gchar* _tmp1_; gchar* textdomain = NULL; const gchar* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; const gchar* _tmp5_; gchar* name = NULL; const gchar* _tmp6_; gchar* _tmp7_; gboolean _tmp8_ = FALSE; const gchar* _tmp9_; gint _tmp10_; gint _tmp11_; 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_ = ibus_engine_desc_get_longname (engine); _tmp1_ = g_strdup (_tmp0_); longname = _tmp1_; _tmp2_ = ibus_engine_desc_get_textdomain (engine); _tmp3_ = g_strdup (_tmp2_); textdomain = _tmp3_; _tmp4_ = textdomain; _tmp5_ = longname; switcher_ibus_engine_button_set_transname (self, g_dgettext (_tmp4_, _tmp5_)); _tmp6_ = ibus_engine_desc_get_name (engine); _tmp7_ = g_strdup (_tmp6_); name = _tmp7_; _tmp9_ = name; _tmp10_ = strlen (_tmp9_); _tmp11_ = _tmp10_; if (_tmp11_ < 4) { _tmp8_ = TRUE; } else { const gchar* _tmp12_; gchar* _tmp13_; gchar* _tmp14_; _tmp12_ = name; _tmp13_ = string_slice (_tmp12_, (glong) 0, (glong) 4); _tmp14_ = _tmp13_; _tmp8_ = g_strcmp0 (_tmp14_, "xkb:") != 0; _g_free0 (_tmp14_); } if (_tmp8_) { IconWidget* icon = NULL; const gchar* _tmp15_; IconWidget* _tmp16_; IconWidget* _tmp17_; IconWidget* _tmp18_; IconWidget* _tmp19_; _tmp15_ = ibus_engine_desc_get_icon (engine); _tmp16_ = icon_widget_new (_tmp15_, GTK_ICON_SIZE_DIALOG); g_object_ref_sink (_tmp16_); icon = _tmp16_; _tmp17_ = icon; gtk_widget_set_halign ((GtkWidget*) _tmp17_, GTK_ALIGN_CENTER); _tmp18_ = icon; gtk_widget_set_valign ((GtkWidget*) _tmp18_, GTK_ALIGN_CENTER); _tmp19_ = icon; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp19_); _g_object_unref0 (icon); } else { gchar* language = NULL; gchar* _tmp20_; GtkLabel* label = NULL; const gchar* _tmp21_; GtkLabel* _tmp22_; GtkLabel* _tmp23_; GtkLabel* _tmp24_; gchar* language_font = NULL; gchar* _tmp25_; gchar* markup = NULL; const gchar* _tmp26_; const gchar* _tmp27_; gchar* _tmp28_; GtkLabel* _tmp29_; const gchar* _tmp30_; gint fixed_width = 0; gint fixed_height = 0; gint _tmp31_ = 0; gint _tmp32_ = 0; GtkLabel* _tmp33_; GtkLabel* _tmp34_; _tmp20_ = switcher_get_xkb_language (switcher, engine); 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; gtk_widget_set_size_request ((GtkWidget*) _tmp33_, fixed_width, fixed_height); _tmp34_ = label; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp34_); _g_free0 (markup); _g_free0 (language_font); _g_object_unref0 (label); _g_free0 (language); } _g_free0 (name); _g_free0 (textdomain); _g_free0 (longname); 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 _tmp0_; gboolean _tmp1_; gboolean result = FALSE; self = (SwitcherIBusEngineButton*) base; g_return_val_if_fail (cr != NULL, FALSE); GTK_WIDGET_CLASS (switcher_ibus_engine_button_parent_class)->draw ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_button_get_type (), GtkButton), cr); g_object_get ((GtkWidget*) self, "is-focus", &_tmp0_, NULL); _tmp1_ = _tmp0_; if (_tmp1_) { cairo_save (cr); cairo_rectangle (cr, (gdouble) 0, (gdouble) 0, (gdouble) gtk_widget_get_allocated_width ((GtkWidget*) self), (gdouble) gtk_widget_get_allocated_height ((GtkWidget*) self)); cairo_set_source_rgba (cr, 0.0, 0.0, 1.0, 0.1); cairo_fill (cr); cairo_restore (cr); } result = TRUE; return result; } static const gchar* switcher_ibus_engine_button_get_transname (SwitcherIBusEngineButton* self) { const gchar* result; const gchar* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_transname; result = _tmp0_; return result; } static void switcher_ibus_engine_button_set_transname (SwitcherIBusEngineButton* self, const gchar* value) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, switcher_ibus_engine_button_get_transname (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_transname); self->priv->_transname = _tmp0_; g_object_notify_by_pspec ((GObject *) self, switcher_ibus_engine_button_properties[SWITCHER_IBUS_ENGINE_BUTTON_TRANSNAME_PROPERTY]); } } static void switcher_ibus_engine_button_class_init (SwitcherIBusEngineButtonClass * klass, gpointer klass_data) { switcher_ibus_engine_button_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &SwitcherIBusEngineButton_private_offset); ((GtkWidgetClass *) klass)->draw = (gboolean (*) (GtkWidget*, cairo_t*)) 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_TRANSNAME_PROPERTY, switcher_ibus_engine_button_properties[SWITCHER_IBUS_ENGINE_BUTTON_TRANSNAME_PROPERTY] = g_param_spec_string ("transname", "transname", "transname", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void switcher_ibus_engine_button_instance_init (SwitcherIBusEngineButton * self, gpointer klass) { self->priv = switcher_ibus_engine_button_get_instance_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->_transname); G_OBJECT_CLASS (switcher_ibus_engine_button_parent_class)->finalize (obj); } static GType switcher_ibus_engine_button_get_type_once (void) { 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); SwitcherIBusEngineButton_private_offset = g_type_add_instance_private (switcher_ibus_engine_button_type_id, sizeof (SwitcherIBusEngineButtonPrivate)); return switcher_ibus_engine_button_type_id; } 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)) { GType switcher_ibus_engine_button_type_id; switcher_ibus_engine_button_type_id = switcher_ibus_engine_button_get_type_once (); 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_TRANSNAME_PROPERTY: g_value_set_string (value, switcher_ibus_engine_button_get_transname (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_TRANSNAME_PROPERTY: switcher_ibus_engine_button_set_transname (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, gpointer klass_data) { switcher_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &Switcher_private_offset); ((GtkWidgetClass *) klass)->show = (void (*) (GtkWidget*)) switcher_real_show; ((GtkWidgetClass *) klass)->key_press_event = (gboolean (*) (GtkWidget*, GdkEventKey*)) switcher_real_key_press_event; ((GtkWidgetClass *) klass)->key_release_event = (gboolean (*) (GtkWidget*, GdkEventKey*)) switcher_real_key_release_event; G_OBJECT_CLASS (klass)->finalize = switcher_finalize; } static void switcher_instance_init (Switcher * self, gpointer klass) { SwitcherIBusEngineButton** _tmp0_; gchar* _tmp1_; GHashFunc _tmp2_; GEqualFunc _tmp3_; GHashTable* _tmp4_; self->priv = switcher_get_instance_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_is_running = FALSE; _tmp1_ = g_strdup (""); self->priv->m_input_context_path = _tmp1_; self->priv->m_result = -1; self->priv->m_result_engine = NULL; self->priv->m_popup_delay_time = (guint) 0; self->priv->m_popup_delay_time_id = (guint) 0; _tmp2_ = g_str_hash; _tmp3_ = g_str_equal; _tmp4_ = g_hash_table_new_full (_tmp2_, _tmp3_, _g_free0_, _g_free0_); self->priv->m_xkb_languages = _tmp4_; } 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_free0 (self->priv->m_input_context_path); _g_main_loop_unref0 (self->priv->m_loop); _g_object_unref0 (self->priv->m_result_engine); _g_hash_table_unref0 (self->priv->m_xkb_languages); G_OBJECT_CLASS (switcher_parent_class)->finalize (obj); } static GType switcher_get_type_once (void) { 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); Switcher_private_offset = g_type_add_instance_private (switcher_type_id, sizeof (SwitcherPrivate)); return switcher_type_id; } GType switcher_get_type (void) { static volatile gsize switcher_type_id__volatile = 0; if (g_once_init_enter (&switcher_type_id__volatile)) { GType switcher_type_id; switcher_type_id = switcher_get_type_once (); 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)) { gint 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.22/ui/gtk3/extension.c0000644000000000000000000004047513623751710013116 00000000000000/* extension.c generated by valac 0.47.91, the Vala compiler * generated from extension.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2018 Peng Huang * Copyright(c) 2018 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_EXTENSION_GTK (extension_gtk_get_type ()) #define EXTENSION_GTK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EXTENSION_GTK, ExtensionGtk)) #define EXTENSION_GTK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EXTENSION_GTK, ExtensionGtkClass)) #define IS_EXTENSION_GTK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EXTENSION_GTK)) #define IS_EXTENSION_GTK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EXTENSION_GTK)) #define EXTENSION_GTK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EXTENSION_GTK, ExtensionGtkClass)) typedef struct _ExtensionGtk ExtensionGtk; typedef struct _ExtensionGtkClass ExtensionGtkClass; typedef struct _ExtensionGtkPrivate ExtensionGtkPrivate; #define TYPE_PANEL_BINDING (panel_binding_get_type ()) #define PANEL_BINDING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PANEL_BINDING, PanelBinding)) #define PANEL_BINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PANEL_BINDING, PanelBindingClass)) #define IS_PANEL_BINDING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PANEL_BINDING)) #define IS_PANEL_BINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PANEL_BINDING)) #define PANEL_BINDING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PANEL_BINDING, PanelBindingClass)) typedef struct _PanelBinding PanelBinding; typedef struct _PanelBindingClass PanelBindingClass; enum { EXTENSION_GTK_0_PROPERTY, EXTENSION_GTK_NUM_PROPERTIES }; static GParamSpec* extension_gtk_properties[EXTENSION_GTK_NUM_PROPERTIES]; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) struct _ExtensionGtk { GtkApplication parent_instance; ExtensionGtkPrivate * priv; }; struct _ExtensionGtkClass { GtkApplicationClass parent_class; }; struct _ExtensionGtkPrivate { IBusBus* m_bus; PanelBinding* m_panel; }; static gint ExtensionGtk_private_offset; static gpointer extension_gtk_parent_class = NULL; GType extension_gtk_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (ExtensionGtk, g_object_unref) GType panel_binding_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PanelBinding, g_object_unref) ExtensionGtk* extension_gtk_new (gchar** args, gint args_length1); ExtensionGtk* extension_gtk_construct (GType object_type, gchar** args, gint args_length1); static void extension_gtk_bus_connected (ExtensionGtk* self, IBusBus* bus); static void _extension_gtk_bus_connected_ibus_bus_connected (IBusBus* _sender, gpointer self); static void extension_gtk_bus_disconnected (ExtensionGtk* self, IBusBus* bus); static void _extension_gtk_bus_disconnected_ibus_bus_disconnected (IBusBus* _sender, gpointer self); static void extension_gtk_init (ExtensionGtk* self); static void extension_gtk_bus_name_acquired_cb (ExtensionGtk* self, GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters); static void _extension_gtk_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 extension_gtk_bus_name_lost_cb (ExtensionGtk* self, GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters); static void _extension_gtk_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); PanelBinding* panel_binding_new (IBusBus* bus, GtkApplication* application); PanelBinding* panel_binding_construct (GType object_type, IBusBus* bus, GtkApplication* application); void panel_binding_load_settings (PanelBinding* self); void panel_binding_disconnect_signals (PanelBinding* self); static void extension_gtk_real_activate (GApplication* base); gint extension_gtk_main (gchar** args, gint args_length1); static void extension_gtk_finalize (GObject * obj); static GType extension_gtk_get_type_once (void); static inline gpointer extension_gtk_get_instance_private (ExtensionGtk* self) { return G_STRUCT_MEMBER_P (self, ExtensionGtk_private_offset); } static void _extension_gtk_bus_connected_ibus_bus_connected (IBusBus* _sender, gpointer self) { extension_gtk_bus_connected ((ExtensionGtk*) self, _sender); } static void _extension_gtk_bus_disconnected_ibus_bus_disconnected (IBusBus* _sender, gpointer self) { extension_gtk_bus_disconnected ((ExtensionGtk*) self, _sender); } ExtensionGtk* extension_gtk_construct (GType object_type, gchar** args, gint args_length1) { ExtensionGtk * self = NULL; IBusBus* _tmp0_; IBusBus* _tmp1_; IBusBus* _tmp2_; IBusBus* _tmp3_; self = (ExtensionGtk*) g_object_new (object_type, "application-id", "org.freedesktop.IBus.Panel.Extension.Gtk3", "flags", G_APPLICATION_FLAGS_NONE, NULL); bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); ibus_init (); gtk_init ((gint*) (&args_length1), &args); _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_object (_tmp1_, "connected", (GCallback) _extension_gtk_bus_connected_ibus_bus_connected, self, 0); _tmp2_ = self->priv->m_bus; g_signal_connect_object (_tmp2_, "disconnected", (GCallback) _extension_gtk_bus_disconnected_ibus_bus_disconnected, self, 0); _tmp3_ = self->priv->m_bus; if (ibus_bus_is_connected (_tmp3_)) { extension_gtk_init (self); } return self; } ExtensionGtk* extension_gtk_new (gchar** args, gint args_length1) { return extension_gtk_construct (TYPE_EXTENSION_GTK, args, args_length1); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void _extension_gtk_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) { extension_gtk_bus_name_acquired_cb ((ExtensionGtk*) self, connection, sender_name, object_path, interface_name, signal_name, parameters); } static void _extension_gtk_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) { extension_gtk_bus_name_lost_cb ((ExtensionGtk*) self, connection, sender_name, object_path, interface_name, signal_name, parameters); } static void extension_gtk_init (ExtensionGtk* self) { GDBusConnection* connection = NULL; IBusBus* _tmp0_; GDBusConnection* _tmp1_; GDBusConnection* _tmp2_; IBusBusNameFlag flags = 0U; IBusBus* _tmp3_; 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_EXTENSION_EMOJI, G_DBUS_SIGNAL_FLAGS_NONE, _extension_gtk_bus_name_acquired_cb_gd_bus_signal_callback, g_object_ref (self), g_object_unref); g_dbus_connection_signal_subscribe (connection, "org.freedesktop.DBus", "org.freedesktop.DBus", "NameLost", "/org/freedesktop/DBus", IBUS_SERVICE_PANEL_EXTENSION_EMOJI, G_DBUS_SIGNAL_FLAGS_NONE, _extension_gtk_bus_name_lost_cb_gd_bus_signal_callback, g_object_ref (self), g_object_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_EXTENSION_EMOJI, (guint32) flags); _g_object_unref0 (connection); } static void extension_gtk_bus_name_acquired_cb (ExtensionGtk* self, GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters) { IBusBus* _tmp0_; PanelBinding* _tmp1_; PanelBinding* _tmp2_; 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); g_debug ("extension.vala:75: signal_name = %s", signal_name); _tmp0_ = self->priv->m_bus; _tmp1_ = panel_binding_new (_tmp0_, (GtkApplication*) self); g_object_ref_sink (_tmp1_); _g_object_unref0 (self->priv->m_panel); self->priv->m_panel = _tmp1_; _tmp2_ = self->priv->m_panel; panel_binding_load_settings (_tmp2_); } static void extension_gtk_bus_name_lost_cb (ExtensionGtk* self, GDBusConnection* connection, const gchar* sender_name, const gchar* object_path, const gchar* interface_name, const gchar* signal_name, GVariant* parameters) { PanelBinding* _tmp0_; 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); g_debug ("extension.vala:92: signal_name = %s", signal_name); _tmp0_ = self->priv->m_panel; panel_binding_disconnect_signals (_tmp0_); _g_object_unref0 (self->priv->m_panel); self->priv->m_panel = NULL; } static void extension_gtk_bus_disconnected (ExtensionGtk* self, IBusBus* bus) { g_return_if_fail (self != NULL); g_return_if_fail (bus != NULL); g_debug ("extension.vala:100: connection is lost."); gtk_main_quit (); } static void extension_gtk_bus_connected (ExtensionGtk* self, IBusBus* bus) { g_return_if_fail (self != NULL); g_return_if_fail (bus != NULL); extension_gtk_init (self); } static void extension_gtk_real_activate (GApplication* base) { ExtensionGtk * self; self = (ExtensionGtk*) base; gtk_main (); } gint extension_gtk_main (gchar** args, gint args_length1) { ExtensionGtk* extension = NULL; ExtensionGtk* _tmp0_; gint status = 0; gint result = 0; g_unsetenv ("GDK_CORE_DEVICE_EVENTS"); _tmp0_ = extension_gtk_new (args, args_length1); extension = _tmp0_; status = g_application_run ((GApplication*) extension, (gint) args_length1, args); result = status; _g_object_unref0 (extension); return result; } int main (int argc, char ** argv) { return extension_gtk_main (argv, argc); } static void extension_gtk_class_init (ExtensionGtkClass * klass, gpointer klass_data) { extension_gtk_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &ExtensionGtk_private_offset); ((GApplicationClass *) klass)->activate = (void (*) (GApplication*)) extension_gtk_real_activate; G_OBJECT_CLASS (klass)->finalize = extension_gtk_finalize; } static void extension_gtk_instance_init (ExtensionGtk * self, gpointer klass) { self->priv = extension_gtk_get_instance_private (self); } static void extension_gtk_finalize (GObject * obj) { ExtensionGtk * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_EXTENSION_GTK, ExtensionGtk); _g_object_unref0 (self->priv->m_bus); _g_object_unref0 (self->priv->m_panel); G_OBJECT_CLASS (extension_gtk_parent_class)->finalize (obj); } static GType extension_gtk_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (ExtensionGtkClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) extension_gtk_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ExtensionGtk), 0, (GInstanceInitFunc) extension_gtk_instance_init, NULL }; GType extension_gtk_type_id; extension_gtk_type_id = g_type_register_static (gtk_application_get_type (), "ExtensionGtk", &g_define_type_info, 0); ExtensionGtk_private_offset = g_type_add_instance_private (extension_gtk_type_id, sizeof (ExtensionGtkPrivate)); return extension_gtk_type_id; } GType extension_gtk_get_type (void) { static volatile gsize extension_gtk_type_id__volatile = 0; if (g_once_init_enter (&extension_gtk_type_id__volatile)) { GType extension_gtk_type_id; extension_gtk_type_id = extension_gtk_get_type_once (); g_once_init_leave (&extension_gtk_type_id__volatile, extension_gtk_type_id); } return extension_gtk_type_id__volatile; } ibus-1.5.22/ui/gtk3/propertypanel.vala0000644000000000000000000006404613623750431014506 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2013-2016 Red Hat, Inc. * Copyright(c) 2013-2015 Peng Huang * Copyright(c) 2013-2017 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; // The timeout indicates milliseconds. 1000 msec == 1 sec private const uint MONITOR_NET_WORKAREA_TIMEOUT = 300000; private uint m_remove_filter_id; 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"); // When click PropMenuToolButton, the focus is changed and // set_properties() is called here while the menu button is active. // Ignore that case here not to remove items. bool has_active = false; foreach (var item in m_items) { Type type = item.get_type(); if (type == typeof(PropMenuToolButton) || type == typeof(PropToggleToolButton)) { if ((item as Gtk.ToggleToolButton).get_active()) { has_active = true; break; } } } if (has_active) return; foreach (var item in m_items) remove((item as Gtk.Widget)); 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; } 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); Gdk.Rectangle monitor_area; #if VALA_0_34 // gdk_screen_get_monitor_workarea() no longer return the correct // area from "_NET_WORKAREA" atom in GTK 3.22 Gdk.Monitor monitor = Gdk.Display.get_default().get_monitor(0); monitor_area = monitor.get_workarea(); #else Gdk.Screen screen = Gdk.Screen.get_default(); monitor_area = screen.get_monitor_workarea(0); #endif int monitor_right = monitor_area.x + monitor_area.width; int monitor_bottom = monitor_area.y + monitor_area.height; 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 = monitor_right - allocation.width; y = monitor_bottom - allocation.height; } else { x = monitor_area.x; y = monitor_bottom - allocation.height; } } else { if (_("default:LTR") != "default:RTL") { x = monitor_right - allocation.width; y = monitor_area.y; } else { x = monitor_area.x; y = monitor_area.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(); m_root_window.remove_filter(root_window_filter); if (m_remove_filter_id > 0) { GLib.Source.remove(m_remove_filter_id); m_remove_filter_id = 0; } 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); m_remove_filter_id = GLib.Timeout.add(MONITOR_NET_WORKAREA_TIMEOUT, () => { m_remove_filter_id = 0; m_root_window.remove_filter(root_window_filter); return false; }, GLib.Priority.DEFAULT_IDLE); } private void show_with_auto_hide_timer() { /* Do not call gtk_window_resize() in * GtkWidgetClass->get_preferred_width() * because the following warning is shown in GTK 3.20: * "Allocating size to GtkWindow %x without calling * gtk_widget_get_preferred_width/height(). How does the code * know the size to allocate?" * in gtk_widget_size_allocate_with_baseline() */ m_toplevel.resize(1, 1); 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) { #if VALA_0_34 base.popup_at_widget(widget, Gdk.Gravity.SOUTH_WEST, Gdk.Gravity.NORTH_WEST, null); #else m_parent_button = widget; base.popup(null, null, menu_position, button, activate_time); #endif } public override void destroy() { m_parent_button = null; foreach (var item in m_items) remove((item as Gtk.Widget)); 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; } } } #if !VALA_0_34 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; } #endif } 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((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.22/ui/gtk3/separator.vala0000644000000000000000000000231113623750431013565 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.22/ui/gtk3/gen-notification-watcher.xml.c0000644000000000000000000000274113623751711016564 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.22/ui/gtk3/panel.vala0000644000000000000000000015072113623750431012675 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2014 Peng Huang * Copyright(c) 2015-2019 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 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 string m_real_current_context_path = ""; private bool m_use_global_engine = true; private CandidatePanel m_candidate_panel; private Switcher m_switcher; private uint m_switcher_focus_set_engine_id; 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; #if INDICATOR private bool m_is_kde = is_kde(); #else private bool m_is_kde = false; #endif private ulong m_popup_menu_id; private ulong m_activate_id; private ulong m_registered_status_notifier_item_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 (m_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.cursor_up.connect((w) => this.cursor_up()); m_candidate_panel.cursor_down.connect((w) => this.cursor_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() { #if INDICATOR // unref m_indicator if (m_indicator != null) m_indicator.unregister_connection(); #endif BindingCommon.unbind_switch_shortcut( BindingCommon.KeyEventFuncType.ANY, m_keybindings); m_keybindings = null; } 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) => { BindingCommon.unbind_switch_shortcut( BindingCommon.KeyEventFuncType.IME_SWITCHER, m_keybindings); m_keybindings = null; bind_switch_shortcut(); }); m_settings_panel.changed["custom-font"].connect((key) => { BindingCommon.set_custom_font(m_settings_panel, null, ref m_css_provider); }); m_settings_panel.changed["use-custom-font"].connect((key) => { BindingCommon.set_custom_font(m_settings_panel, null, ref m_css_provider); }); 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(); }); } private void popup_menu_at_area_window(Gtk.Menu menu, Gdk.Rectangle area, Gdk.Window? window, Gtk.MenuPositionFunc? func) { #if VALA_0_34 Gdk.Gravity rect_anchor = Gdk.Gravity.SOUTH_WEST; Gdk.Gravity menu_anchor = Gdk.Gravity.NORTH_WEST; // Gtk.Menu.popup() is now deprecated but // Gtk.Menu.popup_at_rect() requires a Gdk.Window and // Gtk.Menu.popup_at_rect() outputs a warning of // "no trigger event for menu popup" // for the foreigner QT window which is generated by // Gdk.X11.Window.foreign_for_display. // https://git.gnome.org/browse/gtk+/tree/gtk/gtkmenu.c?h=gtk-3-22#n2251 menu.popup_at_rect(window, area, rect_anchor, menu_anchor, null); #else menu.popup(null, null, func, 0, Gtk.get_current_event_time()); #endif } #if INDICATOR private static 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 popup_menu_at_pointer_window(Gtk.Menu menu, int x, int y, Gdk.Window? window, Gtk.MenuPositionFunc? func) { int win_x = 0; int win_y = 0; window.get_origin(out win_x, out win_y); Gdk.Rectangle area = { x - win_x, y - win_y, 1, 1 }; // window is a bottom wide panel instead of status icon popup_menu_at_area_window(menu, area, window, func); } 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_registered_status_notifier_item_id = m_indicator.registered_status_notifier_item.connect( () => { m_indicator.set_status(Indicator.Status.ACTIVE); state_changed(); }); m_popup_menu_id = m_indicator.context_menu.connect((x, y, w, b, t) => { popup_menu_at_pointer_window( create_context_menu(), x, y, w, m_indicator.position_context_menu); }); m_activate_id = m_indicator.activate.connect((x, y, w) => { popup_menu_at_pointer_window( create_activate_menu(), x, y, w, m_indicator.position_activate_menu); }); } 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")); // Gdk.Window.get_width() is needed for the menu position if (m_status_icon.get_size() > 0) init_status_icon_menu(); else m_status_icon.notify["size"].connect(init_status_icon_menu); } private void init_status_icon_menu() { Gdk.Rectangle area = { 0, 0, 0, 0 }; Gdk.Window? window = null; Gtk.MenuPositionFunc? func = null; #if VALA_0_34 window = Gdk.X11.Window.lookup_for_display( Gdk.Display.get_default() as Gdk.X11.Display, m_status_icon.get_x11_window_id()) as Gdk.Window; if (window == null) { warning("StatusIcon does not have GdkWindow"); return; } Gtk.Orientation orient; m_status_icon.get_geometry(null, out area, out orient); int win_x = 0; int win_y = 0; window.get_origin(out win_x, out win_y); // The (x, y) is converted by gdk_window_get_root_coords() // in gdk_window_impl_move_to_rect() area.x -= win_x; area.y -= win_y; #else func = m_status_icon.position_menu; #endif m_popup_menu_id = m_status_icon.popup_menu.connect((b, t) => { popup_menu_at_area_window( create_context_menu(), area, window, func); }); m_activate_id = m_status_icon.activate.connect(() => { popup_menu_at_area_window( create_activate_menu(), area, window, func); }); m_status_icon.set_from_icon_name("ibus-keyboard"); } private void bind_switch_shortcut() { string[] accelerators = m_settings_hotkey.get_strv("triggers"); var keybinding_manager = KeybindingManager.get_instance(); foreach (var accelerator in accelerators) { BindingCommon.keybinding_manager_bind( keybinding_manager, ref m_keybindings, accelerator, BindingCommon.KeyEventFuncType.IME_SWITCHER, handle_engine_switch_normal, handle_engine_switch_reverse); } } /* public static void unbind_switch_shortcut(KeyEventFuncType ftype, GLib.List keybindings) { var keybinding_manager = KeybindingManager.get_instance(); while (keybindings != null) { Keybinding keybinding = keybindings.data; if (ftype == KeyEventFuncType.ANY || ftype == keybinding.ftype) { keybinding_manager.unbind(keybinding.keysym, keybinding.modifiers); } keybindings = keybindings.next; } } */ /** * 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_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_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.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")); BindingCommon.unbind_switch_shortcut( BindingCommon.KeyEventFuncType.ANY, m_keybindings); m_keybindings = null; bind_switch_shortcut(); set_switcher_delay_time(); set_embed_preedit_text(); BindingCommon.set_custom_font(m_settings_panel, null, ref m_css_provider); 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(); } /** * disconnect_signals: * * Call this API before m_panel = null so that the ref_count becomes 0 */ public void disconnect_signals() { unowned GLib.Object object = m_status_icon; #if INDICATOR if (m_is_kde) object = m_indicator; #endif if (m_popup_menu_id > 0) { // No name functions refer m_panel in m_status_icon if (GLib.SignalHandler.is_connected(object, m_popup_menu_id)) object.disconnect(m_popup_menu_id); m_popup_menu_id = 0; } if (m_activate_id > 0) { if (GLib.SignalHandler.is_connected(object, m_activate_id)) object.disconnect(m_activate_id); m_activate_id = 0; } if (m_registered_status_notifier_item_id > 0) { if (GLib.SignalHandler.is_connected( object, m_registered_status_notifier_item_id)) { object.disconnect(m_registered_status_notifier_item_id); } m_registered_status_notifier_item_id = 0; } if (m_preload_engines_id > 0) { GLib.Source.remove(m_preload_engines_id); m_preload_engines_id = 0; } } 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_property_icon_delay_time_id > 0) { GLib.Source.remove(m_property_icon_delay_time_id); m_property_icon_delay_time_id = 0; } if (!m_bus.set_global_engine(engine.get_name())) { warning("Switch engine to %s failed.", engine.get_name()); return; } /* Panel.update_property() will be called with a time lag * by another engine because of DBus delay so need to * clear m_icon_prop_key here to avoid wrong panel icon in * disabled m_use_global_engine. */ m_icon_prop_key = ""; // set xkb layout if (!m_use_system_keyboard_layout) m_xkblayout.set_layout(engine); engine_contexts_insert(engine); } 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_normal(Gdk.Event event) { handle_engine_switch(event, false); } private void handle_engine_switch_reverse(Gdk.Event event) { handle_engine_switch(event, true); } private void handle_engine_switch(Gdk.Event event, bool reverse) { // 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 (reverse) { modifiers &= ~Gdk.ModifierType.SHIFT_MASK; } if (pressed && m_switcher_delay_time >= 0) { int i = reverse ? 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 fake input context. 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. */ i = m_switcher.run(keyval, modifiers, event, m_engines, i, m_real_current_context_path); if (i < 0) { debug("switch cancelled"); } else if (i == 0) { debug("do not have to switch"); } else { this.switcher_focus_set_engine(); } } else { int i = reverse ? 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.Signal.USR1) == 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-2019 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); #if EMOJI_DICT item = new Gtk.MenuItem.with_label(_("Emoji Choice")); item.activate.connect((i) => { IBus.ExtensionEvent event = new IBus.ExtensionEvent( "name", "emoji", "is-enabled", true, "params", "category-list"); /* new GLib.Variant("(sv)", "emoji", event.serialize_object()) * will call g_variant_unref() for the child variant by vala. * I have no idea not to unref the object so integrated * the purpose to IBus.ExtensionEvent above. */ panel_extension(event); }); m_sys_menu.append(item); #endif 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 textdomain = engine.get_textdomain(); var transname = GLib.dgettext(textdomain, longname); var item = new Gtk.MenuItem.with_label( "%s - %s".printf (IBus.get_language_name(language), transname)); // 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); } private bool switcher_focus_set_engine_real() { IBus.EngineDesc? selected_engine = m_switcher.get_selected_engine(); string prev_context_path = m_switcher.get_input_context_path(); if (selected_engine != null && prev_context_path != "" && prev_context_path == m_current_context_path) { set_engine(selected_engine); m_switcher.reset(); return true; } return false; } private void switcher_focus_set_engine() { IBus.EngineDesc? selected_engine = m_switcher.get_selected_engine(); string prev_context_path = m_switcher.get_input_context_path(); if (selected_engine == null && prev_context_path != "" && m_switcher.is_running()) { var context = GLib.MainContext.default(); if (m_switcher_focus_set_engine_id > 0 && context.find_source_by_id(m_switcher_focus_set_engine_id) != null) { GLib.Source.remove(m_switcher_focus_set_engine_id); } m_switcher_focus_set_engine_id = GLib.Timeout.add(100, () => { // focus_in is comming before switcher returns switcher_focus_set_engine_real(); m_switcher_focus_set_engine_id = -1; return false; }); } else { if (switcher_focus_set_engine_real()) { var context = GLib.MainContext.default(); if (m_switcher_focus_set_engine_id > 0 && context.find_source_by_id(m_switcher_focus_set_engine_id) != null) { GLib.Source.remove(m_switcher_focus_set_engine_id); } m_switcher_focus_set_engine_id = -1; } } } public override void focus_in(string input_context_path) { m_current_context_path = input_context_path; /* 'fake' input context is named as * '/org/freedesktop/IBus/InputContext_1' and always send in * focus-out events by ibus-daemon for the global engine mode. * Now ibus-daemon assumes to always use the global engine. * But this event should not be used for modal dialogs * such as Switcher. */ if (!input_context_path.has_suffix("InputContext_1")) { m_real_current_context_path = m_current_context_path; m_property_panel.focus_in(); this.switcher_focus_set_engine(); } if (m_use_global_engine) return; var engine = m_engine_contexts[input_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) { 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.22/ui/gtk3/emojierapp.c0000644000000000000000000007551013623751711013234 00000000000000/* emojierapp.c generated by valac 0.47.91, the Vala compiler * generated from emojierapp.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright (c) 2017 Peng Wu * Copyright (c) 2017-2019 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 #define TYPE_EMOJI_APPLICATION (emoji_application_get_type ()) #define EMOJI_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_EMOJI_APPLICATION, EmojiApplication)) #define EMOJI_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_EMOJI_APPLICATION, EmojiApplicationClass)) #define IS_EMOJI_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_EMOJI_APPLICATION)) #define IS_EMOJI_APPLICATION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_EMOJI_APPLICATION)) #define EMOJI_APPLICATION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_EMOJI_APPLICATION, EmojiApplicationClass)) typedef struct _EmojiApplication EmojiApplication; typedef struct _EmojiApplicationClass EmojiApplicationClass; typedef struct _EmojiApplicationPrivate EmojiApplicationPrivate; #define TYPE_IBUS_EMOJIER (ibus_emojier_get_type ()) #define IBUS_EMOJIER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IBUS_EMOJIER, IBusEmojier)) #define IBUS_EMOJIER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IBUS_EMOJIER, IBusEmojierClass)) #define IS_IBUS_EMOJIER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IBUS_EMOJIER)) #define IS_IBUS_EMOJIER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IBUS_EMOJIER)) #define IBUS_EMOJIER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IBUS_EMOJIER, IBusEmojierClass)) typedef struct _IBusEmojier IBusEmojier; typedef struct _IBusEmojierClass IBusEmojierClass; enum { EMOJI_APPLICATION_0_PROPERTY, EMOJI_APPLICATION_NUM_PROPERTIES }; static GParamSpec* emoji_application_properties[EMOJI_APPLICATION_NUM_PROPERTIES]; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_free0(var) (var = (g_free (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 __vala_GdkEvent_free0(var) ((var == NULL) ? NULL : (var = (_vala_GdkEvent_free (var), NULL))) struct _EmojiApplication { GtkApplication parent_instance; EmojiApplicationPrivate * priv; }; struct _EmojiApplicationClass { GtkApplicationClass parent_class; }; struct _EmojiApplicationPrivate { IBusEmojier* m_emojier; GSettings* m_settings_emoji; GApplicationCommandLine* m_command_line; }; extern gchar* emoji_font; gchar* emoji_font = NULL; extern gchar* annotation_lang; gchar* annotation_lang = NULL; extern gboolean partial_match; gboolean partial_match = FALSE; extern gint partial_match_length; gint partial_match_length = -1; extern gint partial_match_condition; gint partial_match_condition = -1; static gint EmojiApplication_private_offset; static gpointer emoji_application_parent_class = NULL; GType emoji_application_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (EmojiApplication, g_object_unref) GType ibus_emojier_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojier, g_object_unref) static EmojiApplication* emoji_application_new (void); static EmojiApplication* emoji_application_construct (GType object_type); static void emoji_application_save_selected_string (EmojiApplication* self, const gchar* selected_string, gboolean cancelled); static void _vala_array_add1 (gchar** * array, gint* length, gint* size, gchar* value); static void emoji_application_show_dialog (EmojiApplication* self, GApplicationCommandLine* command_line); void ibus_emojier_reset (IBusEmojier* self); void ibus_emojier_set_annotation (IBusEmojier* self, const gchar* annotation); void emoji_application_candidate_clicked_lookup_table (EmojiApplication* self, guint index, guint button, guint state); #define IBUS_EMOJIER_BUTTON_CLOSE_BUTTON ((guint) 1000) guint ibus_emojier_get_number_of_candidates (IBusEmojier* self); void ibus_emojier_set_cursor_pos (IBusEmojier* self, guint cursor_pos); gboolean ibus_emojier_has_variants (IBusEmojier* self, guint index, gboolean need_commit_signal); gchar* ibus_emojier_get_current_candidate (IBusEmojier* self); void emoji_application_activate_dialog (EmojiApplication* self, GApplicationCommandLine* command_line); static gint _emoji_application_command_line (EmojiApplication* self, GApplicationCommandLine* command_line); void ibus_emojier_set_emoji_font (const gchar* emoji_font); gboolean ibus_emojier_is_running (IBusEmojier* self); void ibus_emojier_present_centralize (IBusEmojier* self, GdkEvent* event); static void _vala_GdkEvent_free (GdkEvent* self); void ibus_emojier_set_annotation_lang (const gchar* lang); void ibus_emojier_set_partial_match (gboolean has_partial_match); void ibus_emojier_set_partial_match_length (gint length); void ibus_emojier_set_partial_match_condition (gint condition); void ibus_emojier_set_favorites (gchar** unowned_favorites, gint unowned_favorites_length1, gchar** unowned_favorite_annotations, gint unowned_favorite_annotations_length1); void ibus_emojier_load_unicode_dict (void); IBusEmojier* ibus_emojier_new (void); IBusEmojier* ibus_emojier_construct (GType object_type); static void ___lambda25_ (EmojiApplication* self, guint i, guint b, guint s); static void ____lambda25__ibus_emojier_candidate_clicked (IBusEmojier* _sender, guint index, guint button, guint state, gpointer self); static void ___lambda26_ (EmojiApplication* self); static void ____lambda26__ibus_emojier_cancel (IBusEmojier* _sender, gpointer self); static void ___lambda27_ (EmojiApplication* self); gchar* ibus_emojier_get_selected_string (IBusEmojier* self); static void ____lambda27__ibus_emojier_commit_text (IBusEmojier* _sender, const gchar* text, gpointer self); static gint emoji_application_real_command_line (GApplication* base, GApplicationCommandLine* command_line); static void emoji_application_real_shutdown (GApplication* base); gint emoji_application_main (gchar** args, gint args_length1); static void emoji_application_finalize (GObject * obj); static GType emoji_application_get_type_once (void); 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 inline gpointer emoji_application_get_instance_private (EmojiApplication* self) { return G_STRUCT_MEMBER_P (self, EmojiApplication_private_offset); } static EmojiApplication* emoji_application_construct (GType object_type) { EmojiApplication * self = NULL; self = (EmojiApplication*) g_object_new (object_type, "application-id", "org.freedesktop.IBus.Panel.Emojier", "flags", G_APPLICATION_HANDLES_COMMAND_LINE, NULL); g_application_set_inactivity_timeout ((GApplication*) self, (guint) 100000); return self; } static EmojiApplication* emoji_application_new (void) { return emoji_application_construct (TYPE_EMOJI_APPLICATION); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void _vala_array_add1 (gchar** * array, gint* length, gint* 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 emoji_application_save_selected_string (EmojiApplication* self, const gchar* selected_string, gboolean cancelled) { GtkClipboard* clipboard = NULL; GtkClipboard* _tmp1_; GtkClipboard* _tmp2_; GtkClipboard* _tmp3_; GtkClipboard* _tmp4_; gchar** emojier_favorites = NULL; GSettings* _tmp5_; gchar** _tmp6_; gchar** _tmp7_; gint emojier_favorites_length1; gint _emojier_favorites_size_; gboolean has_favorite = FALSE; gchar** _tmp8_; gint _tmp8__length1; GApplicationCommandLine* _tmp14_; g_return_if_fail (self != NULL); if (cancelled) { GApplicationCommandLine* _tmp0_; _tmp0_ = self->priv->m_command_line; g_application_command_line_print (_tmp0_, "%s\n", _ ("Canceled to choose an emoji.")); return; } g_return_if_fail (selected_string != NULL); _tmp1_ = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); _tmp2_ = _g_object_ref0 (_tmp1_); clipboard = _tmp2_; _tmp3_ = clipboard; gtk_clipboard_set_text (_tmp3_, selected_string, -1); _tmp4_ = clipboard; gtk_clipboard_store (_tmp4_); _tmp5_ = self->priv->m_settings_emoji; _tmp7_ = _tmp6_ = g_settings_get_strv (_tmp5_, "favorites"); emojier_favorites = _tmp7_; emojier_favorites_length1 = _vala_array_length (_tmp6_); _emojier_favorites_size_ = emojier_favorites_length1; has_favorite = FALSE; _tmp8_ = emojier_favorites; _tmp8__length1 = emojier_favorites_length1; { gchar** favorite_collection = NULL; gint favorite_collection_length1 = 0; gint _favorite_collection_size_ = 0; gint favorite_it = 0; favorite_collection = _tmp8_; favorite_collection_length1 = _tmp8__length1; for (favorite_it = 0; favorite_it < favorite_collection_length1; favorite_it = favorite_it + 1) { const gchar* favorite = NULL; favorite = favorite_collection[favorite_it]; { const gchar* _tmp9_; _tmp9_ = favorite; if (g_strcmp0 (_tmp9_, selected_string) == 0) { has_favorite = TRUE; break; } } } } if (!has_favorite) { gchar** _tmp10_; gint _tmp10__length1; gchar* _tmp11_; GSettings* _tmp12_; gchar** _tmp13_; gint _tmp13__length1; _tmp10_ = emojier_favorites; _tmp10__length1 = emojier_favorites_length1; _tmp11_ = g_strdup (selected_string); _vala_array_add1 (&emojier_favorites, &emojier_favorites_length1, &_emojier_favorites_size_, _tmp11_); _tmp12_ = self->priv->m_settings_emoji; _tmp13_ = emojier_favorites; _tmp13__length1 = emojier_favorites_length1; g_settings_set_strv (_tmp12_, "favorites", _tmp13_); } _tmp14_ = self->priv->m_command_line; g_application_command_line_print (_tmp14_, "%s\n", _ ("Copied an emoji to your clipboard.")); emojier_favorites = (_vala_array_free (emojier_favorites, emojier_favorites_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (clipboard); } static void emoji_application_show_dialog (EmojiApplication* self, GApplicationCommandLine* command_line) { GApplicationCommandLine* _tmp0_; IBusEmojier* _tmp1_; IBusEmojier* _tmp2_; IBusEmojier* _tmp3_; g_return_if_fail (self != NULL); g_return_if_fail (command_line != NULL); _tmp0_ = _g_object_ref0 (command_line); _g_object_unref0 (self->priv->m_command_line); self->priv->m_command_line = _tmp0_; _tmp1_ = self->priv->m_emojier; ibus_emojier_reset (_tmp1_); _tmp2_ = self->priv->m_emojier; ibus_emojier_set_annotation (_tmp2_, ""); _tmp3_ = self->priv->m_emojier; gtk_widget_show_all ((GtkWidget*) _tmp3_); } void emoji_application_candidate_clicked_lookup_table (EmojiApplication* self, guint index, guint button, guint state) { GApplicationCommandLine* _tmp0_; IBusEmojier* _tmp2_; gboolean show_candidate = FALSE; guint ncandidates = 0U; IBusEmojier* _tmp3_; gboolean _tmp4_ = FALSE; gchar* emoji = NULL; IBusEmojier* _tmp7_; gchar* _tmp8_; IBusEmojier* _tmp9_; const gchar* _tmp10_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_command_line; if (_tmp0_ == NULL) { return; } if (button == IBUS_EMOJIER_BUTTON_CLOSE_BUTTON) { IBusEmojier* _tmp1_; _tmp1_ = self->priv->m_emojier; gtk_widget_hide ((GtkWidget*) _tmp1_); emoji_application_save_selected_string (self, NULL, TRUE); _g_object_unref0 (self->priv->m_command_line); self->priv->m_command_line = NULL; return; } _tmp2_ = self->priv->m_emojier; if (_tmp2_ == NULL) { return; } show_candidate = FALSE; _tmp3_ = self->priv->m_emojier; ncandidates = ibus_emojier_get_number_of_candidates (_tmp3_); if (ncandidates > ((guint) 0)) { _tmp4_ = ncandidates >= index; } else { _tmp4_ = FALSE; } if (_tmp4_) { IBusEmojier* _tmp5_; IBusEmojier* _tmp6_; _tmp5_ = self->priv->m_emojier; ibus_emojier_set_cursor_pos (_tmp5_, index); _tmp6_ = self->priv->m_emojier; show_candidate = ibus_emojier_has_variants (_tmp6_, index, FALSE); } else { return; } if (show_candidate) { return; } _tmp7_ = self->priv->m_emojier; _tmp8_ = ibus_emojier_get_current_candidate (_tmp7_); emoji = _tmp8_; _tmp9_ = self->priv->m_emojier; gtk_widget_hide ((GtkWidget*) _tmp9_); _tmp10_ = emoji; emoji_application_save_selected_string (self, _tmp10_, FALSE); _g_object_unref0 (self->priv->m_command_line); self->priv->m_command_line = NULL; _g_free0 (emoji); } void emoji_application_activate_dialog (EmojiApplication* self, GApplicationCommandLine* command_line) { g_return_if_fail (self != NULL); g_return_if_fail (command_line != NULL); g_application_hold ((GApplication*) self); emoji_application_show_dialog (self, command_line); g_application_release ((GApplication*) self); } static void _vala_GdkEvent_free (GdkEvent* self) { g_boxed_free (gdk_event_get_type (), self); } static void ___lambda25_ (EmojiApplication* self, guint i, guint b, guint s) { emoji_application_candidate_clicked_lookup_table (self, i, b, s); } static void ____lambda25__ibus_emojier_candidate_clicked (IBusEmojier* _sender, guint index, guint button, guint state, gpointer self) { ___lambda25_ ((EmojiApplication*) self, index, button, state); } static void ___lambda26_ (EmojiApplication* self) { GApplicationCommandLine* _tmp0_; IBusEmojier* _tmp1_; _tmp0_ = self->priv->m_command_line; if (_tmp0_ == NULL) { return; } _tmp1_ = self->priv->m_emojier; gtk_widget_hide ((GtkWidget*) _tmp1_); emoji_application_save_selected_string (self, NULL, TRUE); _g_object_unref0 (self->priv->m_command_line); self->priv->m_command_line = NULL; } static void ____lambda26__ibus_emojier_cancel (IBusEmojier* _sender, gpointer self) { ___lambda26_ ((EmojiApplication*) self); } static void ___lambda27_ (EmojiApplication* self) { GApplicationCommandLine* _tmp0_; IBusEmojier* _tmp1_; gchar* selected_string = NULL; IBusEmojier* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; _tmp0_ = self->priv->m_command_line; if (_tmp0_ == NULL) { return; } _tmp1_ = self->priv->m_emojier; gtk_widget_hide ((GtkWidget*) _tmp1_); _tmp2_ = self->priv->m_emojier; _tmp3_ = ibus_emojier_get_selected_string (_tmp2_); selected_string = _tmp3_; _tmp4_ = selected_string; emoji_application_save_selected_string (self, _tmp4_, FALSE); _g_object_unref0 (self->priv->m_command_line); self->priv->m_command_line = NULL; _g_free0 (selected_string); } static void ____lambda27__ibus_emojier_commit_text (IBusEmojier* _sender, const gchar* text, gpointer self) { ___lambda27_ ((EmojiApplication*) self); } static gint _emoji_application_command_line (EmojiApplication* self, GApplicationCommandLine* command_line) { GSettings* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; static const GOptionEntry options[6] = {{"font", (gchar) 0, 0, G_OPTION_ARG_STRING, &emoji_font, N_ ("\"FONT\" for emoji characters on emoji dialog"), N_ ("FONT")}, {"lang", (gchar) 0, 0, G_OPTION_ARG_STRING, &annotation_lang, N_ ("\"LANG\" for annotations on emoji dialog. E.g. \"en\""), N_ ("LANG")}, {"partial-match", (gchar) 0, 0, G_OPTION_ARG_NONE, &partial_match, N_ ("Emoji annotations can be match partially"), NULL}, {"partial-match-length", (gchar) 0, 0, G_OPTION_ARG_INT, &partial_match_length, N_ ("Match with the length of the specified integer"), NULL}, {"partial-match-condition", (gchar) 0, 0, G_OPTION_ARG_INT, &partial_match_condition, N_ ("Match with the condition of the specified integer"), NULL}, {NULL}}; GOptionContext* option = NULL; GOptionContext* _tmp3_; GOptionContext* _tmp4_; gchar** args = NULL; gint _tmp5_ = 0; gchar** _tmp6_; gint args_length1; gint _args_size_; const gchar** _args = NULL; gchar** _tmp7_; gint _tmp7__length1; gchar** _tmp8_; gint _args_length1; gint __args_size_; gboolean _tmp22_ = FALSE; IBusEmojier* _tmp23_; const gchar* _tmp31_; const gchar* _tmp34_; const gchar* _tmp38_; GSettings* _tmp40_; gchar** _tmp41_; gchar** _tmp42_; gchar** _tmp43_; gint _tmp43__length1; GSettings* _tmp44_; gchar** _tmp45_; gchar** _tmp46_; gchar** _tmp47_; gint _tmp47__length1; IBusEmojier* _tmp48_; GError* _inner_error0_ = NULL; gint result = 0; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (command_line != NULL, 0); _tmp0_ = self->priv->m_settings_emoji; _tmp1_ = g_settings_get_string (_tmp0_, "font"); _tmp2_ = _tmp1_; ibus_emojier_set_emoji_font (_tmp2_); _g_free0 (_tmp2_); _tmp3_ = g_option_context_new (NULL); option = _tmp3_; _tmp4_ = option; g_option_context_add_main_entries (_tmp4_, options, GETTEXT_PACKAGE); _tmp6_ = g_application_command_line_get_arguments (command_line, &_tmp5_); args = _tmp6_; args_length1 = _tmp5_; _args_size_ = args_length1; _tmp7_ = args; _tmp7__length1 = args_length1; _tmp8_ = g_new0 (gchar*, _tmp7__length1 + 1); _args = _tmp8_; _args_length1 = _tmp7__length1; __args_size_ = _args_length1; { gint i = 0; i = 0; { gboolean _tmp9_ = FALSE; _tmp9_ = TRUE; while (TRUE) { gchar** _tmp11_; gint _tmp11__length1; const gchar** _tmp12_; gint _tmp12__length1; gchar** _tmp13_; gint _tmp13__length1; const gchar* _tmp14_; if (!_tmp9_) { gint _tmp10_; _tmp10_ = i; i = _tmp10_ + 1; } _tmp9_ = FALSE; _tmp11_ = args; _tmp11__length1 = args_length1; if (!(i < _tmp11__length1)) { break; } _tmp12_ = _args; _tmp12__length1 = _args_length1; _tmp13_ = args; _tmp13__length1 = args_length1; _tmp14_ = _tmp13_[i]; _tmp12_[i] = _tmp14_; } } } _g_free0 (emoji_font); emoji_font = NULL; _g_free0 (annotation_lang); annotation_lang = NULL; { gchar** tmp = NULL; const gchar** _tmp15_; gint _tmp15__length1; gint tmp_length1; gint _tmp_size_; GOptionContext* _tmp16_; _tmp15_ = _args; _tmp15__length1 = _args_length1; tmp = _tmp15_; tmp_length1 = _tmp15__length1; _tmp_size_ = tmp_length1; _tmp16_ = option; g_option_context_parse (_tmp16_, (gint*) (&tmp_length1), &tmp, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp17_ = -1; if (_inner_error0_->domain == G_OPTION_ERROR) { goto __catch0_g_option_error; } _args = (g_free (_args), NULL); args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_option_context_free0 (option); g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp17_; } } goto __finally0; __catch0_g_option_error: { GError* e = NULL; FILE* _tmp18_; GError* _tmp19_; const gchar* _tmp20_; e = _inner_error0_; _inner_error0_ = NULL; _tmp18_ = stderr; _tmp19_ = e; _tmp20_ = _tmp19_->message; fprintf (_tmp18_, "%s\n", _tmp20_); result = EXIT_FAILURE; _g_error_free0 (e); _args = (g_free (_args), NULL); args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_option_context_free0 (option); return result; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { gint _tmp21_ = -1; _args = (g_free (_args), NULL); args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_option_context_free0 (option); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return _tmp21_; } _tmp23_ = self->priv->m_emojier; if (_tmp23_ != NULL) { IBusEmojier* _tmp24_; _tmp24_ = self->priv->m_emojier; _tmp22_ = ibus_emojier_is_running (_tmp24_); } else { _tmp22_ = FALSE; } if (_tmp22_) { GdkEvent* event = NULL; GdkEvent* _tmp25_; GdkEvent* _tmp26_; GdkEventKey* _tmp27_; GdkEventKey* _tmp28_; IBusEmojier* _tmp29_; GdkEvent* _tmp30_; _tmp25_ = gdk_event_new (GDK_KEY_PRESS); event = _tmp25_; _tmp26_ = event; _tmp27_ = (GdkEventKey *) (_tmp26_); _tmp28_ = _tmp27_; _tmp28_->time = (guint32) GDK_CURRENT_TIME; _tmp29_ = self->priv->m_emojier; _tmp30_ = event; ibus_emojier_present_centralize (_tmp29_, _tmp30_); result = EXIT_SUCCESS; __vala_GdkEvent_free0 (event); _args = (g_free (_args), NULL); args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_option_context_free0 (option); return result; } _tmp31_ = annotation_lang; if (_tmp31_ == NULL) { GSettings* _tmp32_; gchar* _tmp33_; _tmp32_ = self->priv->m_settings_emoji; _tmp33_ = g_settings_get_string (_tmp32_, "lang"); _g_free0 (annotation_lang); annotation_lang = _tmp33_; } _tmp34_ = annotation_lang; ibus_emojier_set_annotation_lang (_tmp34_); ibus_emojier_set_partial_match (partial_match); if (partial_match_length > 0) { ibus_emojier_set_partial_match_length (partial_match_length); } else { GSettings* _tmp35_; _tmp35_ = self->priv->m_settings_emoji; ibus_emojier_set_partial_match_length (g_settings_get_int (_tmp35_, "partial-match-length")); } if (partial_match_condition > 2) { GSettings* _tmp36_; g_warning ("emojierapp.vala:190: Need condition between 0 and 2."); _tmp36_ = self->priv->m_settings_emoji; ibus_emojier_set_partial_match_condition (g_settings_get_int (_tmp36_, "partial-match-condition")); } else { if (partial_match_condition >= 0) { ibus_emojier_set_partial_match_condition (partial_match_condition); } else { GSettings* _tmp37_; _tmp37_ = self->priv->m_settings_emoji; ibus_emojier_set_partial_match_condition (g_settings_get_int (_tmp37_, "partial-match-condition")); } } _tmp38_ = emoji_font; if (_tmp38_ != NULL) { const gchar* _tmp39_; _tmp39_ = emoji_font; ibus_emojier_set_emoji_font (_tmp39_); } _tmp40_ = self->priv->m_settings_emoji; _tmp42_ = _tmp41_ = g_settings_get_strv (_tmp40_, "favorites"); _tmp43_ = _tmp42_; _tmp43__length1 = _vala_array_length (_tmp41_); _tmp44_ = self->priv->m_settings_emoji; _tmp46_ = _tmp45_ = g_settings_get_strv (_tmp44_, "favorite-annotations"); _tmp47_ = _tmp46_; _tmp47__length1 = _vala_array_length (_tmp45_); ibus_emojier_set_favorites (_tmp43_, (gint) _vala_array_length (_tmp41_), _tmp47_, (gint) _vala_array_length (_tmp45_)); _tmp47_ = (_vala_array_free (_tmp47_, _tmp47__length1, (GDestroyNotify) g_free), NULL); _tmp43_ = (_vala_array_free (_tmp43_, _tmp43__length1, (GDestroyNotify) g_free), NULL); ibus_emojier_load_unicode_dict (); _tmp48_ = self->priv->m_emojier; if (_tmp48_ == NULL) { IBusEmojier* _tmp49_; IBusEmojier* _tmp50_; IBusEmojier* _tmp51_; IBusEmojier* _tmp52_; IBusEmojier* _tmp53_; _tmp49_ = ibus_emojier_new (); g_object_ref_sink (_tmp49_); _g_object_unref0 (self->priv->m_emojier); self->priv->m_emojier = _tmp49_; _tmp50_ = self->priv->m_emojier; gtk_application_add_window ((GtkApplication*) self, (GtkWindow*) _tmp50_); _tmp51_ = self->priv->m_emojier; g_signal_connect_object (_tmp51_, "candidate-clicked", (GCallback) ____lambda25__ibus_emojier_candidate_clicked, self, 0); _tmp52_ = self->priv->m_emojier; g_signal_connect_object (_tmp52_, "cancel", (GCallback) ____lambda26__ibus_emojier_cancel, self, 0); _tmp53_ = self->priv->m_emojier; g_signal_connect_object (_tmp53_, "commit-text", (GCallback) ____lambda27__ibus_emojier_commit_text, self, 0); } emoji_application_activate_dialog (self, command_line); result = EXIT_SUCCESS; _args = (g_free (_args), NULL); args = (_vala_array_free (args, args_length1, (GDestroyNotify) g_free), NULL); _g_option_context_free0 (option); return result; } static gint emoji_application_real_command_line (GApplication* base, GApplicationCommandLine* command_line) { EmojiApplication * self; gint _result_ = 0; gint result = 0; self = (EmojiApplication*) base; g_return_val_if_fail (command_line != NULL, 0); g_application_hold ((GApplication*) self); _result_ = _emoji_application_command_line (self, command_line); g_application_release ((GApplication*) self); result = _result_; return result; } static void emoji_application_real_shutdown (GApplication* base) { EmojiApplication * self; IBusEmojier* _tmp0_; self = (EmojiApplication*) base; G_APPLICATION_CLASS (emoji_application_parent_class)->shutdown ((GApplication*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_application_get_type (), GtkApplication)); _tmp0_ = self->priv->m_emojier; gtk_application_remove_window ((GtkApplication*) self, (GtkWindow*) _tmp0_); _g_object_unref0 (self->priv->m_emojier); self->priv->m_emojier = NULL; } gint emoji_application_main (gchar** args, gint args_length1) { EmojiApplication* app = NULL; EmojiApplication* _tmp0_; gint status = 0; gint result = 0; bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); ibus_init (); gtk_init ((gint*) (&args_length1), &args); _tmp0_ = emoji_application_new (); app = _tmp0_; status = g_application_run ((GApplication*) app, (gint) args_length1, args); result = status; _g_object_unref0 (app); return result; } int main (int argc, char ** argv) { return emoji_application_main (argv, argc); } static void emoji_application_class_init (EmojiApplicationClass * klass, gpointer klass_data) { emoji_application_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &EmojiApplication_private_offset); ((GApplicationClass *) klass)->command_line = (gint (*) (GApplication*, GApplicationCommandLine*)) emoji_application_real_command_line; ((GApplicationClass *) klass)->shutdown = (void (*) (GApplication*)) emoji_application_real_shutdown; G_OBJECT_CLASS (klass)->finalize = emoji_application_finalize; } static void emoji_application_instance_init (EmojiApplication * self, gpointer klass) { GSettings* _tmp0_; self->priv = emoji_application_get_instance_private (self); _tmp0_ = g_settings_new ("org.freedesktop.ibus.panel.emoji"); self->priv->m_settings_emoji = _tmp0_; self->priv->m_command_line = NULL; } static void emoji_application_finalize (GObject * obj) { EmojiApplication * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_EMOJI_APPLICATION, EmojiApplication); _g_object_unref0 (self->priv->m_emojier); _g_object_unref0 (self->priv->m_settings_emoji); _g_object_unref0 (self->priv->m_command_line); G_OBJECT_CLASS (emoji_application_parent_class)->finalize (obj); } static GType emoji_application_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (EmojiApplicationClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) emoji_application_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EmojiApplication), 0, (GInstanceInitFunc) emoji_application_instance_init, NULL }; GType emoji_application_type_id; emoji_application_type_id = g_type_register_static (gtk_application_get_type (), "EmojiApplication", &g_define_type_info, 0); EmojiApplication_private_offset = g_type_add_instance_private (emoji_application_type_id, sizeof (EmojiApplicationPrivate)); return emoji_application_type_id; } GType emoji_application_get_type (void) { static volatile gsize emoji_application_type_id__volatile = 0; if (g_once_init_enter (&emoji_application_type_id__volatile)) { GType emoji_application_type_id; emoji_application_type_id = emoji_application_get_type_once (); g_once_init_leave (&emoji_application_type_id__volatile, emoji_application_type_id); } return emoji_application_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { gint 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) { gint length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; } ibus-1.5.22/ui/gtk3/xkblayout.c0000644000000000000000000013010113623751707013114 00000000000000/* xkblayout.c generated by valac 0.47.91, 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 gint XKBLayout_private_offset; 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (XKBLayout, xkb_layout_unref) #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, gint xkb_latin_layouts_length1); static gchar** _vala_array_dup6 (gchar** self, gint length); void xkb_layout_get_layout (gchar* * layout, gchar* * variant, gchar* * option); static void _vala_array_add26 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add27 (gchar** * array, gint* length, gint* size, gchar* value); void xkb_layout_set_layout (XKBLayout* self, IBusEngineDesc* engine); static gboolean _vala_string_array_contains (gchar* * stack, gint stack_length, const gchar* needle); static void _vala_array_add28 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add29 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add30 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add31 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add32 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add33 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add34 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add35 (gchar** * array, gint* length, gint* 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 GType xkb_layout_get_type_once (void); 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"}; static inline gpointer xkb_layout_get_instance_private (XKBLayout* self) { return G_STRUCT_MEMBER_P (self, XKBLayout_private_offset); } 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, gint length) { gchar** result; gint i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } void xkb_layout_set_latin_layouts (XKBLayout* self, gchar** xkb_latin_layouts, gint xkb_latin_layouts_length1) { gchar** _tmp0_; gint _tmp0__length1; g_return_if_fail (self != NULL); _tmp0_ = (xkb_latin_layouts != NULL) ? _vala_array_dup6 (xkb_latin_layouts, xkb_latin_layouts_length1) : ((gpointer) xkb_latin_layouts); _tmp0__length1 = xkb_latin_layouts_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 = _tmp0_; self->priv->m_xkb_latin_layouts_length1 = _tmp0__length1; self->priv->_m_xkb_latin_layouts_size_ = self->priv->m_xkb_latin_layouts_length1; } static void _vala_array_add26 (gchar** * array, gint* length, gint* 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, gint* length, gint* 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) { glong string_length = 0L; gint _tmp0_; gint _tmp1_; gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; gchar* _tmp4_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = strlen (self); _tmp1_ = _tmp0_; string_length = (glong) _tmp1_; if (start < ((glong) 0)) { start = string_length + start; } if (end < ((glong) 0)) { end = string_length + end; } if (start >= ((glong) 0)) { _tmp2_ = start <= string_length; } else { _tmp2_ = FALSE; } g_return_val_if_fail (_tmp2_, NULL); if (end >= ((glong) 0)) { _tmp3_ = end <= string_length; } else { _tmp3_ = FALSE; } g_return_val_if_fail (_tmp3_, NULL); g_return_val_if_fail (start <= end, NULL); _tmp4_ = g_strndup (((gchar*) self) + start, (gsize) (end - start)); result = _tmp4_; return result; } static gchar* string_strip (const gchar* self) { gchar* _result_ = NULL; gchar* _tmp0_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = g_strdup (self); _result_ = _tmp0_; g_strstrip (_result_); 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_; gint exec_command_length1; gint _exec_command_size_; gchar** _tmp1_; gint _tmp1__length1; gchar* _tmp2_; gchar** _tmp3_; gint _tmp3__length1; gchar* _tmp4_; gchar* standard_output = NULL; gchar* standard_error = NULL; gint exit_status = 0; gchar* _tmp5_; gchar* _tmp6_; gchar* _tmp7_; const gchar* _tmp18_; const gchar* _tmp19_; gchar** _tmp20_; gchar** _tmp21_; GError* _inner_error0_ = 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_add26 (&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_add27 (&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_; gint _tmp8__length1; 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_error0_); _g_free0 (standard_output); standard_output = _tmp9_; _g_free0 (standard_error); standard_error = _tmp10_; exit_status = _tmp11_; if (G_UNLIKELY (_inner_error0_ != NULL)) { if (_inner_error0_->domain == G_SPAWN_ERROR) { goto __catch0_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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } } goto __finally0; __catch0_g_spawn_error: { GError* err = NULL; FILE* _tmp12_; GError* _tmp13_; const gchar* _tmp14_; err = _inner_error0_; _inner_error0_ = NULL; _tmp12_ = stderr; _tmp13_ = err; _tmp14_ = _tmp13_->message; fprintf (_tmp12_, "IBUS_ERROR: %s\n", _tmp14_); _g_error_free0 (err); } __finally0: if (G_UNLIKELY (_inner_error0_ != 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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } if (exit_status != 0) { const gchar* _tmp15_ = NULL; const gchar* _tmp16_; FILE* _tmp17_; _tmp16_ = standard_error; _tmp15_ = _tmp16_; if (_tmp15_ == NULL) { _tmp15_ = ""; } _tmp17_ = stderr; fprintf (_tmp17_, "IBUS_ERROR: %s\n", _tmp15_); } _tmp18_ = standard_output; if (_tmp18_ == 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; } _tmp19_ = standard_output; _tmp21_ = _tmp20_ = g_strsplit (_tmp19_, "\n", 0); { gchar** line_collection = NULL; gint line_collection_length1 = 0; gint _line_collection_size_ = 0; gint line_it = 0; line_collection = _tmp21_; line_collection_length1 = _vala_array_length (_tmp20_); for (line_it = 0; line_it < line_collection_length1; line_it = line_it + 1) { gchar* _tmp22_; gchar* line = NULL; _tmp22_ = g_strdup (line_collection[line_it]); line = _tmp22_; { gchar* element = NULL; gchar* _tmp23_; gchar* retval = NULL; gchar* _tmp24_; const gchar* _tmp25_; const gchar* _tmp26_; gchar* _tmp40_; gchar* _tmp41_; const gchar* _tmp42_; const gchar* _tmp43_; gchar* _tmp57_; gchar* _tmp58_; const gchar* _tmp59_; const gchar* _tmp60_; _tmp23_ = g_strdup ("layout:"); element = _tmp23_; _tmp24_ = g_strdup (""); retval = _tmp24_; _tmp25_ = line; _tmp26_ = element; if (g_str_has_prefix (_tmp25_, _tmp26_)) { const gchar* _tmp27_; const gchar* _tmp28_; gint _tmp29_; gint _tmp30_; const gchar* _tmp31_; gint _tmp32_; gint _tmp33_; gchar* _tmp34_; const gchar* _tmp35_; const gchar* _tmp38_; gchar* _tmp39_; _tmp27_ = line; _tmp28_ = element; _tmp29_ = strlen (_tmp28_); _tmp30_ = _tmp29_; _tmp31_ = line; _tmp32_ = strlen (_tmp31_); _tmp33_ = _tmp32_; _tmp34_ = string_slice (_tmp27_, (glong) _tmp30_, (glong) _tmp33_); _g_free0 (retval); retval = _tmp34_; _tmp35_ = retval; if (_tmp35_ != NULL) { const gchar* _tmp36_; gchar* _tmp37_; _tmp36_ = retval; _tmp37_ = string_strip (_tmp36_); _g_free0 (retval); retval = _tmp37_; } _tmp38_ = retval; _tmp39_ = g_strdup (_tmp38_); _g_free0 (_vala_layout); _vala_layout = _tmp39_; } _tmp40_ = g_strdup ("variant:"); _g_free0 (element); element = _tmp40_; _tmp41_ = g_strdup (""); _g_free0 (retval); retval = _tmp41_; _tmp42_ = line; _tmp43_ = element; if (g_str_has_prefix (_tmp42_, _tmp43_)) { const gchar* _tmp44_; const gchar* _tmp45_; gint _tmp46_; gint _tmp47_; const gchar* _tmp48_; gint _tmp49_; gint _tmp50_; gchar* _tmp51_; const gchar* _tmp52_; const gchar* _tmp55_; gchar* _tmp56_; _tmp44_ = line; _tmp45_ = element; _tmp46_ = strlen (_tmp45_); _tmp47_ = _tmp46_; _tmp48_ = line; _tmp49_ = strlen (_tmp48_); _tmp50_ = _tmp49_; _tmp51_ = string_slice (_tmp44_, (glong) _tmp47_, (glong) _tmp50_); _g_free0 (retval); retval = _tmp51_; _tmp52_ = retval; if (_tmp52_ != NULL) { const gchar* _tmp53_; gchar* _tmp54_; _tmp53_ = retval; _tmp54_ = string_strip (_tmp53_); _g_free0 (retval); retval = _tmp54_; } _tmp55_ = retval; _tmp56_ = g_strdup (_tmp55_); _g_free0 (_vala_variant); _vala_variant = _tmp56_; } _tmp57_ = g_strdup ("options:"); _g_free0 (element); element = _tmp57_; _tmp58_ = g_strdup (""); _g_free0 (retval); retval = _tmp58_; _tmp59_ = line; _tmp60_ = element; if (g_str_has_prefix (_tmp59_, _tmp60_)) { const gchar* _tmp61_; const gchar* _tmp62_; gint _tmp63_; gint _tmp64_; const gchar* _tmp65_; gint _tmp66_; gint _tmp67_; gchar* _tmp68_; const gchar* _tmp69_; const gchar* _tmp72_; gchar* _tmp73_; _tmp61_ = line; _tmp62_ = element; _tmp63_ = strlen (_tmp62_); _tmp64_ = _tmp63_; _tmp65_ = line; _tmp66_ = strlen (_tmp65_); _tmp67_ = _tmp66_; _tmp68_ = string_slice (_tmp61_, (glong) _tmp64_, (glong) _tmp67_); _g_free0 (retval); retval = _tmp68_; _tmp69_ = retval; if (_tmp69_ != NULL) { const gchar* _tmp70_; gchar* _tmp71_; _tmp70_ = retval; _tmp71_ = string_strip (_tmp70_); _g_free0 (retval); retval = _tmp71_; } _tmp72_ = retval; _tmp73_ = g_strdup (_tmp72_); _g_free0 (_vala_option); _vala_option = _tmp73_; } _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, gint stack_length, const gchar* needle) { gint i; for (i = 0; i < stack_length; i++) { if (g_strcmp0 (stack[i], needle) == 0) { return TRUE; } } return FALSE; } static void _vala_array_add28 (gchar** * array, gint* length, gint* 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, gint* length, gint* 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, gint* length, gint* 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, gint* length, gint* 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, gint* length, gint* 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_add33 (gchar** * array, gint* length, gint* 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_add34 (gchar** * array, gint* length, gint* 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_add35 (gchar** * array, gint* length, gint* 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; const gchar* _tmp0_; gchar* _tmp1_; gchar* variant = NULL; const gchar* _tmp2_; gchar* _tmp3_; gchar* option = NULL; const gchar* _tmp4_; gchar* _tmp5_; const gchar* _tmp6_; gboolean _tmp7_ = FALSE; gboolean _tmp8_ = FALSE; const gchar* _tmp9_; gboolean need_us_layout = FALSE; const gchar* _tmp16_; gboolean _tmp19_ = FALSE; const gchar* _tmp26_; gboolean _tmp30_ = FALSE; const gchar* _tmp31_; const gchar* _tmp37_; gboolean _tmp38_ = FALSE; const gchar* _tmp39_; gchar** args = NULL; gchar** _tmp59_; gint args_length1; gint _args_size_; gchar** _tmp60_; gint _tmp60__length1; gchar* _tmp61_; gchar** _tmp62_; gint _tmp62__length1; gchar* _tmp63_; gchar** _tmp64_; gint _tmp64__length1; const gchar* _tmp65_; gchar* _tmp66_; gboolean _tmp67_ = FALSE; gboolean _tmp68_ = FALSE; const gchar* _tmp69_; gboolean _tmp77_ = FALSE; gboolean _tmp78_ = FALSE; const gchar* _tmp79_; gchar* standard_error = NULL; gint exit_status = 0; GError* _inner_error0_ = NULL; g_return_if_fail (self != NULL); g_return_if_fail (engine != NULL); _tmp0_ = ibus_engine_desc_get_layout (engine); _tmp1_ = g_strdup (_tmp0_); layout = _tmp1_; _tmp2_ = ibus_engine_desc_get_layout_variant (engine); _tmp3_ = g_strdup (_tmp2_); variant = _tmp3_; _tmp4_ = ibus_engine_desc_get_layout_option (engine); _tmp5_ = g_strdup (_tmp4_); option = _tmp5_; _tmp6_ = layout; _vala_assert (_tmp6_ != NULL, "layout != null"); _tmp9_ = layout; if (g_strcmp0 (_tmp9_, "default") == 0) { gboolean _tmp10_ = FALSE; const gchar* _tmp11_; _tmp11_ = variant; if (g_strcmp0 (_tmp11_, "default") == 0) { _tmp10_ = TRUE; } else { const gchar* _tmp12_; _tmp12_ = variant; _tmp10_ = g_strcmp0 (_tmp12_, "") == 0; } _tmp8_ = _tmp10_; } else { _tmp8_ = FALSE; } if (_tmp8_) { gboolean _tmp13_ = FALSE; const gchar* _tmp14_; _tmp14_ = option; if (g_strcmp0 (_tmp14_, "default") == 0) { _tmp13_ = TRUE; } else { const gchar* _tmp15_; _tmp15_ = option; _tmp13_ = g_strcmp0 (_tmp15_, "") == 0; } _tmp7_ = _tmp13_; } else { _tmp7_ = FALSE; } if (_tmp7_) { _g_free0 (option); _g_free0 (variant); _g_free0 (layout); return; } need_us_layout = FALSE; _tmp16_ = variant; if (g_strcmp0 (_tmp16_, "eng") != 0) { const gchar* _tmp17_; gchar** _tmp18_; gint _tmp18__length1; _tmp17_ = layout; _tmp18_ = self->priv->m_xkb_latin_layouts; _tmp18__length1 = self->priv->m_xkb_latin_layouts_length1; need_us_layout = _vala_string_array_contains (_tmp18_, _tmp18__length1, _tmp17_); } if (!need_us_layout) { const gchar* _tmp20_; _tmp20_ = variant; _tmp19_ = _tmp20_ != NULL; } else { _tmp19_ = FALSE; } if (_tmp19_) { const gchar* _tmp21_; const gchar* _tmp22_; gchar* _tmp23_; gchar* _tmp24_; gchar** _tmp25_; gint _tmp25__length1; _tmp21_ = layout; _tmp22_ = variant; _tmp23_ = g_strdup_printf ("%s(%s)", _tmp21_, _tmp22_); _tmp24_ = _tmp23_; _tmp25_ = self->priv->m_xkb_latin_layouts; _tmp25__length1 = self->priv->m_xkb_latin_layouts_length1; need_us_layout = _vala_string_array_contains (_tmp25_, _tmp25__length1, _tmp24_); _g_free0 (_tmp24_); } _tmp26_ = self->priv->m_default_layout; if (g_strcmp0 (_tmp26_, "") == 0) { gchar* _tmp27_ = NULL; gchar* _tmp28_ = NULL; gchar* _tmp29_ = NULL; xkb_layout_get_layout (&_tmp27_, &_tmp28_, &_tmp29_); _g_free0 (self->priv->m_default_layout); self->priv->m_default_layout = _tmp27_; _g_free0 (self->priv->m_default_variant); self->priv->m_default_variant = _tmp28_; _g_free0 (self->priv->m_default_option); self->priv->m_default_option = _tmp29_; } _tmp31_ = layout; if (g_strcmp0 (_tmp31_, "default") == 0) { _tmp30_ = TRUE; } else { const gchar* _tmp32_; _tmp32_ = layout; _tmp30_ = g_strcmp0 (_tmp32_, "") == 0; } if (_tmp30_) { const gchar* _tmp33_; gchar* _tmp34_; const gchar* _tmp35_; gchar* _tmp36_; _tmp33_ = self->priv->m_default_layout; _tmp34_ = g_strdup (_tmp33_); _g_free0 (layout); layout = _tmp34_; _tmp35_ = self->priv->m_default_variant; _tmp36_ = g_strdup (_tmp35_); _g_free0 (variant); variant = _tmp36_; } _tmp37_ = layout; if (g_strcmp0 (_tmp37_, "") == 0) { g_warning ("xkblayout.vala:148: Could not get the correct layout"); _g_free0 (option); _g_free0 (variant); _g_free0 (layout); return; } _tmp39_ = option; if (g_strcmp0 (_tmp39_, "default") == 0) { _tmp38_ = TRUE; } else { const gchar* _tmp40_; _tmp40_ = option; _tmp38_ = g_strcmp0 (_tmp40_, "") == 0; } if (_tmp38_) { const gchar* _tmp41_; gchar* _tmp42_; _tmp41_ = self->priv->m_default_option; _tmp42_ = g_strdup (_tmp41_); _g_free0 (option); option = _tmp42_; } else { const gchar* _tmp43_; const gchar* _tmp44_; gchar** _tmp45_; gchar** _tmp46_; gchar** _tmp47_; gint _tmp47__length1; gboolean _tmp48_; _tmp43_ = option; _tmp44_ = self->priv->m_default_option; _tmp46_ = _tmp45_ = g_strsplit (_tmp44_, ",", 0); _tmp47_ = _tmp46_; _tmp47__length1 = _vala_array_length (_tmp45_); _tmp48_ = !_vala_string_array_contains (_tmp47_, _vala_array_length (_tmp45_), _tmp43_); _tmp47_ = (_vala_array_free (_tmp47_, _tmp47__length1, (GDestroyNotify) g_free), NULL); if (_tmp48_) { const gchar* _tmp49_; const gchar* _tmp50_; gchar* _tmp51_; _tmp49_ = self->priv->m_default_option; _tmp50_ = option; _tmp51_ = g_strdup_printf ("%s,%s", _tmp49_, _tmp50_); _g_free0 (option); option = _tmp51_; } else { const gchar* _tmp52_; gchar* _tmp53_; _tmp52_ = self->priv->m_default_option; _tmp53_ = g_strdup (_tmp52_); _g_free0 (option); option = _tmp53_; } } if (need_us_layout) { const gchar* _tmp54_; gchar* _tmp55_; const gchar* _tmp56_; _tmp54_ = layout; _tmp55_ = g_strconcat (_tmp54_, ",us", NULL); _g_free0 (layout); layout = _tmp55_; _tmp56_ = variant; if (_tmp56_ != NULL) { const gchar* _tmp57_; gchar* _tmp58_; _tmp57_ = variant; _tmp58_ = g_strconcat (_tmp57_, ",", NULL); _g_free0 (variant); variant = _tmp58_; } } _tmp59_ = g_new0 (gchar*, 0 + 1); args = _tmp59_; args_length1 = 0; _args_size_ = args_length1; _tmp60_ = args; _tmp60__length1 = args_length1; _tmp61_ = g_strdup (XKB_LAYOUT_XKB_COMMAND); _vala_array_add28 (&args, &args_length1, &_args_size_, _tmp61_); _tmp62_ = args; _tmp62__length1 = args_length1; _tmp63_ = g_strdup (XKB_LAYOUT_XKB_LAYOUT_ARG); _vala_array_add29 (&args, &args_length1, &_args_size_, _tmp63_); _tmp64_ = args; _tmp64__length1 = args_length1; _tmp65_ = layout; _tmp66_ = g_strdup (_tmp65_); _vala_array_add30 (&args, &args_length1, &_args_size_, _tmp66_); _tmp69_ = variant; if (_tmp69_ != NULL) { const gchar* _tmp70_; _tmp70_ = variant; _tmp68_ = g_strcmp0 (_tmp70_, "") != 0; } else { _tmp68_ = FALSE; } if (_tmp68_) { const gchar* _tmp71_; _tmp71_ = variant; _tmp67_ = g_strcmp0 (_tmp71_, "default") != 0; } else { _tmp67_ = FALSE; } if (_tmp67_) { gchar** _tmp72_; gint _tmp72__length1; gchar* _tmp73_; gchar** _tmp74_; gint _tmp74__length1; const gchar* _tmp75_; gchar* _tmp76_; _tmp72_ = args; _tmp72__length1 = args_length1; _tmp73_ = g_strdup ("-variant"); _vala_array_add31 (&args, &args_length1, &_args_size_, _tmp73_); _tmp74_ = args; _tmp74__length1 = args_length1; _tmp75_ = variant; _tmp76_ = g_strdup (_tmp75_); _vala_array_add32 (&args, &args_length1, &_args_size_, _tmp76_); } _tmp79_ = option; if (_tmp79_ != NULL) { const gchar* _tmp80_; _tmp80_ = option; _tmp78_ = g_strcmp0 (_tmp80_, "") != 0; } else { _tmp78_ = FALSE; } if (_tmp78_) { const gchar* _tmp81_; _tmp81_ = option; _tmp77_ = g_strcmp0 (_tmp81_, "default") != 0; } else { _tmp77_ = FALSE; } if (_tmp77_) { gchar** _tmp82_; gint _tmp82__length1; gchar* _tmp83_; gchar** _tmp84_; gint _tmp84__length1; gchar* _tmp85_; gchar** _tmp86_; gint _tmp86__length1; const gchar* _tmp87_; gchar* _tmp88_; _tmp82_ = args; _tmp82__length1 = args_length1; _tmp83_ = g_strdup ("-option"); _vala_array_add33 (&args, &args_length1, &_args_size_, _tmp83_); _tmp84_ = args; _tmp84__length1 = args_length1; _tmp85_ = g_strdup ("-option"); _vala_array_add34 (&args, &args_length1, &_args_size_, _tmp85_); _tmp86_ = args; _tmp86__length1 = args_length1; _tmp87_ = option; _tmp88_ = g_strdup (_tmp87_); _vala_array_add35 (&args, &args_length1, &_args_size_, _tmp88_); } standard_error = NULL; exit_status = 0; { gboolean _tmp89_ = FALSE; gchar** _tmp90_; gint _tmp90__length1; gchar* _tmp91_ = NULL; gint _tmp92_ = 0; gboolean _tmp93_; _tmp90_ = args; _tmp90__length1 = args_length1; _tmp93_ = g_spawn_sync (NULL, _tmp90_, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &_tmp91_, &_tmp92_, &_inner_error0_); _g_free0 (standard_error); standard_error = _tmp91_; exit_status = _tmp92_; _tmp89_ = _tmp93_; if (G_UNLIKELY (_inner_error0_ != NULL)) { if (_inner_error0_->domain == G_SPAWN_ERROR) { goto __catch0_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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } if (!_tmp89_) { const gchar* _tmp94_; _tmp94_ = ibus_engine_desc_get_layout (engine); g_warning ("xkblayout.vala:195: Switch xkb layout to %s failed.", _tmp94_); } } goto __finally0; __catch0_g_spawn_error: { GError* e = NULL; GError* _tmp95_; const gchar* _tmp96_; e = _inner_error0_; _inner_error0_ = NULL; _tmp95_ = e; _tmp96_ = _tmp95_->message; g_warning ("xkblayout.vala:198: Execute setxkbmap failed: %s", _tmp96_); _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; } __finally0: if (G_UNLIKELY (_inner_error0_ != 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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } if (exit_status != 0) { const gchar* _tmp97_ = NULL; const gchar* _tmp98_; _tmp98_ = standard_error; _tmp97_ = _tmp98_; if (_tmp97_ == NULL) { _tmp97_ = "(null)"; } g_warning ("xkblayout.vala:203: Execute setxkbmap failed: %s", _tmp97_); } 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) { gchar* homedir = NULL; const gchar* _tmp0_; gchar* _tmp1_; GError* _inner_error0_ = NULL; g_return_if_fail (self != NULL); if (!self->priv->m_use_xmodmap) { return; } _tmp0_ = g_get_home_dir (); _tmp1_ = g_strdup (_tmp0_); homedir = _tmp1_; { 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 < xmodmap_file_collection_length1; xmodmap_file_it = xmodmap_file_it + 1) { gchar* _tmp2_; gchar* xmodmap_file = NULL; _tmp2_ = g_strdup (xmodmap_file_collection[xmodmap_file_it]); xmodmap_file = _tmp2_; { gchar* xmodmap_filepath = NULL; const gchar* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; const gchar* _tmp6_; gchar** args = NULL; gchar* _tmp7_; const gchar* _tmp8_; gchar* _tmp9_; gchar** _tmp10_; gint args_length1; gint _args_size_; _tmp3_ = homedir; _tmp4_ = xmodmap_file; _tmp5_ = g_build_filename (_tmp3_, _tmp4_, NULL); xmodmap_filepath = _tmp5_; _tmp6_ = xmodmap_filepath; if (!g_file_test (_tmp6_, G_FILE_TEST_EXISTS)) { _g_free0 (xmodmap_filepath); _g_free0 (xmodmap_file); continue; } _tmp7_ = g_strdup (XKB_LAYOUT_XMODMAP_COMMAND); _tmp8_ = xmodmap_filepath; _tmp9_ = g_strdup (_tmp8_); _tmp10_ = g_new0 (gchar*, 2 + 1); _tmp10_[0] = _tmp7_; _tmp10_[1] = _tmp9_; args = _tmp10_; args_length1 = 2; _args_size_ = args_length1; { gchar** _tmp11_; gint _tmp11__length1; _tmp11_ = args; _tmp11__length1 = args_length1; g_spawn_async (NULL, _tmp11_, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { if (_inner_error0_->domain == G_SPAWN_ERROR) { goto __catch0_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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } } goto __finally0; __catch0_g_spawn_error: { GError* e = NULL; GError* _tmp12_; const gchar* _tmp13_; e = _inner_error0_; _inner_error0_ = NULL; _tmp12_ = e; _tmp13_ = _tmp12_->message; g_warning ("xkblayout.vala:241: Execute xmodmap is failed: %s\n", _tmp13_); _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; } __finally0: if (G_UNLIKELY (_inner_error0_ != 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_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); 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) { g_return_if_fail (self != NULL); self->priv->m_use_xmodmap = use_xmodmap; } 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, gpointer klass_data) { xkb_layout_parent_class = g_type_class_peek_parent (klass); ((XKBLayoutClass *) klass)->finalize = xkb_layout_finalize; g_type_class_adjust_private_offset (klass, &XKBLayout_private_offset); } static void xkb_layout_instance_init (XKBLayout * self, gpointer klass) { gchar** _tmp0_; gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; self->priv = xkb_layout_get_instance_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); } static GType xkb_layout_get_type_once (void) { 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); XKBLayout_private_offset = g_type_add_instance_private (xkb_layout_type_id, sizeof (XKBLayoutPrivate)); return xkb_layout_type_id; } 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)) { GType xkb_layout_type_id; xkb_layout_type_id = xkb_layout_get_type_once (); 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)) { gint 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) { gint length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; } ibus-1.5.22/ui/gtk3/handle.c0000644000000000000000000004770513623751707012346 00000000000000/* handle.c generated by valac 0.47.91, the Vala compiler * generated from handle.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2016 Peng Huang * Copyright(c) 2016-2017 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_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; enum { HANDLE_0_PROPERTY, HANDLE_NUM_PROPERTIES }; static GParamSpec* handle_properties[HANDLE_NUM_PROPERTIES]; #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))) enum { HANDLE_MOVE_BEGIN_SIGNAL, HANDLE_MOVE_END_SIGNAL, HANDLE_NUM_SIGNALS }; static guint handle_signals[HANDLE_NUM_SIGNALS] = {0}; 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 gint Handle_private_offset; static gpointer handle_parent_class = NULL; GType handle_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Handle, g_object_unref) 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 GType handle_get_type_once (void); static inline gpointer handle_get_instance_private (Handle* self) { return G_STRUCT_MEMBER_P (self, Handle_private_offset); } 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 = 0U; GtkCssProvider* css_provider = NULL; GtkCssProvider* _tmp0_; GtkStyleContext* context = NULL; GtkStyleContext* _tmp3_; GtkStyleContext* _tmp4_; GError* _inner_error0_ = NULL; self = (Handle*) g_object_new (object_type, "name", "IBusHandle", 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, "#IBusHandle { background-color: gray }", (gssize) -1, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch0_g_error; } } goto __finally0; __catch0_g_error: { GError* _error_ = NULL; GError* _tmp1_; const gchar* _tmp2_; _error_ = _inner_error0_; _inner_error0_ = NULL; _tmp1_ = _error_; _tmp2_ = _tmp1_->message; g_warning ("handle.vala:53: Parse error in Handle: %s", _tmp2_); _g_error_free0 (_error_); } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_object_unref0 (css_provider); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); 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; GdkRectangle _tmp0_ = {0}; gint x = 0; gint y = 0; GtkWindow* toplevel = NULL; GtkWidget* _tmp64_; GtkWindow* _tmp65_; GtkWindow* _tmp66_; gint _tmp67_ = 0; gint _tmp68_ = 0; gboolean result = FALSE; self = (Handle*) base; g_return_val_if_fail (event != NULL, FALSE); if (event->button != ((guint) 1)) { result = FALSE; return result; } memset (&_tmp0_, 0, sizeof (GdkRectangle)); _tmp0_.x = 0; _tmp0_.y = 0; _tmp0_.width = G_MAXINT; _tmp0_.height = G_MAXINT; self->priv->m_workarea = _tmp0_; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { GdkWindow* root = NULL; GdkWindow* _tmp2_; GdkWindow* _tmp3_; GdkAtom property = 0U; GdkAtom type = 0U; GdkAtom actual_type = 0U; gint format = 0; guchar* data = NULL; gint data_length1 = 0; gint _data_size_ = 0; gboolean _result_ = FALSE; GdkWindow* _tmp4_; GdkAtom _tmp5_ = 0U; gint _tmp6_ = 0; guint8* _tmp7_ = NULL; gint _tmp8_ = 0; gboolean _tmp9_; gboolean _tmp10_ = FALSE; gboolean _tmp11_ = FALSE; gboolean _tmp12_ = FALSE; gint index = 0; guchar* _tmp14_; gint _tmp14__length1; guchar _tmp15_; guchar* _tmp16_; gint _tmp16__length1; guchar _tmp17_; guchar* _tmp18_; gint _tmp18__length1; guchar _tmp19_; guchar* _tmp20_; gint _tmp20__length1; guchar _tmp21_; GdkWindow* _tmp22_; GdkAtom _tmp23_ = 0U; gint _tmp24_ = 0; guint8* _tmp25_ = NULL; gint _tmp26_ = 0; gboolean _tmp27_; gboolean _tmp28_ = FALSE; gboolean _tmp29_ = FALSE; gboolean _tmp30_ = FALSE; gint i = 0; guchar* _tmp32_; gint _tmp32__length1; guchar _tmp33_; guchar* _tmp34_; gint _tmp34__length1; guchar _tmp35_; guchar* _tmp36_; gint _tmp36__length1; guchar _tmp37_; guchar* _tmp38_; gint _tmp38__length1; guchar _tmp39_; guchar* _tmp40_; gint _tmp40__length1; guchar _tmp41_; guchar* _tmp42_; gint _tmp42__length1; guchar _tmp43_; guchar* _tmp44_; gint _tmp44__length1; guchar _tmp45_; guchar* _tmp46_; gint _tmp46__length1; guchar _tmp47_; guchar* _tmp48_; gint _tmp48__length1; guchar _tmp49_; guchar* _tmp50_; gint _tmp50__length1; guchar _tmp51_; guchar* _tmp52_; gint _tmp52__length1; guchar _tmp53_; guchar* _tmp54_; gint _tmp54__length1; guchar _tmp55_; guchar* _tmp56_; gint _tmp56__length1; guchar _tmp57_; guchar* _tmp58_; gint _tmp58__length1; guchar _tmp59_; guchar* _tmp60_; gint _tmp60__length1; guchar _tmp61_; guchar* _tmp62_; gint _tmp62__length1; guchar _tmp63_; if (!_tmp1_) { if (!FALSE) { break; } } _tmp1_ = FALSE; _tmp2_ = gdk_get_default_root_window (); _tmp3_ = _g_object_ref0 (_tmp2_); root = _tmp3_; property = gdk_atom_intern ("_NET_CURRENT_DESKTOP", FALSE); type = gdk_atom_intern ("CARDINAL", FALSE); _tmp4_ = root; _tmp9_ = gdk_property_get (_tmp4_, property, type, (gulong) 0, (gulong) G_MAXLONG, 0, &_tmp5_, &_tmp6_, &_tmp8_, &_tmp7_); actual_type = _tmp5_; format = _tmp6_; data = (g_free (data), NULL); data = _tmp7_; data_length1 = _tmp8_; _data_size_ = data_length1; _result_ = _tmp9_; if (!_result_) { _tmp12_ = TRUE; } else { _tmp12_ = actual_type != type; } if (_tmp12_) { _tmp11_ = TRUE; } else { _tmp11_ = format != 32; } if (_tmp11_) { _tmp10_ = TRUE; } else { guchar* _tmp13_; gint _tmp13__length1; _tmp13_ = data; _tmp13__length1 = data_length1; _tmp10_ = _tmp13__length1 != 4; } if (_tmp10_) { data = (g_free (data), NULL); _g_object_unref0 (root); break; } _tmp14_ = data; _tmp14__length1 = data_length1; _tmp15_ = _tmp14_[0]; _tmp16_ = data; _tmp16__length1 = data_length1; _tmp17_ = _tmp16_[1]; _tmp18_ = data; _tmp18__length1 = data_length1; _tmp19_ = _tmp18_[2]; _tmp20_ = data; _tmp20__length1 = data_length1; _tmp21_ = _tmp20_[3]; index = (gint) (((_tmp15_ | (_tmp17_ << 8)) | (_tmp19_ << 16)) | (_tmp21_ << 24)); property = gdk_atom_intern ("_NET_WORKAREA", FALSE); type = gdk_atom_intern ("CARDINAL", FALSE); _tmp22_ = root; _tmp27_ = gdk_property_get (_tmp22_, property, type, (gulong) 0, (gulong) G_MAXLONG, 0, &_tmp23_, &_tmp24_, &_tmp26_, &_tmp25_); actual_type = _tmp23_; format = _tmp24_; data = (g_free (data), NULL); data = _tmp25_; data_length1 = _tmp26_; _data_size_ = data_length1; _result_ = _tmp27_; if (!_result_) { _tmp30_ = TRUE; } else { _tmp30_ = actual_type != type; } if (_tmp30_) { _tmp29_ = TRUE; } else { _tmp29_ = format != 32; } if (_tmp29_) { _tmp28_ = TRUE; } else { guchar* _tmp31_; gint _tmp31__length1; _tmp31_ = data; _tmp31__length1 = data_length1; _tmp28_ = _tmp31__length1 < ((index + 1) * 16); } if (_tmp28_) { data = (g_free (data), NULL); _g_object_unref0 (root); break; } i = (index * 4) * 4; _tmp32_ = data; _tmp32__length1 = data_length1; _tmp33_ = _tmp32_[i]; _tmp34_ = data; _tmp34__length1 = data_length1; _tmp35_ = _tmp34_[i + 1]; _tmp36_ = data; _tmp36__length1 = data_length1; _tmp37_ = _tmp36_[i + 2]; _tmp38_ = data; _tmp38__length1 = data_length1; _tmp39_ = _tmp38_[i + 3]; self->priv->m_workarea.x = (gint) (((_tmp33_ | (_tmp35_ << 8)) | (_tmp37_ << 16)) | (_tmp39_ << 24)); i += 4; _tmp40_ = data; _tmp40__length1 = data_length1; _tmp41_ = _tmp40_[i]; _tmp42_ = data; _tmp42__length1 = data_length1; _tmp43_ = _tmp42_[i + 1]; _tmp44_ = data; _tmp44__length1 = data_length1; _tmp45_ = _tmp44_[i + 2]; _tmp46_ = data; _tmp46__length1 = data_length1; _tmp47_ = _tmp46_[i + 3]; self->priv->m_workarea.y = (gint) (((_tmp41_ | (_tmp43_ << 8)) | (_tmp45_ << 16)) | (_tmp47_ << 24)); i += 4; _tmp48_ = data; _tmp48__length1 = data_length1; _tmp49_ = _tmp48_[i]; _tmp50_ = data; _tmp50__length1 = data_length1; _tmp51_ = _tmp50_[i + 1]; _tmp52_ = data; _tmp52__length1 = data_length1; _tmp53_ = _tmp52_[i + 2]; _tmp54_ = data; _tmp54__length1 = data_length1; _tmp55_ = _tmp54_[i + 3]; self->priv->m_workarea.width = (gint) (((_tmp49_ | (_tmp51_ << 8)) | (_tmp53_ << 16)) | (_tmp55_ << 24)); i += 4; _tmp56_ = data; _tmp56__length1 = data_length1; _tmp57_ = _tmp56_[i]; _tmp58_ = data; _tmp58__length1 = data_length1; _tmp59_ = _tmp58_[i + 1]; _tmp60_ = data; _tmp60__length1 = data_length1; _tmp61_ = _tmp60_[i + 2]; _tmp62_ = data; _tmp62__length1 = data_length1; _tmp63_ = _tmp62_[i + 3]; self->priv->m_workarea.height = (gint) (((_tmp57_ | (_tmp59_ << 8)) | (_tmp61_ << 16)) | (_tmp63_ << 24)); data = (g_free (data), NULL); _g_object_unref0 (root); } } self->priv->m_move_begined = TRUE; _tmp64_ = gtk_widget_get_toplevel ((GtkWidget*) self); _tmp65_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp64_, gtk_window_get_type (), GtkWindow)); toplevel = _tmp65_; _tmp66_ = toplevel; gtk_window_get_position (_tmp66_, &_tmp67_, &_tmp68_); x = _tmp67_; y = _tmp68_; self->priv->m_press_pos.x = ((gint) event->x_root) - x; self->priv->m_press_pos.y = ((gint) event->y_root) - y; g_signal_emit (self, handle_signals[HANDLE_MOVE_BEGIN_SIGNAL], 0); result = TRUE; _g_object_unref0 (toplevel); return result; } static gboolean handle_real_button_release_event (GtkWidget* base, GdkEventButton* event) { Handle * self; GdkWindow* _tmp0_; GdkDisplay* _tmp1_; GdkCursor* _tmp2_; GdkCursor* _tmp3_; gboolean result = FALSE; self = (Handle*) base; g_return_val_if_fail (event != NULL, FALSE); if (event->button != ((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; _tmp0_ = gtk_widget_get_window ((GtkWidget*) self); _tmp1_ = gdk_display_get_default (); _tmp2_ = gdk_cursor_new_for_display (_tmp1_, GDK_FLEUR); _tmp3_ = _tmp2_; gdk_window_set_cursor (_tmp0_, _tmp3_); _g_object_unref0 (_tmp3_); g_signal_emit (self, handle_signals[HANDLE_MOVE_END_SIGNAL], 0); result = TRUE; return result; } static gboolean handle_real_motion_notify_event (GtkWidget* base, GdkEventMotion* event) { Handle * self; GtkWindow* toplevel = NULL; GtkWidget* _tmp0_; GtkWindow* _tmp1_; gint x = 0; GdkPoint _tmp2_; gint y = 0; GdkPoint _tmp3_; gboolean _tmp4_ = FALSE; GdkRectangle _tmp5_; gboolean _tmp8_ = FALSE; GdkRectangle _tmp9_; gint w = 0; gint h = 0; GtkWindow* _tmp12_; gint _tmp13_ = 0; gint _tmp14_ = 0; gboolean _tmp15_ = FALSE; GdkRectangle _tmp16_; GdkRectangle _tmp17_; gboolean _tmp22_ = FALSE; GdkRectangle _tmp23_; GdkRectangle _tmp24_; GtkWindow* _tmp29_; gboolean result = FALSE; self = (Handle*) base; g_return_val_if_fail (event != NULL, FALSE); if (!self->priv->m_move_begined) { result = FALSE; return result; } _tmp0_ = gtk_widget_get_toplevel ((GtkWidget*) self); _tmp1_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, gtk_window_get_type (), GtkWindow)); toplevel = _tmp1_; _tmp2_ = self->priv->m_press_pos; x = (gint) (event->x_root - _tmp2_.x); _tmp3_ = self->priv->m_press_pos; y = (gint) (event->y_root - _tmp3_.y); _tmp5_ = self->priv->m_workarea; if (x < _tmp5_.x) { GdkRectangle _tmp6_; _tmp6_ = self->priv->m_workarea; _tmp4_ = x > (_tmp6_.x - 16); } else { _tmp4_ = FALSE; } if (_tmp4_) { GdkRectangle _tmp7_; _tmp7_ = self->priv->m_workarea; x = _tmp7_.x; } _tmp9_ = self->priv->m_workarea; if (y < _tmp9_.y) { GdkRectangle _tmp10_; _tmp10_ = self->priv->m_workarea; _tmp8_ = y > (_tmp10_.y - 16); } else { _tmp8_ = FALSE; } if (_tmp8_) { GdkRectangle _tmp11_; _tmp11_ = self->priv->m_workarea; y = _tmp11_.y; } _tmp12_ = toplevel; gtk_window_get_size (_tmp12_, &_tmp13_, &_tmp14_); w = _tmp13_; h = _tmp14_; _tmp16_ = self->priv->m_workarea; _tmp17_ = self->priv->m_workarea; if ((x + w) > (_tmp16_.x + _tmp17_.width)) { GdkRectangle _tmp18_; GdkRectangle _tmp19_; _tmp18_ = self->priv->m_workarea; _tmp19_ = self->priv->m_workarea; _tmp15_ = (x + w) < ((_tmp18_.x + _tmp19_.width) + 16); } else { _tmp15_ = FALSE; } if (_tmp15_) { GdkRectangle _tmp20_; GdkRectangle _tmp21_; _tmp20_ = self->priv->m_workarea; _tmp21_ = self->priv->m_workarea; x = (_tmp20_.x + _tmp21_.width) - w; } _tmp23_ = self->priv->m_workarea; _tmp24_ = self->priv->m_workarea; if ((y + h) > (_tmp23_.y + _tmp24_.height)) { GdkRectangle _tmp25_; GdkRectangle _tmp26_; _tmp25_ = self->priv->m_workarea; _tmp26_ = self->priv->m_workarea; _tmp22_ = (y + h) < ((_tmp25_.y + _tmp26_.height) + 16); } else { _tmp22_ = FALSE; } if (_tmp22_) { GdkRectangle _tmp27_; GdkRectangle _tmp28_; _tmp27_ = self->priv->m_workarea; _tmp28_ = self->priv->m_workarea; y = (_tmp27_.y + _tmp28_.height) - w; } _tmp29_ = toplevel; gtk_window_move (_tmp29_, x, y); result = TRUE; _g_object_unref0 (toplevel); return result; } static gboolean handle_real_draw (GtkWidget* base, cairo_t* cr) { Handle * self; GdkWindow* _tmp0_; gboolean result = FALSE; self = (Handle*) base; g_return_val_if_fail (cr != NULL, FALSE); _tmp0_ = gtk_widget_get_window ((GtkWidget*) self); if (gtk_cairo_should_draw_window (cr, _tmp0_)) { GtkStyleContext* context = NULL; GtkStyleContext* _tmp1_; GtkStyleContext* _tmp2_; GtkAllocation allocation = {0}; GtkAllocation _tmp3_ = {0}; GtkStyleContext* _tmp4_; GtkAllocation _tmp5_; GtkAllocation _tmp6_; GtkAllocation _tmp7_; GtkAllocation _tmp8_; _tmp1_ = gtk_widget_get_style_context ((GtkWidget*) self); _tmp2_ = _g_object_ref0 (_tmp1_); context = _tmp2_; gtk_widget_get_allocation ((GtkWidget*) self, &_tmp3_); allocation = _tmp3_; _tmp4_ = context; _tmp5_ = allocation; _tmp6_ = allocation; _tmp7_ = allocation; _tmp8_ = allocation; gtk_render_handle (_tmp4_, cr, (gdouble) _tmp5_.x, (gdouble) (_tmp6_.y + ((_tmp7_.height - 40) / 2)), (gdouble) _tmp8_.width, 40.0); _g_object_unref0 (context); } result = FALSE; return result; } static void handle_class_init (HandleClass * klass, gpointer klass_data) { handle_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &Handle_private_offset); ((GtkWidgetClass *) klass)->realize = (void (*) (GtkWidget*)) handle_real_realize; ((GtkWidgetClass *) klass)->button_press_event = (gboolean (*) (GtkWidget*, GdkEventButton*)) handle_real_button_press_event; ((GtkWidgetClass *) klass)->button_release_event = (gboolean (*) (GtkWidget*, GdkEventButton*)) handle_real_button_release_event; ((GtkWidgetClass *) klass)->motion_notify_event = (gboolean (*) (GtkWidget*, GdkEventMotion*)) handle_real_motion_notify_event; ((GtkWidgetClass *) klass)->draw = (gboolean (*) (GtkWidget*, cairo_t*)) handle_real_draw; G_OBJECT_CLASS (klass)->finalize = handle_finalize; handle_signals[HANDLE_MOVE_BEGIN_SIGNAL] = g_signal_new ("move-begin", TYPE_HANDLE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); handle_signals[HANDLE_MOVE_END_SIGNAL] = 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, gpointer klass) { self->priv = handle_get_instance_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); } static GType handle_get_type_once (void) { 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); Handle_private_offset = g_type_add_instance_private (handle_type_id, sizeof (HandlePrivate)); return handle_type_id; } GType handle_get_type (void) { static volatile gsize handle_type_id__volatile = 0; if (g_once_init_enter (&handle_type_id__volatile)) { GType handle_type_id; handle_type_id = handle_get_type_once (); g_once_init_leave (&handle_type_id__volatile, handle_type_id); } return handle_type_id__volatile; } ibus-1.5.22/ui/gtk3/ibusemojidialog.h0000644000000000000000000001433613623750431014251 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2017-2018 Takao Fujiwara * Copyright (C) 2017 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_EMOJI_DIALOG_H_ #define __IBUS_EMOJI_DIALOG_H_ #include /** * SECTION: ibusemojidialog * @short_description: emoji dialog utility. * @stability: Unstable * * miscellaneous emoji dialg APIs. */ G_BEGIN_DECLS typedef struct _IBusEmojier IBusEmojier; typedef struct _IBusEmojierPrivate IBusEmojierPrivate; typedef struct _IBusEmojierClass IBusEmojierClass; struct _IBusEmojier { /*< private >*/ GtkWindow parent_instance; IBusEmojierPrivate * priv; /* instance members */ /*< public >*/ }; struct _IBusEmojierClass { /*< private >*/ GtkWindowClass parent_class; /* class members */ /*< public >*/ /* signals */ }; GType ibus_emojier_get_type (void); /** * ibus_emojier_new: * * Creates a new #IBusEmojier. * * Returns: A newly allocated #IBusEmojiier. */ IBusEmojier * ibus_emojier_new (void); /** * ibus_emojier_run: * @self: An #IBusEmojier * @input_context_path: An input context path of #IBusInputContext * of the focused application. * @event: A #GdkEventKey for timestamp * * Runs emoji dialog to select emoji. * * Returns: A selected emoji character. */ gchar * ibus_emojier_run (IBusEmojier* self, const gchar* input_context_path, GdkEvent* event); /** * ibus_emojier_is_running: * @self: An #IBusEmojier * * Returns: boolean if the emoji dialog is running */ gboolean ibus_emojier_is_running (IBusEmojier* self); /** * ibus_emojier_get_input_context_path: * @self: An #IBusEmojier * * Returns: an input context path of #IBusInputContext * which is saved in ibus_emojier_run(). */ gchar * ibus_emojier_get_input_context_path (IBusEmojier* self); /** * ibus_emojier_get_selected_string: * @self: An #IBusEmojier * * Returns: an selected emoji character on the emoji dialog. */ gchar * ibus_emojier_get_selected_string (IBusEmojier* self); /** * ibus_emojier_reset: * @self: An #IBusEmojier * * Reset the selected string and input context path. */ void ibus_emojier_reset (IBusEmojier* self); /** * ibus_emojier_present_centralize: * @self: An #IBusEmojier * @event: A #GdkEventKey for timestamp * * Move the window to the toplevel on the screen and centralize it. */ void ibus_emojier_present_centralize (IBusEmojier* self, GdkEvent* event); /** * ibus_emojier_has_loaded_emoji_dict: * * Returns: %TRUE if the emoji dict is loaded, otherwise %FALSE. */ gboolean ibus_emojier_has_loaded_emoji_dict (void); /** * ibus_emojier_set_annotation_lang: * @lang: A langauge id for emoji annotations. * * Set a language id for emoji annotations. #IBusEmojier will load * $PKGDATADIR/dicts/emoji-@lang.dict. The default is "en". */ void ibus_emojier_set_annotation_lang (const gchar* lang); /** * ibus_emojier_set_emoji_font: * @emoji_font: font name for emoji characters * * Set emoji font on the emoji dialog */ void ibus_emojier_set_emoji_font (const gchar* emoji_font); /** * ibus_emojier_set_favorites: * @favorites: (array length=favorites_length): A custom emoji list. * @favorites_length: A length of @favorites * @favorite_annotations: (array length=favorite_annotations_length): * (nullable): * A custom annotation listfor @favorites. * @favorite_annotations_length: A length of @favorite_annotations * * Set custom emojis on the emoji dialog. @favorite_annotations * can be null. If you don't assign an annotation for a specific emoji, * you can pass the annotation as "", e.g. * favorite_annotations = { "", "", "my annotation" }; */ void ibus_emojier_set_favorites (gchar** favorites, int favorites_length, gchar** favorite_annotations, int favorite_annotations_length); /** * ibus_emojier_set_partial_match: * @has_partial_match: Enable the partial match if %TRUE. Otherwise if %FALSE. * * Set partial match for emoji annotations. */ void ibus_emojier_set_partial_match (gboolean has_partial_match); /** * ibus_emojier_set_partial_match_length: * @length: minimum length to match partially. * * Set the minimum length to match partially. */ void ibus_emojier_set_partial_match_length (gint length); /** * ibus_emojier_set_partial_match_condition: * @condition: condition id between 0 and 2. * * Set the partial match condition with the integer. */ void ibus_emojier_set_partial_match_condition (gint condition); /** * ibus_emojier_load_unicode_dict: * * Load the dictionary of #IBusUnicodeData. */ void ibus_emojier_load_unicode_dict (void); G_END_DECLS #endif ibus-1.5.22/ui/gtk3/panelbinding.c0000644000000000000000000032305413623751710013531 00000000000000/* panelbinding.c generated by valac 0.47.91, the Vala compiler * generated from panelbinding.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2018 Peng Huang * Copyright(c) 2018 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 #define TYPE_PREEDIT (preedit_get_type ()) #define PREEDIT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PREEDIT, Preedit)) #define PREEDIT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PREEDIT, PreeditClass)) #define IS_PREEDIT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PREEDIT)) #define IS_PREEDIT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PREEDIT)) #define PREEDIT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PREEDIT, PreeditClass)) typedef struct _Preedit Preedit; typedef struct _PreeditClass PreeditClass; typedef struct _PreeditPrivate PreeditPrivate; enum { PREEDIT_0_PROPERTY, PREEDIT_NUM_PROPERTIES }; static GParamSpec* preedit_properties[PREEDIT_NUM_PROPERTIES]; #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define TYPE_PANEL_BINDING (panel_binding_get_type ()) #define PANEL_BINDING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PANEL_BINDING, PanelBinding)) #define PANEL_BINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PANEL_BINDING, PanelBindingClass)) #define IS_PANEL_BINDING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PANEL_BINDING)) #define IS_PANEL_BINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PANEL_BINDING)) #define PANEL_BINDING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PANEL_BINDING, PanelBindingClass)) typedef struct _PanelBinding PanelBinding; typedef struct _PanelBindingClass PanelBindingClass; typedef struct _PanelBindingPrivate PanelBindingPrivate; #define TYPE_IBUS_EMOJIER (ibus_emojier_get_type ()) #define IBUS_EMOJIER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IBUS_EMOJIER, IBusEmojier)) #define IBUS_EMOJIER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IBUS_EMOJIER, IBusEmojierClass)) #define IS_IBUS_EMOJIER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IBUS_EMOJIER)) #define IS_IBUS_EMOJIER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IBUS_EMOJIER)) #define IBUS_EMOJIER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IBUS_EMOJIER, IBusEmojierClass)) typedef struct _IBusEmojier IBusEmojier; typedef struct _IBusEmojierClass IBusEmojierClass; enum { PANEL_BINDING_0_PROPERTY, PANEL_BINDING_NUM_PROPERTIES }; static GParamSpec* panel_binding_properties[PANEL_BINDING_NUM_PROPERTIES]; #define _g_main_context_unref0(var) ((var == NULL) ? NULL : (var = (g_main_context_unref (var), NULL))) #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 _Preedit { GtkWindow parent_instance; PreeditPrivate * priv; }; struct _PreeditClass { GtkWindowClass parent_class; }; struct _PreeditPrivate { GtkLabel* m_extension_preedit_text; GtkLabel* m_extension_preedit_emoji; IBusText* m_engine_preedit_text; gboolean m_engine_preedit_text_show; guint m_engine_preedit_cursor_pos; gchar* m_prefix; gboolean m_is_shown; }; struct _PanelBinding { IBusPanelService parent_instance; PanelBindingPrivate * priv; }; struct _PanelBindingClass { IBusPanelServiceClass parent_class; }; struct _PanelBindingPrivate { gboolean m_is_wayland; gboolean m_wayland_lookup_table_is_visible; IBusBus* m_bus; GtkApplication* m_application; GSettings* m_settings_panel; GSettings* m_settings_emoji; gchar* m_current_context_path; gchar* m_real_current_context_path; IBusEmojier* m_emojier; guint m_emojier_set_emoji_lang_id; guint m_emojier_focus_commit_text_id; gchar** m_emojier_favorites; gint m_emojier_favorites_length1; gint _m_emojier_favorites_size_; GtkCssProvider* m_css_provider; gboolean m_load_emoji_at_startup; gboolean m_loaded_emoji; gboolean m_load_unicode_at_startup; gboolean m_loaded_unicode; gboolean m_enable_extension; gchar* m_extension_name; Preedit* m_preedit; IBusProcessKeyEventData m_key_event_data; }; static gint Preedit_private_offset; static gpointer preedit_parent_class = NULL; static gint PanelBinding_private_offset; static gpointer panel_binding_parent_class = NULL; GType preedit_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (Preedit, g_object_unref) Preedit* preedit_new (void); Preedit* preedit_construct (GType object_type); void preedit_hide (Preedit* self); void preedit_reset (Preedit* self); gboolean preedit_is_shown (Preedit* self); void preedit_set_emoji (Preedit* self, const gchar* text); void preedit_set_text (Preedit* self, const gchar* text); void preedit_append_text (Preedit* self, const gchar* text); gchar* preedit_get_text (Preedit* self); gchar* preedit_get_emoji (Preedit* self); gboolean preedit_backspace (Preedit* self); static gchar* preedit_get_extension_text (Preedit* self); static void preedit_set_preedit_color (Preedit* self, IBusText* text, guint start_index, guint end_index); IBusText* preedit_get_engine_preedit_text (Preedit* self); void preedit_set_engine_preedit_text (Preedit* self, IBusText* text); void preedit_show_engine_preedit_text (Preedit* self); void preedit_hide_engine_preedit_text (Preedit* self); guint preedit_get_engine_preedit_cursor_pos (Preedit* self); void preedit_set_engine_preedit_cursor_pos (Preedit* self, guint cursor_pos); IBusText* preedit_get_commit_text (Preedit* self); void preedit_set_extension_name (Preedit* self, const gchar* extension_name); static void preedit_finalize (GObject * obj); static GType preedit_get_type_once (void); GType panel_binding_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PanelBinding, g_object_unref) GType ibus_emojier_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojier, g_object_unref) #define PANEL_BINDING_PRELOAD_ENGINES_DELAY_TIME ((guint) 30000) PanelBinding* panel_binding_new (IBusBus* bus, GtkApplication* application); PanelBinding* panel_binding_construct (GType object_type, IBusBus* bus, GtkApplication* application); static void panel_binding_init_settings (PanelBinding* self); static void __lambda25_ (PanelBinding* self, const gchar* key); void binding_common_set_custom_font (GSettings* settings_panel, GSettings* settings_emoji, GtkCssProvider* * css_provider); static void ___lambda25__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda26_ (PanelBinding* self, const gchar* key); static void ___lambda26__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda27_ (PanelBinding* self, const gchar* key); static void panel_binding_set_emoji_hotkey (PanelBinding* self); static void ___lambda27__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda28_ (PanelBinding* self, const gchar* key); static void ___lambda28__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda29_ (PanelBinding* self, const gchar* key); static void ___lambda29__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda30_ (PanelBinding* self, const gchar* key); static void panel_binding_set_emoji_favorites (PanelBinding* self); static void ___lambda30__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda31_ (PanelBinding* self, const gchar* key); static void ___lambda31__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda32_ (PanelBinding* self, const gchar* key); static void panel_binding_set_emoji_lang (PanelBinding* self); static void ___lambda32__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda34_ (PanelBinding* self, const gchar* key); static void panel_binding_set_emoji_partial_match (PanelBinding* self); static void ___lambda34__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda35_ (PanelBinding* self, const gchar* key); static void ___lambda35__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda36_ (PanelBinding* self, const gchar* key); static void ___lambda36__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda37_ (PanelBinding* self, const gchar* key); static void panel_binding_set_load_emoji_at_startup (PanelBinding* self); static void ___lambda37__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void __lambda38_ (PanelBinding* self, const gchar* key); static void panel_binding_set_load_unicode_at_startup (PanelBinding* self); static void ___lambda38__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self); static void panel_binding_parse_accelerator (PanelBinding* self, const gchar* accelerator); static void _vala_array_add8 (IBusProcessKeyEventData* * array, gint* length, gint* size, const IBusProcessKeyEventData* value); static void _vala_array_add9 (IBusProcessKeyEventData* * array, gint* length, gint* size, const IBusProcessKeyEventData* value); static void _vala_array_add10 (IBusProcessKeyEventData* * array, gint* length, gint* size, const IBusProcessKeyEventData* value); static void _vala_array_add11 (IBusProcessKeyEventData* * array, gint* length, gint* size, const IBusProcessKeyEventData* value); void ibus_emojier_set_favorites (gchar** unowned_favorites, gint unowned_favorites_length1, gchar** unowned_favorite_annotations, gint unowned_favorite_annotations_length1); static gboolean __lambda33_ (PanelBinding* self); void ibus_emojier_set_annotation_lang (const gchar* lang); void ibus_emojier_load_unicode_dict (void); static gboolean ___lambda33__gsource_func (gpointer self); void ibus_emojier_set_partial_match (gboolean has_partial_match); void ibus_emojier_set_partial_match_length (gint length); void ibus_emojier_set_partial_match_condition (gint condition); void panel_binding_load_settings (PanelBinding* self); void panel_binding_disconnect_signals (PanelBinding* self); static void panel_binding_commit_text_update_favorites (PanelBinding* self, IBusText* text, gboolean disable_extension); static void _vala_array_add12 (gchar** * array, gint* length, gint* size, gchar* value); static gboolean panel_binding_emojier_focus_commit_real (PanelBinding* self); gchar* ibus_emojier_get_selected_string (IBusEmojier* self); gchar* ibus_emojier_get_input_context_path (IBusEmojier* self); void ibus_emojier_reset (IBusEmojier* self); static void panel_binding_emojier_focus_commit (PanelBinding* self); static gboolean ___lambda39_ (PanelBinding* self); static gboolean ____lambda39__gsource_func (gpointer self); static gboolean panel_binding_key_press_escape (PanelBinding* self); static gboolean panel_binding_is_emoji_lookup_table (PanelBinding* self); gboolean ibus_emojier_key_press_escape (IBusEmojier* self); static void panel_binding_convert_preedit_text (PanelBinding* self); void ibus_emojier_set_annotation (IBusEmojier* self, const gchar* annotation); static void panel_binding_hide_emoji_lookup_table (PanelBinding* self); static gboolean panel_binding_key_press_keyval (PanelBinding* self, guint keyval); static gboolean panel_binding_key_press_enter (PanelBinding* self); gboolean ibus_emojier_key_press_enter (IBusEmojier* self, gboolean need_commit_signal); guint ibus_emojier_get_number_of_candidates (IBusEmojier* self); gchar* ibus_emojier_get_current_candidate (IBusEmojier* self); static gboolean panel_binding_key_press_space (PanelBinding* self); gboolean ibus_emojier_key_press_cursor_horizontal (IBusEmojier* self, guint keyval, guint modifiers); static gboolean panel_binding_key_press_cursor_horizontal (PanelBinding* self, guint keyval, guint modifiers); static gboolean panel_binding_key_press_cursor_vertical (PanelBinding* self, guint keyval, guint modifiers); gboolean ibus_emojier_key_press_cursor_vertical (IBusEmojier* self, guint keyval, guint modifiers); static gboolean panel_binding_key_press_cursor_home_end (PanelBinding* self, guint keyval, guint modifiers); gboolean ibus_emojier_key_press_cursor_home_end (IBusEmojier* self, guint keyval, guint modifiers); static gboolean panel_binding_key_press_control_keyval (PanelBinding* self, guint keyval, guint modifiers); static void panel_binding_hide_wayland_lookup_table (PanelBinding* self); static void panel_binding_show_wayland_lookup_table (PanelBinding* self, IBusText* text); IBusLookupTable* ibus_emojier_get_one_dimension_lookup_table (IBusEmojier* self); static void panel_binding_show_emoji_lookup_table (PanelBinding* self); IBusText* ibus_emojier_get_title_text (IBusEmojier* self); void ibus_emojier_set_input_context_path (IBusEmojier* self, const gchar* input_context_path); static void panel_binding_show_preedit_and_candidate (PanelBinding* self, gboolean show_candidate); static void panel_binding_real_focus_in (IBusPanelService* base, const gchar* input_context_path); static void panel_binding_real_focus_out (IBusPanelService* base, const gchar* input_context_path); static void panel_binding_real_panel_extension_received (IBusPanelService* base, IBusExtensionEvent* event); IBusEmojier* ibus_emojier_new (void); IBusEmojier* ibus_emojier_construct (GType object_type); static void ___lambda40_ (PanelBinding* self, guint i, guint b, guint s); static void panel_binding_candidate_clicked_lookup_table_real (PanelBinding* self, guint index, guint button, guint state, gboolean is_emojier); static void ____lambda40__ibus_emojier_candidate_clicked (IBusEmojier* _sender, guint index, guint button, guint state, gpointer self); static void ___lambda41_ (PanelBinding* self, const gchar* s); static void ____lambda41__ibus_emojier_commit_text (IBusEmojier* _sender, const gchar* text, gpointer self); static void panel_binding_real_set_cursor_location (IBusPanelService* base, gint x, gint y, gint width, gint height); void ibus_emojier_set_cursor_location (IBusEmojier* self, gint x, gint y, gint width, gint height); static void panel_binding_real_update_preedit_text (IBusPanelService* base, IBusText* text, guint cursor_pos, gboolean visible); static void panel_binding_real_show_preedit_text (IBusPanelService* base); static void panel_binding_real_hide_preedit_text (IBusPanelService* base); static gboolean panel_binding_real_process_key_event (IBusPanelService* base, guint keyval, guint keycode, guint state); static void panel_binding_real_commit_text_received (IBusPanelService* base, IBusText* text); static void panel_binding_real_page_up_lookup_table (IBusPanelService* base); static void panel_binding_real_page_down_lookup_table (IBusPanelService* base); static void panel_binding_real_cursor_up_lookup_table (IBusPanelService* base); static void panel_binding_real_cursor_down_lookup_table (IBusPanelService* base); #define IBUS_EMOJIER_BUTTON_CLOSE_BUTTON ((guint) 1000) void ibus_emojier_set_cursor_pos (IBusEmojier* self, guint cursor_pos); gboolean ibus_emojier_has_variants (IBusEmojier* self, guint index, gboolean need_commit_signal); static void panel_binding_real_candidate_clicked_lookup_table (IBusPanelService* base, guint index, guint button, guint state); static void panel_binding_finalize (GObject * obj); static GType panel_binding_get_type_once (void); 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 inline gpointer preedit_get_instance_private (Preedit* self) { return G_STRUCT_MEMBER_P (self, Preedit_private_offset); } Preedit* preedit_construct (GType object_type) { Preedit * self = NULL; GtkLabel* _tmp0_; GtkLabel* _tmp1_; self = (Preedit*) g_object_new (object_type, "name", "IBusPreedit", "type", GTK_WINDOW_POPUP, NULL); _tmp0_ = (GtkLabel*) gtk_label_new (""); g_object_ref_sink (_tmp0_); _g_object_unref0 (self->priv->m_extension_preedit_text); self->priv->m_extension_preedit_text = _tmp0_; _tmp1_ = (GtkLabel*) gtk_label_new (""); g_object_ref_sink (_tmp1_); _g_object_unref0 (self->priv->m_extension_preedit_emoji); self->priv->m_extension_preedit_emoji = _tmp1_; return self; } Preedit* preedit_new (void) { return preedit_construct (TYPE_PREEDIT); } void preedit_hide (Preedit* self) { g_return_if_fail (self != NULL); preedit_reset (self); GTK_WIDGET_CLASS (preedit_parent_class)->hide ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_window_get_type (), GtkWindow)); self->priv->m_is_shown = FALSE; } gboolean preedit_is_shown (Preedit* self) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); result = self->priv->m_is_shown; return result; } void preedit_reset (Preedit* self) { g_return_if_fail (self != NULL); preedit_set_emoji (self, ""); preedit_set_text (self, ""); gtk_window_resize ((GtkWindow*) self, 1, 1); self->priv->m_is_shown = TRUE; } void preedit_append_text (Preedit* self, const gchar* text) { gint _tmp0_; gint _tmp1_; gchar* total = NULL; GtkLabel* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; const gchar* _tmp5_; gchar* _tmp6_; GtkLabel* _tmp7_; const gchar* _tmp8_; g_return_if_fail (self != NULL); g_return_if_fail (text != NULL); _tmp0_ = strlen (text); _tmp1_ = _tmp0_; if (_tmp1_ == 0) { return; } _tmp2_ = self->priv->m_extension_preedit_text; _tmp3_ = gtk_label_get_text (_tmp2_); _tmp4_ = g_strdup (_tmp3_); total = _tmp4_; _tmp5_ = total; _tmp6_ = g_strconcat (_tmp5_, text, NULL); _g_free0 (total); total = _tmp6_; _tmp7_ = self->priv->m_extension_preedit_text; _tmp8_ = total; gtk_label_set_text (_tmp7_, _tmp8_); _g_free0 (total); } gchar* preedit_get_text (Preedit* self) { GtkLabel* _tmp0_; const gchar* _tmp1_; gchar* _tmp2_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_extension_preedit_text; _tmp1_ = gtk_label_get_text (_tmp0_); _tmp2_ = g_strdup (_tmp1_); result = _tmp2_; return result; } void preedit_set_text (Preedit* self, const gchar* text) { GtkLabel* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (text != NULL); _tmp0_ = self->priv->m_extension_preedit_text; gtk_label_set_text (_tmp0_, text); } gchar* preedit_get_emoji (Preedit* self) { GtkLabel* _tmp0_; const gchar* _tmp1_; gchar* _tmp2_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_extension_preedit_emoji; _tmp1_ = gtk_label_get_text (_tmp0_); _tmp2_ = g_strdup (_tmp1_); result = _tmp2_; return result; } void preedit_set_emoji (Preedit* self, const gchar* text) { GtkLabel* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (text != NULL); _tmp0_ = self->priv->m_extension_preedit_emoji; gtk_label_set_text (_tmp0_, text); } static gchar* string_slice (const gchar* self, glong start, glong end) { glong string_length = 0L; gint _tmp0_; gint _tmp1_; gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; gchar* _tmp4_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = strlen (self); _tmp1_ = _tmp0_; string_length = (glong) _tmp1_; if (start < ((glong) 0)) { start = string_length + start; } if (end < ((glong) 0)) { end = string_length + end; } if (start >= ((glong) 0)) { _tmp2_ = start <= string_length; } else { _tmp2_ = FALSE; } g_return_val_if_fail (_tmp2_, NULL); if (end >= ((glong) 0)) { _tmp3_ = end <= string_length; } else { _tmp3_ = FALSE; } g_return_val_if_fail (_tmp3_, NULL); g_return_val_if_fail (start <= end, NULL); _tmp4_ = g_strndup (((gchar*) self) + start, (gsize) (end - start)); result = _tmp4_; return result; } static gint string_index_of_nth_char (const gchar* self, glong c) { gchar* _tmp0_; gint result = 0; g_return_val_if_fail (self != NULL, 0); _tmp0_ = g_utf8_offset_to_pointer (self, c); result = (gint) (_tmp0_ - ((gchar*) self)); return result; } gboolean preedit_backspace (Preedit* self) { gchar* total = NULL; GtkLabel* _tmp0_; const gchar* _tmp1_; gchar* _tmp2_; const gchar* _tmp3_; gint _tmp4_; gint _tmp5_; GtkLabel* _tmp7_; const gchar* _tmp8_; gchar* _tmp9_; gint char_count = 0; const gchar* _tmp10_; const gchar* _tmp11_; const gchar* _tmp12_; gchar* _tmp13_; GtkLabel* _tmp14_; const gchar* _tmp15_; const gchar* _tmp16_; gint _tmp17_; gint _tmp18_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_extension_preedit_emoji; _tmp1_ = gtk_label_get_text (_tmp0_); _tmp2_ = g_strdup (_tmp1_); total = _tmp2_; _tmp3_ = total; _tmp4_ = strlen (_tmp3_); _tmp5_ = _tmp4_; if (_tmp5_ > 0) { GtkLabel* _tmp6_; _tmp6_ = self->priv->m_extension_preedit_emoji; gtk_label_set_text (_tmp6_, ""); gtk_window_resize ((GtkWindow*) self, 1, 1); result = FALSE; _g_free0 (total); return result; } _tmp7_ = self->priv->m_extension_preedit_text; _tmp8_ = gtk_label_get_text (_tmp7_); _tmp9_ = g_strdup (_tmp8_); _g_free0 (total); total = _tmp9_; _tmp10_ = total; char_count = g_utf8_strlen (_tmp10_, (gssize) -1); if (char_count == 0) { result = TRUE; _g_free0 (total); return result; } _tmp11_ = total; _tmp12_ = total; _tmp13_ = string_slice (_tmp11_, (glong) 0, (glong) string_index_of_nth_char (_tmp12_, (glong) (char_count - 1))); _g_free0 (total); total = _tmp13_; gtk_window_resize ((GtkWindow*) self, 1, 1); _tmp14_ = self->priv->m_extension_preedit_text; _tmp15_ = total; gtk_label_set_text (_tmp14_, _tmp15_); _tmp16_ = total; _tmp17_ = strlen (_tmp16_); _tmp18_ = _tmp17_; if (_tmp18_ == 0) { gtk_window_resize ((GtkWindow*) self, 1, 1); } result = TRUE; _g_free0 (total); return result; } static gchar* preedit_get_extension_text (Preedit* self) { gchar* extension_text = NULL; GtkLabel* _tmp0_; const gchar* _tmp1_; gchar* _tmp2_; const gchar* _tmp3_; gint _tmp4_; gint _tmp5_; const gchar* _tmp9_; const gchar* _tmp10_; gchar* _tmp11_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_extension_preedit_emoji; _tmp1_ = gtk_label_get_text (_tmp0_); _tmp2_ = g_strdup (_tmp1_); extension_text = _tmp2_; _tmp3_ = extension_text; _tmp4_ = strlen (_tmp3_); _tmp5_ = _tmp4_; if (_tmp5_ == 0) { GtkLabel* _tmp6_; const gchar* _tmp7_; gchar* _tmp8_; _tmp6_ = self->priv->m_extension_preedit_text; _tmp7_ = gtk_label_get_text (_tmp6_); _tmp8_ = g_strdup (_tmp7_); _g_free0 (extension_text); extension_text = _tmp8_; } _tmp9_ = self->priv->m_prefix; _tmp10_ = extension_text; _tmp11_ = g_strconcat (_tmp9_, _tmp10_, NULL); result = _tmp11_; _g_free0 (extension_text); return result; } static void preedit_set_preedit_color (Preedit* self, IBusText* text, guint start_index, guint end_index) { g_return_if_fail (self != NULL); g_return_if_fail (text != NULL); ibus_text_append_attribute (text, (guint) IBUS_ATTR_TYPE_UNDERLINE, (guint) IBUS_ATTR_UNDERLINE_SINGLE, start_index, (gint) end_index); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } IBusText* preedit_get_engine_preedit_text (Preedit* self) { gchar* extension_text = NULL; gchar* _tmp0_; guint char_count = 0U; const gchar* _tmp1_; IBusText* retval = NULL; gboolean _tmp2_ = FALSE; IBusText* _tmp3_; const gchar* _tmp7_; IBusText* _tmp8_; const gchar* _tmp9_; gchar* _tmp10_; gchar* _tmp11_; IBusText* _tmp12_; IBusText* _tmp13_; IBusAttrList* attrs = NULL; IBusText* _tmp14_; IBusAttrList* _tmp15_; IBusAttrList* _tmp16_; gint i = 0; IBusText* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = preedit_get_extension_text (self); extension_text = _tmp0_; _tmp1_ = extension_text; char_count = (guint) g_utf8_strlen (_tmp1_, (gssize) -1); _tmp3_ = self->priv->m_engine_preedit_text; if (_tmp3_ == NULL) { _tmp2_ = TRUE; } else { _tmp2_ = !self->priv->m_engine_preedit_text_show; } if (_tmp2_) { const gchar* _tmp4_; IBusText* _tmp5_; IBusText* _tmp6_; _tmp4_ = extension_text; _tmp5_ = ibus_text_new_from_string (_tmp4_); g_object_ref_sink (_tmp5_); _g_object_unref0 (retval); retval = _tmp5_; _tmp6_ = retval; preedit_set_preedit_color (self, _tmp6_, (guint) 0, char_count); result = retval; _g_free0 (extension_text); return result; } _tmp7_ = extension_text; _tmp8_ = self->priv->m_engine_preedit_text; _tmp9_ = ibus_text_get_text (_tmp8_); _tmp10_ = g_strconcat (_tmp7_, _tmp9_, NULL); _tmp11_ = _tmp10_; _tmp12_ = ibus_text_new_from_string (_tmp11_); g_object_ref_sink (_tmp12_); _g_object_unref0 (retval); retval = _tmp12_; _g_free0 (_tmp11_); _tmp13_ = retval; preedit_set_preedit_color (self, _tmp13_, (guint) 0, char_count); _tmp14_ = self->priv->m_engine_preedit_text; _tmp15_ = ibus_text_get_attributes (_tmp14_); attrs = _tmp15_; _tmp16_ = attrs; if (_tmp16_ == NULL) { result = retval; _g_free0 (extension_text); return result; } i = 0; while (TRUE) { IBusAttribute* attr = NULL; IBusAttrList* _tmp17_; gint _tmp18_; IBusAttribute* _tmp19_; IBusAttribute* _tmp20_; IBusAttribute* _tmp21_; glong start_index = 0L; IBusAttribute* _tmp22_; glong end_index = 0L; IBusAttribute* _tmp23_; IBusText* _tmp25_; IBusAttribute* _tmp26_; IBusAttribute* _tmp27_; _tmp17_ = attrs; _tmp18_ = i; i = _tmp18_ + 1; _tmp19_ = ibus_attr_list_get (_tmp17_, (guint) _tmp18_); _tmp20_ = _g_object_ref0 (_tmp19_); attr = _tmp20_; _tmp21_ = attr; if (_tmp21_ == NULL) { _g_object_unref0 (attr); break; } _tmp22_ = attr; start_index = (glong) _tmp22_->start_index; _tmp23_ = attr; end_index = (glong) _tmp23_->end_index; if (start_index < ((glong) 0)) { start_index = (glong) 0; } if (end_index < ((glong) 0)) { IBusText* _tmp24_; _tmp24_ = self->priv->m_engine_preedit_text; end_index = (glong) ibus_text_get_length (_tmp24_); } _tmp25_ = retval; _tmp26_ = attr; _tmp27_ = attr; ibus_text_append_attribute (_tmp25_, _tmp26_->type, _tmp27_->value, char_count + ((guint) start_index), ((gint) char_count) + ((gint) end_index)); _g_object_unref0 (attr); } result = retval; _g_free0 (extension_text); return result; } void preedit_set_engine_preedit_text (Preedit* self, IBusText* text) { IBusText* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = _g_object_ref0 (text); _g_object_unref0 (self->priv->m_engine_preedit_text); self->priv->m_engine_preedit_text = _tmp0_; } void preedit_show_engine_preedit_text (Preedit* self) { g_return_if_fail (self != NULL); self->priv->m_engine_preedit_text_show = TRUE; } void preedit_hide_engine_preedit_text (Preedit* self) { g_return_if_fail (self != NULL); self->priv->m_engine_preedit_text_show = FALSE; } guint preedit_get_engine_preedit_cursor_pos (Preedit* self) { gchar* _tmp0_; gchar* _tmp1_; guint _tmp2_; guint result = 0U; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = preedit_get_extension_text (self); _tmp1_ = _tmp0_; _tmp2_ = g_utf8_strlen (_tmp1_, (gssize) -1) + self->priv->m_engine_preedit_cursor_pos; _g_free0 (_tmp1_); result = _tmp2_; return result; } void preedit_set_engine_preedit_cursor_pos (Preedit* self, guint cursor_pos) { g_return_if_fail (self != NULL); self->priv->m_engine_preedit_cursor_pos = cursor_pos; } IBusText* preedit_get_commit_text (Preedit* self) { gchar* extension_text = NULL; GtkLabel* _tmp0_; const gchar* _tmp1_; gchar* _tmp2_; const gchar* _tmp3_; gint _tmp4_; gint _tmp5_; const gchar* _tmp9_; IBusText* _tmp10_; IBusText* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_extension_preedit_emoji; _tmp1_ = gtk_label_get_text (_tmp0_); _tmp2_ = g_strdup (_tmp1_); extension_text = _tmp2_; _tmp3_ = extension_text; _tmp4_ = strlen (_tmp3_); _tmp5_ = _tmp4_; if (_tmp5_ == 0) { GtkLabel* _tmp6_; const gchar* _tmp7_; gchar* _tmp8_; _tmp6_ = self->priv->m_extension_preedit_text; _tmp7_ = gtk_label_get_text (_tmp6_); _tmp8_ = g_strdup (_tmp7_); _g_free0 (extension_text); extension_text = _tmp8_; } _tmp9_ = extension_text; _tmp10_ = ibus_text_new_from_string (_tmp9_); g_object_ref_sink (_tmp10_); result = _tmp10_; _g_free0 (extension_text); return result; } void preedit_set_extension_name (Preedit* self, const gchar* extension_name) { gint _tmp0_; gint _tmp1_; g_return_if_fail (self != NULL); g_return_if_fail (extension_name != NULL); _tmp0_ = strlen (extension_name); _tmp1_ = _tmp0_; if (_tmp1_ == 0) { gchar* _tmp2_; _tmp2_ = g_strdup ("@"); _g_free0 (self->priv->m_prefix); self->priv->m_prefix = _tmp2_; } else { gchar* _tmp3_; _tmp3_ = string_slice (extension_name, (glong) 0, (glong) 1); _g_free0 (self->priv->m_prefix); self->priv->m_prefix = _tmp3_; } } static void preedit_class_init (PreeditClass * klass, gpointer klass_data) { preedit_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &Preedit_private_offset); G_OBJECT_CLASS (klass)->finalize = preedit_finalize; } static void preedit_instance_init (Preedit * self, gpointer klass) { gchar* _tmp0_; self->priv = preedit_get_instance_private (self); _tmp0_ = g_strdup ("@"); self->priv->m_prefix = _tmp0_; self->priv->m_is_shown = TRUE; } static void preedit_finalize (GObject * obj) { Preedit * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PREEDIT, Preedit); _g_object_unref0 (self->priv->m_extension_preedit_text); _g_object_unref0 (self->priv->m_extension_preedit_emoji); _g_object_unref0 (self->priv->m_engine_preedit_text); _g_free0 (self->priv->m_prefix); G_OBJECT_CLASS (preedit_parent_class)->finalize (obj); } static GType preedit_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (PreeditClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) preedit_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Preedit), 0, (GInstanceInitFunc) preedit_instance_init, NULL }; GType preedit_type_id; preedit_type_id = g_type_register_static (gtk_window_get_type (), "Preedit", &g_define_type_info, 0); Preedit_private_offset = g_type_add_instance_private (preedit_type_id, sizeof (PreeditPrivate)); return preedit_type_id; } GType preedit_get_type (void) { static volatile gsize preedit_type_id__volatile = 0; if (g_once_init_enter (&preedit_type_id__volatile)) { GType preedit_type_id; preedit_type_id = preedit_get_type_once (); g_once_init_leave (&preedit_type_id__volatile, preedit_type_id); } return preedit_type_id__volatile; } static inline gpointer panel_binding_get_instance_private (PanelBinding* self) { return G_STRUCT_MEMBER_P (self, PanelBinding_private_offset); } PanelBinding* panel_binding_construct (GType object_type, IBusBus* bus, GtkApplication* application) { PanelBinding * self = NULL; GDBusConnection* _tmp0_; GType instance_type = 0UL; GdkDisplay* _tmp1_; GType wayland_type = 0UL; IBusBus* _tmp2_; GtkApplication* _tmp3_; Preedit* _tmp4_; g_return_val_if_fail (bus != NULL, NULL); g_return_val_if_fail (application != NULL, NULL); _vala_assert (ibus_bus_is_connected (bus), "bus.is_connected()"); _tmp0_ = ibus_bus_get_connection (bus); self = (PanelBinding*) g_object_new (object_type, "connection", _tmp0_, "object-path", IBUS_PATH_PANEL_EXTENSION_EMOJI, NULL); _tmp1_ = gdk_display_get_default (); instance_type = G_TYPE_FROM_INSTANCE ((GObject*) _tmp1_); wayland_type = gdk_wayland_display_get_type (); self->priv->m_is_wayland = g_type_is_a (instance_type, wayland_type); _tmp2_ = _g_object_ref0 (bus); _g_object_unref0 (self->priv->m_bus); self->priv->m_bus = _tmp2_; _tmp3_ = _g_object_ref0 (application); _g_object_unref0 (self->priv->m_application); self->priv->m_application = _tmp3_; panel_binding_init_settings (self); _tmp4_ = preedit_new (); g_object_ref_sink (_tmp4_); _g_object_unref0 (self->priv->m_preedit); self->priv->m_preedit = _tmp4_; return self; } PanelBinding* panel_binding_new (IBusBus* bus, GtkApplication* application) { return panel_binding_construct (TYPE_PANEL_BINDING, bus, application); } static void __lambda25_ (PanelBinding* self, const gchar* key) { GSettings* _tmp0_; GSettings* _tmp1_; g_return_if_fail (key != NULL); _tmp0_ = self->priv->m_settings_panel; _tmp1_ = self->priv->m_settings_emoji; binding_common_set_custom_font (_tmp0_, _tmp1_, &self->priv->m_css_provider); } static void ___lambda25__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda25_ ((PanelBinding*) self, key); } static void __lambda26_ (PanelBinding* self, const gchar* key) { GSettings* _tmp0_; GSettings* _tmp1_; g_return_if_fail (key != NULL); _tmp0_ = self->priv->m_settings_panel; _tmp1_ = self->priv->m_settings_emoji; binding_common_set_custom_font (_tmp0_, _tmp1_, &self->priv->m_css_provider); } static void ___lambda26__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda26_ ((PanelBinding*) self, key); } static void __lambda27_ (PanelBinding* self, const gchar* key) { g_return_if_fail (key != NULL); panel_binding_set_emoji_hotkey (self); } static void ___lambda27__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda27_ ((PanelBinding*) self, key); } static void __lambda28_ (PanelBinding* self, const gchar* key) { GSettings* _tmp0_; GSettings* _tmp1_; g_return_if_fail (key != NULL); _tmp0_ = self->priv->m_settings_panel; _tmp1_ = self->priv->m_settings_emoji; binding_common_set_custom_font (_tmp0_, _tmp1_, &self->priv->m_css_provider); } static void ___lambda28__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda28_ ((PanelBinding*) self, key); } static void __lambda29_ (PanelBinding* self, const gchar* key) { g_return_if_fail (key != NULL); panel_binding_set_emoji_hotkey (self); } static void ___lambda29__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda29_ ((PanelBinding*) self, key); } static void __lambda30_ (PanelBinding* self, const gchar* key) { g_return_if_fail (key != NULL); panel_binding_set_emoji_favorites (self); } static void ___lambda30__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda30_ ((PanelBinding*) self, key); } static void __lambda31_ (PanelBinding* self, const gchar* key) { g_return_if_fail (key != NULL); panel_binding_set_emoji_favorites (self); } static void ___lambda31__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda31_ ((PanelBinding*) self, key); } static void __lambda32_ (PanelBinding* self, const gchar* key) { g_return_if_fail (key != NULL); panel_binding_set_emoji_lang (self); } static void ___lambda32__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda32_ ((PanelBinding*) self, key); } static void __lambda34_ (PanelBinding* self, const gchar* key) { g_return_if_fail (key != NULL); panel_binding_set_emoji_partial_match (self); } static void ___lambda34__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda34_ ((PanelBinding*) self, key); } static void __lambda35_ (PanelBinding* self, const gchar* key) { g_return_if_fail (key != NULL); panel_binding_set_emoji_partial_match (self); } static void ___lambda35__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda35_ ((PanelBinding*) self, key); } static void __lambda36_ (PanelBinding* self, const gchar* key) { g_return_if_fail (key != NULL); panel_binding_set_emoji_partial_match (self); } static void ___lambda36__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda36_ ((PanelBinding*) self, key); } static void __lambda37_ (PanelBinding* self, const gchar* key) { g_return_if_fail (key != NULL); panel_binding_set_load_emoji_at_startup (self); } static void ___lambda37__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda37_ ((PanelBinding*) self, key); } static void __lambda38_ (PanelBinding* self, const gchar* key) { g_return_if_fail (key != NULL); panel_binding_set_load_unicode_at_startup (self); } static void ___lambda38__g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) { __lambda38_ ((PanelBinding*) self, key); } static void panel_binding_init_settings (PanelBinding* self) { GSettings* _tmp0_; GSettings* _tmp1_; GSettings* _tmp2_; GSettings* _tmp3_; GSettings* _tmp4_; GSettings* _tmp5_; GSettings* _tmp6_; GSettings* _tmp7_; GSettings* _tmp8_; GSettings* _tmp9_; GSettings* _tmp10_; GSettings* _tmp11_; GSettings* _tmp12_; GSettings* _tmp13_; GSettings* _tmp14_; g_return_if_fail (self != NULL); _tmp0_ = g_settings_new ("org.freedesktop.ibus.panel"); _g_object_unref0 (self->priv->m_settings_panel); self->priv->m_settings_panel = _tmp0_; _tmp1_ = g_settings_new ("org.freedesktop.ibus.panel.emoji"); _g_object_unref0 (self->priv->m_settings_emoji); self->priv->m_settings_emoji = _tmp1_; _tmp2_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp2_, "changed::custom-font", (GCallback) ___lambda25__g_settings_changed, self, 0); _tmp3_ = self->priv->m_settings_panel; g_signal_connect_object (_tmp3_, "changed::use-custom-font", (GCallback) ___lambda26__g_settings_changed, self, 0); _tmp4_ = self->priv->m_settings_emoji; g_signal_connect_object (_tmp4_, "changed::unicode-hotkey", (GCallback) ___lambda27__g_settings_changed, self, 0); _tmp5_ = self->priv->m_settings_emoji; g_signal_connect_object (_tmp5_, "changed::font", (GCallback) ___lambda28__g_settings_changed, self, 0); _tmp6_ = self->priv->m_settings_emoji; g_signal_connect_object (_tmp6_, "changed::hotkey", (GCallback) ___lambda29__g_settings_changed, self, 0); _tmp7_ = self->priv->m_settings_emoji; g_signal_connect_object (_tmp7_, "changed::favorites", (GCallback) ___lambda30__g_settings_changed, self, 0); _tmp8_ = self->priv->m_settings_emoji; g_signal_connect_object (_tmp8_, "changed::favorite-annotations", (GCallback) ___lambda31__g_settings_changed, self, 0); _tmp9_ = self->priv->m_settings_emoji; g_signal_connect_object (_tmp9_, "changed::lang", (GCallback) ___lambda32__g_settings_changed, self, 0); _tmp10_ = self->priv->m_settings_emoji; g_signal_connect_object (_tmp10_, "changed::has-partial-match", (GCallback) ___lambda34__g_settings_changed, self, 0); _tmp11_ = self->priv->m_settings_emoji; g_signal_connect_object (_tmp11_, "changed::partial-match-length", (GCallback) ___lambda35__g_settings_changed, self, 0); _tmp12_ = self->priv->m_settings_emoji; g_signal_connect_object (_tmp12_, "changed::partial-match-condition", (GCallback) ___lambda36__g_settings_changed, self, 0); _tmp13_ = self->priv->m_settings_emoji; g_signal_connect_object (_tmp13_, "changed::load-emoji-at-startup", (GCallback) ___lambda37__g_settings_changed, self, 0); _tmp14_ = self->priv->m_settings_emoji; g_signal_connect_object (_tmp14_, "changed::load-unicode-at-startup", (GCallback) ___lambda38__g_settings_changed, self, 0); } static void panel_binding_parse_accelerator (PanelBinding* self, const gchar* accelerator) { IBusProcessKeyEventData _tmp0_ = {0}; guint keysym = 0U; IBusModifierType modifiers = 0U; guint _tmp1_ = 0U; IBusModifierType _tmp2_ = 0U; gboolean _tmp3_ = FALSE; IBusModifierType _tmp7_; IBusModifierType _tmp10_; g_return_if_fail (self != NULL); g_return_if_fail (accelerator != NULL); self->priv->m_key_event_data = _tmp0_; keysym = (guint) 0; modifiers = 0; ibus_accelerator_parse (accelerator, &_tmp1_, &_tmp2_); keysym = _tmp1_; modifiers = _tmp2_; if (keysym == 0U) { IBusModifierType _tmp4_; _tmp4_ = modifiers; _tmp3_ = _tmp4_ == 0; } else { _tmp3_ = FALSE; } if (_tmp3_) { gchar* _tmp5_; gchar* _tmp6_; _tmp5_ = g_strdup_printf ("Failed to parse shortcut key '%s'", accelerator); _tmp6_ = _tmp5_; g_warning ("panelbinding.vala:330: %s", _tmp6_); _g_free0 (_tmp6_); return; } _tmp7_ = modifiers; if ((_tmp7_ & IBUS_SUPER_MASK) != 0) { IBusModifierType _tmp8_; IBusModifierType _tmp9_; _tmp8_ = modifiers; modifiers = _tmp8_ ^ IBUS_SUPER_MASK; _tmp9_ = modifiers; modifiers = _tmp9_ | IBUS_MOD4_MASK; } self->priv->m_key_event_data.keyval = keysym; _tmp10_ = modifiers; self->priv->m_key_event_data.state = (guint) _tmp10_; } static void _vala_array_add8 (IBusProcessKeyEventData* * array, gint* length, gint* size, const IBusProcessKeyEventData* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (IBusProcessKeyEventData, *array, *size); } (*array)[(*length)++] = *value; } static void _vala_array_add9 (IBusProcessKeyEventData* * array, gint* length, gint* size, const IBusProcessKeyEventData* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (IBusProcessKeyEventData, *array, *size); } (*array)[(*length)++] = *value; } static void _vala_array_add10 (IBusProcessKeyEventData* * array, gint* length, gint* size, const IBusProcessKeyEventData* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (IBusProcessKeyEventData, *array, *size); } (*array)[(*length)++] = *value; } static void _vala_array_add11 (IBusProcessKeyEventData* * array, gint* length, gint* size, const IBusProcessKeyEventData* value) { if ((*length) == (*size)) { *size = (*size) ? (2 * (*size)) : 4; *array = g_renew (IBusProcessKeyEventData, *array, *size); } (*array)[(*length)++] = *value; } static void panel_binding_set_emoji_hotkey (PanelBinding* self) { IBusProcessKeyEventData* emoji_keys = NULL; IBusProcessKeyEventData* _tmp0_; gint emoji_keys_length1; gint _emoji_keys_size_; IBusProcessKeyEventData key = {0}; gchar** accelerators = NULL; GSettings* _tmp1_; gchar** _tmp2_; gchar** _tmp3_; gint accelerators_length1; gint _accelerators_size_; gchar** _tmp4_; gint _tmp4__length1; IBusProcessKeyEventData _tmp9_ = {0}; IBusProcessKeyEventData* _tmp10_; gint _tmp10__length1; IBusProcessKeyEventData _tmp11_; IBusProcessKeyEventData* unicode_keys = NULL; IBusProcessKeyEventData* _tmp12_; gint unicode_keys_length1; gint _unicode_keys_size_; GSettings* _tmp13_; gchar** _tmp14_; gchar** _tmp15_; gchar** _tmp16_; gint _tmp16__length1; IBusProcessKeyEventData _tmp21_ = {0}; IBusProcessKeyEventData* _tmp22_; gint _tmp22__length1; IBusProcessKeyEventData _tmp23_; IBusProcessKeyEventData* _tmp24_; gint _tmp24__length1; IBusProcessKeyEventData* _tmp25_; gint _tmp25__length1; g_return_if_fail (self != NULL); _tmp0_ = g_new0 (IBusProcessKeyEventData, 0); emoji_keys = _tmp0_; emoji_keys_length1 = 0; _emoji_keys_size_ = emoji_keys_length1; _tmp1_ = self->priv->m_settings_emoji; _tmp3_ = _tmp2_ = g_settings_get_strv (_tmp1_, "hotkey"); accelerators = _tmp3_; accelerators_length1 = _vala_array_length (_tmp2_); _accelerators_size_ = accelerators_length1; _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 < accelerator_collection_length1; accelerator_it = accelerator_it + 1) { gchar* _tmp5_; gchar* accelerator = NULL; _tmp5_ = g_strdup (accelerator_collection[accelerator_it]); accelerator = _tmp5_; { const gchar* _tmp6_; IBusProcessKeyEventData* _tmp7_; gint _tmp7__length1; IBusProcessKeyEventData _tmp8_; _tmp6_ = accelerator; panel_binding_parse_accelerator (self, _tmp6_); _tmp7_ = emoji_keys; _tmp7__length1 = emoji_keys_length1; _tmp8_ = self->priv->m_key_event_data; _vala_array_add8 (&emoji_keys, &emoji_keys_length1, &_emoji_keys_size_, &_tmp8_); _g_free0 (accelerator); } } } key = _tmp9_; _tmp10_ = emoji_keys; _tmp10__length1 = emoji_keys_length1; _tmp11_ = key; _vala_array_add9 (&emoji_keys, &emoji_keys_length1, &_emoji_keys_size_, &_tmp11_); _tmp12_ = g_new0 (IBusProcessKeyEventData, 0); unicode_keys = _tmp12_; unicode_keys_length1 = 0; _unicode_keys_size_ = unicode_keys_length1; _tmp13_ = self->priv->m_settings_emoji; _tmp15_ = _tmp14_ = g_settings_get_strv (_tmp13_, "unicode-hotkey"); accelerators = (_vala_array_free (accelerators, accelerators_length1, (GDestroyNotify) g_free), NULL); accelerators = _tmp15_; accelerators_length1 = _vala_array_length (_tmp14_); _accelerators_size_ = accelerators_length1; _tmp16_ = accelerators; _tmp16__length1 = accelerators_length1; { gchar** accelerator_collection = NULL; gint accelerator_collection_length1 = 0; gint _accelerator_collection_size_ = 0; gint accelerator_it = 0; accelerator_collection = _tmp16_; accelerator_collection_length1 = _tmp16__length1; for (accelerator_it = 0; accelerator_it < accelerator_collection_length1; accelerator_it = accelerator_it + 1) { gchar* _tmp17_; gchar* accelerator = NULL; _tmp17_ = g_strdup (accelerator_collection[accelerator_it]); accelerator = _tmp17_; { const gchar* _tmp18_; IBusProcessKeyEventData* _tmp19_; gint _tmp19__length1; IBusProcessKeyEventData _tmp20_; _tmp18_ = accelerator; panel_binding_parse_accelerator (self, _tmp18_); _tmp19_ = unicode_keys; _tmp19__length1 = unicode_keys_length1; _tmp20_ = self->priv->m_key_event_data; _vala_array_add10 (&unicode_keys, &unicode_keys_length1, &_unicode_keys_size_, &_tmp20_); _g_free0 (accelerator); } } } key = _tmp21_; _tmp22_ = unicode_keys; _tmp22__length1 = unicode_keys_length1; _tmp23_ = key; _vala_array_add11 (&unicode_keys, &unicode_keys_length1, &_unicode_keys_size_, &_tmp23_); _tmp24_ = emoji_keys; _tmp24__length1 = emoji_keys_length1; _tmp25_ = unicode_keys; _tmp25__length1 = unicode_keys_length1; ibus_panel_service_panel_extension_register_keys ((IBusPanelService*) self, "emoji", _tmp24_, "unicode", _tmp25_, NULL); unicode_keys = (g_free (unicode_keys), NULL); accelerators = (_vala_array_free (accelerators, accelerators_length1, (GDestroyNotify) g_free), NULL); emoji_keys = (g_free (emoji_keys), NULL); } static void panel_binding_set_emoji_favorites (PanelBinding* self) { GSettings* _tmp0_; gchar** _tmp1_; gchar** _tmp2_; gchar** _tmp3_; gint _tmp3__length1; GSettings* _tmp4_; gchar** _tmp5_; gchar** _tmp6_; gchar** _tmp7_; gint _tmp7__length1; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_emoji; _tmp2_ = _tmp1_ = g_settings_get_strv (_tmp0_, "favorites"); self->priv->m_emojier_favorites = (_vala_array_free (self->priv->m_emojier_favorites, self->priv->m_emojier_favorites_length1, (GDestroyNotify) g_free), NULL); self->priv->m_emojier_favorites = _tmp2_; self->priv->m_emojier_favorites_length1 = _vala_array_length (_tmp1_); self->priv->_m_emojier_favorites_size_ = self->priv->m_emojier_favorites_length1; _tmp3_ = self->priv->m_emojier_favorites; _tmp3__length1 = self->priv->m_emojier_favorites_length1; _tmp4_ = self->priv->m_settings_emoji; _tmp6_ = _tmp5_ = g_settings_get_strv (_tmp4_, "favorite-annotations"); _tmp7_ = _tmp6_; _tmp7__length1 = _vala_array_length (_tmp5_); ibus_emojier_set_favorites (_tmp3_, (gint) _tmp3__length1, _tmp7_, (gint) _vala_array_length (_tmp5_)); _tmp7_ = (_vala_array_free (_tmp7_, _tmp7__length1, (GDestroyNotify) g_free), NULL); } static gboolean __lambda33_ (PanelBinding* self) { GSettings* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; gboolean _tmp3_ = FALSE; gboolean result = FALSE; _tmp0_ = self->priv->m_settings_emoji; _tmp1_ = g_settings_get_string (_tmp0_, "lang"); _tmp2_ = _tmp1_; ibus_emojier_set_annotation_lang (_tmp2_); _g_free0 (_tmp2_); self->priv->m_emojier_set_emoji_lang_id = (guint) 0; self->priv->m_loaded_emoji = TRUE; if (self->priv->m_load_unicode_at_startup) { _tmp3_ = !self->priv->m_loaded_unicode; } else { _tmp3_ = FALSE; } if (_tmp3_) { ibus_emojier_load_unicode_dict (); self->priv->m_loaded_unicode = TRUE; } result = FALSE; return result; } static gboolean ___lambda33__gsource_func (gpointer self) { gboolean result; result = __lambda33_ ((PanelBinding*) self); return result; } static void panel_binding_set_emoji_lang (PanelBinding* self) { g_return_if_fail (self != NULL); if (self->priv->m_emojier_set_emoji_lang_id > ((guint) 0)) { g_source_remove (self->priv->m_emojier_set_emoji_lang_id); self->priv->m_emojier_set_emoji_lang_id = (guint) 0; } self->priv->m_emojier_set_emoji_lang_id = g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, ___lambda33__gsource_func, g_object_ref (self), g_object_unref); } static void panel_binding_set_emoji_partial_match (PanelBinding* self) { GSettings* _tmp0_; GSettings* _tmp1_; GSettings* _tmp2_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_emoji; ibus_emojier_set_partial_match (g_settings_get_boolean (_tmp0_, "has-partial-match")); _tmp1_ = self->priv->m_settings_emoji; ibus_emojier_set_partial_match_length (g_settings_get_int (_tmp1_, "partial-match-length")); _tmp2_ = self->priv->m_settings_emoji; ibus_emojier_set_partial_match_condition (g_settings_get_int (_tmp2_, "partial-match-condition")); } static void panel_binding_set_load_emoji_at_startup (PanelBinding* self) { GSettings* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_emoji; self->priv->m_load_emoji_at_startup = g_settings_get_boolean (_tmp0_, "load-emoji-at-startup"); } static void panel_binding_set_load_unicode_at_startup (PanelBinding* self) { GSettings* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_settings_emoji; self->priv->m_load_unicode_at_startup = g_settings_get_boolean (_tmp0_, "load-unicode-at-startup"); } void panel_binding_load_settings (PanelBinding* self) { GSettings* _tmp0_; GSettings* _tmp1_; gboolean _tmp2_ = FALSE; g_return_if_fail (self != NULL); panel_binding_set_emoji_hotkey (self); panel_binding_set_load_emoji_at_startup (self); panel_binding_set_load_unicode_at_startup (self); _tmp0_ = self->priv->m_settings_panel; _tmp1_ = self->priv->m_settings_emoji; binding_common_set_custom_font (_tmp0_, _tmp1_, &self->priv->m_css_provider); panel_binding_set_emoji_favorites (self); if (self->priv->m_load_emoji_at_startup) { _tmp2_ = !self->priv->m_loaded_emoji; } else { _tmp2_ = FALSE; } if (_tmp2_) { panel_binding_set_emoji_lang (self); } panel_binding_set_emoji_partial_match (self); } /** * disconnect_signals: * * Call this API before m_panel = null so that the ref_count becomes 0 */ void panel_binding_disconnect_signals (PanelBinding* self) { IBusEmojier* _tmp0_; g_return_if_fail (self != NULL); if (self->priv->m_emojier_set_emoji_lang_id > ((guint) 0)) { g_source_remove (self->priv->m_emojier_set_emoji_lang_id); self->priv->m_emojier_set_emoji_lang_id = (guint) 0; } _tmp0_ = self->priv->m_emojier; if (_tmp0_ != NULL) { GtkApplication* _tmp1_; IBusEmojier* _tmp2_; _tmp1_ = self->priv->m_application; _tmp2_ = self->priv->m_emojier; gtk_application_remove_window (_tmp1_, (GtkWindow*) _tmp2_); _g_object_unref0 (self->priv->m_emojier); self->priv->m_emojier = NULL; } _g_object_unref0 (self->priv->m_application); self->priv->m_application = NULL; } static void _vala_array_add12 (gchar** * array, gint* length, gint* 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_binding_commit_text_update_favorites (PanelBinding* self, IBusText* text, gboolean disable_extension) { gchar* committed_string = NULL; const gchar* _tmp4_; gchar* _tmp5_; gchar* preedit_string = NULL; Preedit* _tmp6_; gchar* _tmp7_; Preedit* _tmp8_; const gchar* _tmp9_; const gchar* _tmp10_; gboolean has_favorite = FALSE; gchar** _tmp11_; gint _tmp11__length1; g_return_if_fail (self != NULL); g_return_if_fail (text != NULL); ibus_panel_service_commit_text ((IBusPanelService*) self, text); if (disable_extension) { IBusExtensionEvent* event = NULL; const gchar* _tmp0_; IBusExtensionEvent* _tmp1_; IBusExtensionEvent* _tmp2_; IBusExtensionEvent* _tmp3_; _tmp0_ = self->priv->m_extension_name; _tmp1_ = ibus_extension_event_new ("name", _tmp0_, "is-enabled", FALSE, "is-extension", TRUE, NULL); g_object_ref_sink (_tmp1_); event = _tmp1_; _tmp2_ = event; _tmp3_ = _g_object_ref0 (_tmp2_); ibus_panel_service_panel_extension ((IBusPanelService*) self, _tmp3_); _g_object_unref0 (event); } _tmp4_ = text->text; _tmp5_ = g_strdup (_tmp4_); committed_string = _tmp5_; _tmp6_ = self->priv->m_preedit; _tmp7_ = preedit_get_text (_tmp6_); preedit_string = _tmp7_; _tmp8_ = self->priv->m_preedit; preedit_hide (_tmp8_); _tmp9_ = preedit_string; _tmp10_ = committed_string; if (g_strcmp0 (_tmp9_, _tmp10_) == 0) { _g_free0 (preedit_string); _g_free0 (committed_string); return; } has_favorite = FALSE; _tmp11_ = self->priv->m_emojier_favorites; _tmp11__length1 = self->priv->m_emojier_favorites_length1; { gchar** favorite_collection = NULL; gint favorite_collection_length1 = 0; gint _favorite_collection_size_ = 0; gint favorite_it = 0; favorite_collection = _tmp11_; favorite_collection_length1 = _tmp11__length1; for (favorite_it = 0; favorite_it < favorite_collection_length1; favorite_it = favorite_it + 1) { const gchar* favorite = NULL; favorite = favorite_collection[favorite_it]; { const gchar* _tmp12_; const gchar* _tmp13_; _tmp12_ = favorite; _tmp13_ = committed_string; if (g_strcmp0 (_tmp12_, _tmp13_) == 0) { has_favorite = TRUE; break; } } } } if (!has_favorite) { gchar** _tmp14_; gint _tmp14__length1; const gchar* _tmp15_; gchar* _tmp16_; GSettings* _tmp17_; gchar** _tmp18_; gint _tmp18__length1; _tmp14_ = self->priv->m_emojier_favorites; _tmp14__length1 = self->priv->m_emojier_favorites_length1; _tmp15_ = committed_string; _tmp16_ = g_strdup (_tmp15_); _vala_array_add12 (&self->priv->m_emojier_favorites, &self->priv->m_emojier_favorites_length1, &self->priv->_m_emojier_favorites_size_, _tmp16_); _tmp17_ = self->priv->m_settings_emoji; _tmp18_ = self->priv->m_emojier_favorites; _tmp18__length1 = self->priv->m_emojier_favorites_length1; g_settings_set_strv (_tmp17_, "favorites", _tmp18_); } _g_free0 (preedit_string); _g_free0 (committed_string); } static gboolean panel_binding_emojier_focus_commit_real (PanelBinding* self) { IBusEmojier* _tmp0_; gchar* selected_string = NULL; IBusEmojier* _tmp1_; gchar* _tmp2_; gchar* prev_context_path = NULL; IBusEmojier* _tmp3_; gchar* _tmp4_; gboolean _tmp5_ = FALSE; gboolean _tmp6_ = FALSE; const gchar* _tmp7_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_emojier; if (_tmp0_ == NULL) { result = TRUE; return result; } _tmp1_ = self->priv->m_emojier; _tmp2_ = ibus_emojier_get_selected_string (_tmp1_); selected_string = _tmp2_; _tmp3_ = self->priv->m_emojier; _tmp4_ = ibus_emojier_get_input_context_path (_tmp3_); prev_context_path = _tmp4_; _tmp7_ = selected_string; if (_tmp7_ != NULL) { const gchar* _tmp8_; _tmp8_ = prev_context_path; _tmp6_ = g_strcmp0 (_tmp8_, "") != 0; } else { _tmp6_ = FALSE; } if (_tmp6_) { const gchar* _tmp9_; const gchar* _tmp10_; _tmp9_ = prev_context_path; _tmp10_ = self->priv->m_current_context_path; _tmp5_ = g_strcmp0 (_tmp9_, _tmp10_) == 0; } else { _tmp5_ = FALSE; } if (_tmp5_) { IBusText* text = NULL; const gchar* _tmp11_; IBusText* _tmp12_; IBusText* _tmp13_; IBusEmojier* _tmp14_; _tmp11_ = selected_string; _tmp12_ = ibus_text_new_from_string (_tmp11_); g_object_ref_sink (_tmp12_); text = _tmp12_; _tmp13_ = text; panel_binding_commit_text_update_favorites (self, _tmp13_, FALSE); _tmp14_ = self->priv->m_emojier; ibus_emojier_reset (_tmp14_); result = TRUE; _g_object_unref0 (text); _g_free0 (prev_context_path); _g_free0 (selected_string); return result; } result = FALSE; _g_free0 (prev_context_path); _g_free0 (selected_string); return result; } static gpointer _g_main_context_ref0 (gpointer self) { return self ? g_main_context_ref (self) : NULL; } static gboolean ___lambda39_ (PanelBinding* self) { gboolean result = FALSE; panel_binding_emojier_focus_commit_real (self); self->priv->m_emojier_focus_commit_text_id = (guint) -1; result = FALSE; return result; } static gboolean ____lambda39__gsource_func (gpointer self) { gboolean result; result = ___lambda39_ ((PanelBinding*) self); return result; } static void panel_binding_emojier_focus_commit (PanelBinding* self) { IBusEmojier* _tmp0_; gchar* selected_string = NULL; IBusEmojier* _tmp1_; gchar* _tmp2_; gchar* prev_context_path = NULL; IBusEmojier* _tmp3_; gchar* _tmp4_; gboolean _tmp5_ = FALSE; const gchar* _tmp6_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_emojier; if (_tmp0_ == NULL) { return; } _tmp1_ = self->priv->m_emojier; _tmp2_ = ibus_emojier_get_selected_string (_tmp1_); selected_string = _tmp2_; _tmp3_ = self->priv->m_emojier; _tmp4_ = ibus_emojier_get_input_context_path (_tmp3_); prev_context_path = _tmp4_; _tmp6_ = selected_string; if (_tmp6_ == NULL) { const gchar* _tmp7_; _tmp7_ = prev_context_path; _tmp5_ = g_strcmp0 (_tmp7_, "") != 0; } else { _tmp5_ = FALSE; } if (_tmp5_) { GMainContext* context = NULL; GMainContext* _tmp8_; GMainContext* _tmp9_; gboolean _tmp10_ = FALSE; _tmp8_ = g_main_context_default (); _tmp9_ = _g_main_context_ref0 (_tmp8_); context = _tmp9_; if (self->priv->m_emojier_focus_commit_text_id > ((guint) 0)) { GMainContext* _tmp11_; GSource* _tmp12_; _tmp11_ = context; _tmp12_ = g_main_context_find_source_by_id (_tmp11_, self->priv->m_emojier_focus_commit_text_id); _tmp10_ = _tmp12_ != NULL; } else { _tmp10_ = FALSE; } if (_tmp10_) { g_source_remove (self->priv->m_emojier_focus_commit_text_id); } self->priv->m_emojier_focus_commit_text_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ____lambda39__gsource_func, g_object_ref (self), g_object_unref); _g_main_context_unref0 (context); } else { if (panel_binding_emojier_focus_commit_real (self)) { GMainContext* context = NULL; GMainContext* _tmp13_; GMainContext* _tmp14_; gboolean _tmp15_ = FALSE; _tmp13_ = g_main_context_default (); _tmp14_ = _g_main_context_ref0 (_tmp13_); context = _tmp14_; if (self->priv->m_emojier_focus_commit_text_id > ((guint) 0)) { GMainContext* _tmp16_; GSource* _tmp17_; _tmp16_ = context; _tmp17_ = g_main_context_find_source_by_id (_tmp16_, self->priv->m_emojier_focus_commit_text_id); _tmp15_ = _tmp17_ != NULL; } else { _tmp15_ = FALSE; } if (_tmp15_) { g_source_remove (self->priv->m_emojier_focus_commit_text_id); } self->priv->m_emojier_focus_commit_text_id = (guint) -1; _g_main_context_unref0 (context); } } _g_free0 (prev_context_path); _g_free0 (selected_string); } static gboolean panel_binding_key_press_escape (PanelBinding* self) { Preedit* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; gboolean _tmp4_; Preedit* _tmp10_; IBusExtensionEvent* event = NULL; const gchar* _tmp11_; IBusExtensionEvent* _tmp12_; IBusExtensionEvent* _tmp13_; IBusExtensionEvent* _tmp14_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (panel_binding_is_emoji_lookup_table (self)) { gboolean show_candidate = FALSE; IBusEmojier* _tmp0_; _tmp0_ = self->priv->m_emojier; show_candidate = ibus_emojier_key_press_escape (_tmp0_); panel_binding_convert_preedit_text (self); result = show_candidate; return result; } _tmp1_ = self->priv->m_preedit; _tmp2_ = preedit_get_emoji (_tmp1_); _tmp3_ = _tmp2_; _tmp4_ = g_strcmp0 (_tmp3_, "") != 0; _g_free0 (_tmp3_); if (_tmp4_) { Preedit* _tmp5_; gchar* annotation = NULL; Preedit* _tmp6_; gchar* _tmp7_; IBusEmojier* _tmp8_; const gchar* _tmp9_; _tmp5_ = self->priv->m_preedit; preedit_set_emoji (_tmp5_, ""); _tmp6_ = self->priv->m_preedit; _tmp7_ = preedit_get_text (_tmp6_); annotation = _tmp7_; _tmp8_ = self->priv->m_emojier; _tmp9_ = annotation; ibus_emojier_set_annotation (_tmp8_, _tmp9_); result = FALSE; _g_free0 (annotation); return result; } self->priv->m_enable_extension = FALSE; panel_binding_hide_emoji_lookup_table (self); _tmp10_ = self->priv->m_preedit; preedit_hide (_tmp10_); _tmp11_ = self->priv->m_extension_name; _tmp12_ = ibus_extension_event_new ("name", _tmp11_, "is-enabled", FALSE, "is-extension", TRUE, NULL); g_object_ref_sink (_tmp12_); event = _tmp12_; _tmp13_ = event; _tmp14_ = _g_object_ref0 (_tmp13_); ibus_panel_service_panel_extension ((IBusPanelService*) self, _tmp14_); result = FALSE; _g_object_unref0 (event); return result; } static gchar* g_unichar_to_string (gunichar self) { gchar* str = NULL; gchar* _tmp0_; gchar* result = NULL; _tmp0_ = g_new0 (gchar, 7); str = (gchar*) _tmp0_; g_unichar_to_utf8 (self, str); result = str; return result; } static gboolean panel_binding_key_press_keyval (PanelBinding* self, guint keyval) { gunichar ch = 0U; gchar* str = NULL; gchar* _tmp0_; Preedit* _tmp1_; const gchar* _tmp2_; gchar* annotation = NULL; Preedit* _tmp3_; gchar* _tmp4_; IBusEmojier* _tmp5_; const gchar* _tmp6_; Preedit* _tmp7_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); ch = ibus_keyval_to_unicode (keyval); if (g_unichar_iscntrl (ch)) { result = FALSE; return result; } _tmp0_ = g_unichar_to_string (ch); str = _tmp0_; _tmp1_ = self->priv->m_preedit; _tmp2_ = str; preedit_append_text (_tmp1_, _tmp2_); _tmp3_ = self->priv->m_preedit; _tmp4_ = preedit_get_text (_tmp3_); annotation = _tmp4_; _tmp5_ = self->priv->m_emojier; _tmp6_ = annotation; ibus_emojier_set_annotation (_tmp5_, _tmp6_); _tmp7_ = self->priv->m_preedit; preedit_set_emoji (_tmp7_, ""); result = TRUE; _g_free0 (annotation); _g_free0 (str); return result; } static gboolean panel_binding_key_press_enter (PanelBinding* self) { gboolean _tmp0_ = FALSE; const gchar* _tmp1_; IBusText* text = NULL; Preedit* _tmp3_; IBusText* _tmp4_; IBusText* _tmp5_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp1_ = self->priv->m_extension_name; if (g_strcmp0 (_tmp1_, "unicode") != 0) { _tmp0_ = panel_binding_is_emoji_lookup_table (self); } else { _tmp0_ = FALSE; } if (_tmp0_) { IBusEmojier* _tmp2_; _tmp2_ = self->priv->m_emojier; if (ibus_emojier_key_press_enter (_tmp2_, FALSE)) { panel_binding_convert_preedit_text (self); result = TRUE; return result; } } _tmp3_ = self->priv->m_preedit; _tmp4_ = preedit_get_commit_text (_tmp3_); text = _tmp4_; _tmp5_ = text; panel_binding_commit_text_update_favorites (self, _tmp5_, TRUE); result = FALSE; _g_object_unref0 (text); return result; } static void panel_binding_convert_preedit_text (PanelBinding* self) { IBusEmojier* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_emojier; if (ibus_emojier_get_number_of_candidates (_tmp0_) > ((guint) 0)) { Preedit* _tmp1_; IBusEmojier* _tmp2_; gchar* _tmp3_; gchar* _tmp4_; _tmp1_ = self->priv->m_preedit; _tmp2_ = self->priv->m_emojier; _tmp3_ = ibus_emojier_get_current_candidate (_tmp2_); _tmp4_ = _tmp3_; preedit_set_emoji (_tmp1_, _tmp4_); _g_free0 (_tmp4_); } else { Preedit* _tmp5_; _tmp5_ = self->priv->m_preedit; preedit_set_emoji (_tmp5_, ""); } } static gboolean panel_binding_key_press_space (PanelBinding* self) { gboolean show_candidate = FALSE; Preedit* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; gboolean _tmp3_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); show_candidate = FALSE; _tmp0_ = self->priv->m_preedit; _tmp1_ = preedit_get_emoji (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = g_strcmp0 (_tmp2_, "") != 0; _g_free0 (_tmp2_); if (_tmp3_) { IBusEmojier* _tmp4_; _tmp4_ = self->priv->m_emojier; ibus_emojier_key_press_cursor_horizontal (_tmp4_, GDK_KEY_Right, (guint) 0); show_candidate = TRUE; } else { gchar* annotation = NULL; Preedit* _tmp5_; gchar* _tmp6_; const gchar* _tmp7_; gint _tmp8_; gint _tmp9_; _tmp5_ = self->priv->m_preedit; _tmp6_ = preedit_get_text (_tmp5_); annotation = _tmp6_; _tmp7_ = annotation; _tmp8_ = strlen (_tmp7_); _tmp9_ = _tmp8_; if (_tmp9_ == 0) { show_candidate = TRUE; if (panel_binding_is_emoji_lookup_table (self)) { IBusEmojier* _tmp10_; _tmp10_ = self->priv->m_emojier; ibus_emojier_key_press_cursor_horizontal (_tmp10_, GDK_KEY_Right, (guint) 0); } } else { IBusEmojier* _tmp11_; const gchar* _tmp12_; _tmp11_ = self->priv->m_emojier; _tmp12_ = annotation; ibus_emojier_set_annotation (_tmp11_, _tmp12_); } _g_free0 (annotation); } panel_binding_convert_preedit_text (self); result = show_candidate; return result; } static gboolean panel_binding_key_press_cursor_horizontal (PanelBinding* self, guint keyval, guint modifiers) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (panel_binding_is_emoji_lookup_table (self)) { IBusEmojier* _tmp0_; _tmp0_ = self->priv->m_emojier; ibus_emojier_key_press_cursor_horizontal (_tmp0_, keyval, modifiers); panel_binding_convert_preedit_text (self); result = TRUE; return result; } result = FALSE; return result; } static gboolean panel_binding_key_press_cursor_vertical (PanelBinding* self, guint keyval, guint modifiers) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (panel_binding_is_emoji_lookup_table (self)) { IBusEmojier* _tmp0_; _tmp0_ = self->priv->m_emojier; ibus_emojier_key_press_cursor_vertical (_tmp0_, keyval, modifiers); panel_binding_convert_preedit_text (self); result = TRUE; return result; } result = FALSE; return result; } static gboolean panel_binding_key_press_cursor_home_end (PanelBinding* self, guint keyval, guint modifiers) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (panel_binding_is_emoji_lookup_table (self)) { IBusEmojier* _tmp0_; _tmp0_ = self->priv->m_emojier; ibus_emojier_key_press_cursor_home_end (_tmp0_, keyval, modifiers); panel_binding_convert_preedit_text (self); result = TRUE; return result; } result = FALSE; return result; } static gboolean panel_binding_key_press_control_keyval (PanelBinding* self, guint keyval, guint modifiers) { gboolean show_candidate = FALSE; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); show_candidate = FALSE; switch (keyval) { case GDK_KEY_f: { show_candidate = panel_binding_key_press_cursor_horizontal (self, GDK_KEY_Right, modifiers); break; } case GDK_KEY_b: { show_candidate = panel_binding_key_press_cursor_horizontal (self, GDK_KEY_Left, modifiers); break; } case GDK_KEY_n: case GDK_KEY_N: { show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Down, modifiers); break; } case GDK_KEY_p: case GDK_KEY_P: { show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Up, modifiers); break; } case GDK_KEY_h: { show_candidate = panel_binding_key_press_cursor_home_end (self, GDK_KEY_Home, modifiers); break; } case GDK_KEY_e: { show_candidate = panel_binding_key_press_cursor_home_end (self, GDK_KEY_End, modifiers); break; } case GDK_KEY_u: { Preedit* _tmp0_; IBusEmojier* _tmp1_; _tmp0_ = self->priv->m_preedit; preedit_reset (_tmp0_); _tmp1_ = self->priv->m_emojier; ibus_emojier_set_annotation (_tmp1_, ""); panel_binding_hide_emoji_lookup_table (self); break; } case GDK_KEY_C: case GDK_KEY_c: { if ((modifiers & GDK_SHIFT_MASK) != ((guint) 0)) { gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; if (!self->priv->m_is_wayland) { IBusEmojier* _tmp4_; _tmp4_ = self->priv->m_emojier; _tmp3_ = _tmp4_ != NULL; } else { _tmp3_ = FALSE; } if (_tmp3_) { IBusEmojier* _tmp5_; _tmp5_ = self->priv->m_emojier; _tmp2_ = ibus_emojier_get_number_of_candidates (_tmp5_) > ((guint) 0); } else { _tmp2_ = FALSE; } if (_tmp2_) { gchar* text = NULL; IBusEmojier* _tmp6_; gchar* _tmp7_; GtkClipboard* clipboard = NULL; GtkClipboard* _tmp8_; GtkClipboard* _tmp9_; GtkClipboard* _tmp10_; const gchar* _tmp11_; GtkClipboard* _tmp12_; _tmp6_ = self->priv->m_emojier; _tmp7_ = ibus_emojier_get_current_candidate (_tmp6_); text = _tmp7_; _tmp8_ = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); _tmp9_ = _g_object_ref0 (_tmp8_); clipboard = _tmp9_; _tmp10_ = clipboard; _tmp11_ = text; gtk_clipboard_set_text (_tmp10_, _tmp11_, -1); _tmp12_ = clipboard; gtk_clipboard_store (_tmp12_); _g_object_unref0 (clipboard); _g_free0 (text); } show_candidate = panel_binding_is_emoji_lookup_table (self); } break; } default: { show_candidate = panel_binding_is_emoji_lookup_table (self); break; } } result = show_candidate; return result; } static void panel_binding_hide_wayland_lookup_table (PanelBinding* self) { IBusText* text = NULL; IBusText* _tmp0_; IBusLookupTable* _tmp1_; IBusLookupTable* _tmp2_; g_return_if_fail (self != NULL); self->priv->m_wayland_lookup_table_is_visible = FALSE; _tmp0_ = ibus_text_new_from_string (""); g_object_ref_sink (_tmp0_); text = _tmp0_; ibus_panel_service_update_auxiliary_text_received ((IBusPanelService*) self, text, FALSE); _tmp1_ = ibus_lookup_table_new ((guint) 1, (guint) 0, FALSE, TRUE); g_object_ref_sink (_tmp1_); _tmp2_ = _tmp1_; ibus_panel_service_update_lookup_table_received ((IBusPanelService*) self, _tmp2_, FALSE); _g_object_unref0 (_tmp2_); _g_object_unref0 (text); } static void panel_binding_show_wayland_lookup_table (PanelBinding* self, IBusText* text) { IBusLookupTable* table = NULL; IBusEmojier* _tmp0_; IBusLookupTable* _tmp1_; guint ncandidates = 0U; IBusLookupTable* _tmp2_; gboolean _tmp3_ = FALSE; gboolean _tmp4_ = FALSE; IBusLookupTable* _tmp5_; g_return_if_fail (self != NULL); g_return_if_fail (text != NULL); self->priv->m_wayland_lookup_table_is_visible = TRUE; _tmp0_ = self->priv->m_emojier; _tmp1_ = ibus_emojier_get_one_dimension_lookup_table (_tmp0_); table = _tmp1_; _tmp2_ = table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp2_); if (ncandidates > ((guint) 0)) { _tmp3_ = TRUE; } else { _tmp3_ = FALSE; } ibus_panel_service_update_auxiliary_text_received ((IBusPanelService*) self, text, _tmp3_); if (ncandidates > ((guint) 0)) { _tmp4_ = TRUE; } else { _tmp4_ = FALSE; } _tmp5_ = table; ibus_panel_service_update_lookup_table_received ((IBusPanelService*) self, _tmp5_, _tmp4_); _g_object_unref0 (table); } static void panel_binding_hide_emoji_lookup_table (PanelBinding* self) { IBusEmojier* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_emojier; if (_tmp0_ == NULL) { return; } if (self->priv->m_wayland_lookup_table_is_visible) { panel_binding_hide_wayland_lookup_table (self); } else { IBusEmojier* _tmp1_; _tmp1_ = self->priv->m_emojier; gtk_widget_hide ((GtkWidget*) _tmp1_); } } static void panel_binding_show_emoji_lookup_table (PanelBinding* self) { gboolean _tmp0_ = FALSE; g_return_if_fail (self != NULL); if (self->priv->m_is_wayland) { Preedit* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; _tmp1_ = self->priv->m_preedit; _tmp2_ = preedit_get_text (_tmp1_); _tmp3_ = _tmp2_; _tmp0_ = g_strcmp0 (_tmp3_, "") != 0; _g_free0 (_tmp3_); } else { _tmp0_ = FALSE; } if (_tmp0_) { IBusText* text = NULL; IBusEmojier* _tmp4_; IBusText* _tmp5_; IBusText* _tmp6_; _tmp4_ = self->priv->m_emojier; _tmp5_ = ibus_emojier_get_title_text (_tmp4_); text = _tmp5_; _tmp6_ = text; panel_binding_show_wayland_lookup_table (self, _tmp6_); _g_object_unref0 (text); } else { IBusEmojier* _tmp9_; if (self->priv->m_is_wayland) { IBusEmojier* _tmp7_; const gchar* _tmp8_; _tmp7_ = self->priv->m_emojier; _tmp8_ = self->priv->m_real_current_context_path; ibus_emojier_set_input_context_path (_tmp7_, _tmp8_); } _tmp9_ = self->priv->m_emojier; gtk_widget_show_all ((GtkWidget*) _tmp9_); } } static gboolean panel_binding_is_emoji_lookup_table (PanelBinding* self) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (self->priv->m_is_wayland) { result = self->priv->m_wayland_lookup_table_is_visible; return result; } else { IBusEmojier* _tmp0_; _tmp0_ = self->priv->m_emojier; result = gtk_widget_get_visible ((GtkWidget*) _tmp0_); return result; } } static void panel_binding_show_preedit_and_candidate (PanelBinding* self, gboolean show_candidate) { guint cursor_pos = 0U; Preedit* _tmp1_; IBusText* _tmp2_; IBusText* _tmp3_; IBusEmojier* _tmp4_; g_return_if_fail (self != NULL); cursor_pos = (guint) 0; if (!show_candidate) { Preedit* _tmp0_; _tmp0_ = self->priv->m_preedit; cursor_pos = preedit_get_engine_preedit_cursor_pos (_tmp0_); } _tmp1_ = self->priv->m_preedit; _tmp2_ = preedit_get_engine_preedit_text (_tmp1_); _tmp3_ = _tmp2_; ibus_panel_service_update_preedit_text_received ((IBusPanelService*) self, _tmp3_, cursor_pos, TRUE); _g_object_unref0 (_tmp3_); if (!show_candidate) { panel_binding_hide_emoji_lookup_table (self); return; } _tmp4_ = self->priv->m_emojier; if (_tmp4_ == NULL) { return; } panel_binding_show_emoji_lookup_table (self); } static void panel_binding_real_focus_in (IBusPanelService* base, const gchar* input_context_path) { PanelBinding * self; gchar* _tmp0_; self = (PanelBinding*) base; g_return_if_fail (input_context_path != NULL); _tmp0_ = g_strdup (input_context_path); _g_free0 (self->priv->m_current_context_path); self->priv->m_current_context_path = _tmp0_; if (!g_str_has_suffix (input_context_path, "InputContext_1")) { const gchar* _tmp1_; gchar* _tmp2_; _tmp1_ = self->priv->m_current_context_path; _tmp2_ = g_strdup (_tmp1_); _g_free0 (self->priv->m_real_current_context_path); self->priv->m_real_current_context_path = _tmp2_; if (self->priv->m_is_wayland) { panel_binding_emojier_focus_commit (self); } } } static void panel_binding_real_focus_out (IBusPanelService* base, const gchar* input_context_path) { PanelBinding * self; gchar* _tmp0_; self = (PanelBinding*) base; g_return_if_fail (input_context_path != NULL); _tmp0_ = g_strdup (""); _g_free0 (self->priv->m_current_context_path); self->priv->m_current_context_path = _tmp0_; } static void ___lambda40_ (PanelBinding* self, guint i, guint b, guint s) { panel_binding_candidate_clicked_lookup_table_real (self, i, b, s, TRUE); } static void ____lambda40__ibus_emojier_candidate_clicked (IBusEmojier* _sender, guint index, guint button, guint state, gpointer self) { ___lambda40_ ((PanelBinding*) self, index, button, state); } static void ___lambda41_ (PanelBinding* self, const gchar* s) { IBusExtensionEvent* close_event = NULL; const gchar* _tmp0_; IBusExtensionEvent* _tmp1_; IBusExtensionEvent* _tmp2_; IBusExtensionEvent* _tmp3_; g_return_if_fail (s != NULL); if (!self->priv->m_is_wayland) { return; } _tmp0_ = self->priv->m_extension_name; _tmp1_ = ibus_extension_event_new ("name", _tmp0_, "is-enabled", FALSE, "is-extension", TRUE, NULL); g_object_ref_sink (_tmp1_); close_event = _tmp1_; _tmp2_ = close_event; _tmp3_ = _g_object_ref0 (_tmp2_); ibus_panel_service_panel_extension ((IBusPanelService*) self, _tmp3_); _g_object_unref0 (close_event); } static void ____lambda41__ibus_emojier_commit_text (IBusEmojier* _sender, const gchar* text, gpointer self) { ___lambda41_ ((PanelBinding*) self, text); } static void panel_binding_real_panel_extension_received (IBusPanelService* base, IBusExtensionEvent* event) { PanelBinding * self; const gchar* _tmp0_; gchar* _tmp1_; gboolean _tmp2_ = FALSE; const gchar* _tmp3_; gboolean _tmp11_; gboolean _tmp12_; gboolean _tmp13_ = FALSE; IBusEmojier* _tmp14_; IBusEmojier* _tmp20_; IBusEmojier* _tmp21_; Preedit* _tmp22_; const gchar* _tmp23_; Preedit* _tmp24_; Preedit* _tmp25_; IBusText* _tmp26_; IBusText* _tmp27_; Preedit* _tmp28_; gchar* params = NULL; const gchar* _tmp29_; gchar* _tmp30_; const gchar* _tmp31_; self = (PanelBinding*) base; g_return_if_fail (event != NULL); _tmp0_ = ibus_extension_event_get_name (event); _tmp1_ = g_strdup (_tmp0_); _g_free0 (self->priv->m_extension_name); self->priv->m_extension_name = _tmp1_; _tmp3_ = self->priv->m_extension_name; if (g_strcmp0 (_tmp3_, "emoji") != 0) { const gchar* _tmp4_; _tmp4_ = self->priv->m_extension_name; _tmp2_ = g_strcmp0 (_tmp4_, "unicode") != 0; } else { _tmp2_ = FALSE; } if (_tmp2_) { gchar* format = NULL; gchar* _tmp5_; const gchar* _tmp6_; const gchar* _tmp7_; gchar* _tmp8_; gchar* _tmp9_; gchar* _tmp10_; _tmp5_ = g_strdup ("The name %s is not implemented in PanelExtension"); format = _tmp5_; _tmp6_ = format; _tmp7_ = self->priv->m_extension_name; _tmp8_ = g_strdup_printf (_tmp6_, _tmp7_); _tmp9_ = _tmp8_; g_warning ("panelbinding.vala:807: %s", _tmp9_); _g_free0 (_tmp9_); _tmp10_ = g_strdup (""); _g_free0 (self->priv->m_extension_name); self->priv->m_extension_name = _tmp10_; _g_free0 (format); return; } g_object_get (event, "is-enabled", &_tmp11_, NULL); _tmp12_ = _tmp11_; self->priv->m_enable_extension = _tmp12_; if (!self->priv->m_enable_extension) { panel_binding_hide_emoji_lookup_table (self); return; } if (!self->priv->m_loaded_emoji) { panel_binding_set_emoji_lang (self); } if (!self->priv->m_loaded_unicode) { _tmp13_ = self->priv->m_loaded_emoji; } else { _tmp13_ = FALSE; } if (_tmp13_) { ibus_emojier_load_unicode_dict (); self->priv->m_loaded_unicode = TRUE; } _tmp14_ = self->priv->m_emojier; if (_tmp14_ == NULL) { IBusEmojier* _tmp15_; GtkApplication* _tmp16_; IBusEmojier* _tmp17_; IBusEmojier* _tmp18_; IBusEmojier* _tmp19_; _tmp15_ = ibus_emojier_new (); g_object_ref_sink (_tmp15_); _g_object_unref0 (self->priv->m_emojier); self->priv->m_emojier = _tmp15_; _tmp16_ = self->priv->m_application; _tmp17_ = self->priv->m_emojier; gtk_application_add_window (_tmp16_, (GtkWindow*) _tmp17_); _tmp18_ = self->priv->m_emojier; g_signal_connect_object (_tmp18_, "candidate-clicked", (GCallback) ____lambda40__ibus_emojier_candidate_clicked, self, 0); _tmp19_ = self->priv->m_emojier; g_signal_connect_object (_tmp19_, "commit-text", (GCallback) ____lambda41__ibus_emojier_commit_text, self, 0); } _tmp20_ = self->priv->m_emojier; ibus_emojier_reset (_tmp20_); _tmp21_ = self->priv->m_emojier; ibus_emojier_set_annotation (_tmp21_, ""); _tmp22_ = self->priv->m_preedit; _tmp23_ = self->priv->m_extension_name; preedit_set_extension_name (_tmp22_, _tmp23_); _tmp24_ = self->priv->m_preedit; preedit_reset (_tmp24_); _tmp25_ = self->priv->m_preedit; _tmp26_ = preedit_get_engine_preedit_text (_tmp25_); _tmp27_ = _tmp26_; _tmp28_ = self->priv->m_preedit; ibus_panel_service_update_preedit_text_received ((IBusPanelService*) self, _tmp27_, preedit_get_engine_preedit_cursor_pos (_tmp28_), TRUE); _g_object_unref0 (_tmp27_); _tmp29_ = ibus_extension_event_get_params (event); _tmp30_ = g_strdup (_tmp29_); params = _tmp30_; _tmp31_ = params; if (g_strcmp0 (_tmp31_, "category-list") == 0) { panel_binding_key_press_space (self); panel_binding_show_preedit_and_candidate (self, TRUE); } _g_free0 (params); } static void panel_binding_real_set_cursor_location (IBusPanelService* base, gint x, gint y, gint width, gint height) { PanelBinding * self; IBusEmojier* _tmp0_; self = (PanelBinding*) base; _tmp0_ = self->priv->m_emojier; if (_tmp0_ != NULL) { IBusEmojier* _tmp1_; _tmp1_ = self->priv->m_emojier; ibus_emojier_set_cursor_location (_tmp1_, x, y, width, height); } } static void panel_binding_real_update_preedit_text (IBusPanelService* base, IBusText* text, guint cursor_pos, gboolean visible) { PanelBinding * self; Preedit* _tmp0_; Preedit* _tmp3_; Preedit* _tmp4_; IBusText* _tmp5_; IBusText* _tmp6_; Preedit* _tmp7_; self = (PanelBinding*) base; g_return_if_fail (text != NULL); _tmp0_ = self->priv->m_preedit; preedit_set_engine_preedit_text (_tmp0_, text); if (visible) { Preedit* _tmp1_; _tmp1_ = self->priv->m_preedit; preedit_show_engine_preedit_text (_tmp1_); } else { Preedit* _tmp2_; _tmp2_ = self->priv->m_preedit; preedit_hide_engine_preedit_text (_tmp2_); } _tmp3_ = self->priv->m_preedit; preedit_set_engine_preedit_cursor_pos (_tmp3_, cursor_pos); _tmp4_ = self->priv->m_preedit; _tmp5_ = preedit_get_engine_preedit_text (_tmp4_); _tmp6_ = _tmp5_; _tmp7_ = self->priv->m_preedit; ibus_panel_service_update_preedit_text_received ((IBusPanelService*) self, _tmp6_, preedit_get_engine_preedit_cursor_pos (_tmp7_), visible); _g_object_unref0 (_tmp6_); } static void panel_binding_real_show_preedit_text (IBusPanelService* base) { PanelBinding * self; Preedit* _tmp0_; self = (PanelBinding*) base; _tmp0_ = self->priv->m_preedit; preedit_show_engine_preedit_text (_tmp0_); panel_binding_show_preedit_and_candidate (self, FALSE); } static void panel_binding_real_hide_preedit_text (IBusPanelService* base) { PanelBinding * self; Preedit* _tmp0_; self = (PanelBinding*) base; _tmp0_ = self->priv->m_preedit; preedit_hide_engine_preedit_text (_tmp0_); panel_binding_show_preedit_and_candidate (self, FALSE); } static gboolean panel_binding_real_process_key_event (IBusPanelService* base, guint keyval, guint keycode, guint state) { PanelBinding * self; guint modifiers = 0U; gboolean show_candidate = FALSE; gboolean result = FALSE; self = (PanelBinding*) base; if ((state & IBUS_RELEASE_MASK) != ((guint) 0)) { result = FALSE; return result; } modifiers = state; show_candidate = FALSE; switch (keyval) { case GDK_KEY_Escape: { Preedit* _tmp0_; show_candidate = panel_binding_key_press_escape (self); _tmp0_ = self->priv->m_preedit; if (!preedit_is_shown (_tmp0_)) { result = TRUE; return result; } break; } case GDK_KEY_Return: case GDK_KEY_KP_Enter: { const gchar* _tmp1_; Preedit* _tmp2_; _tmp1_ = self->priv->m_extension_name; if (g_strcmp0 (_tmp1_, "unicode") == 0) { panel_binding_key_press_space (self); } show_candidate = panel_binding_key_press_enter (self); _tmp2_ = self->priv->m_preedit; if (!preedit_is_shown (_tmp2_)) { panel_binding_hide_emoji_lookup_table (self); result = TRUE; return result; } break; } case GDK_KEY_BackSpace: { Preedit* _tmp3_; gchar* annotation = NULL; Preedit* _tmp4_; gchar* _tmp5_; gboolean _tmp6_ = FALSE; const gchar* _tmp7_; IBusEmojier* _tmp9_; const gchar* _tmp10_; _tmp3_ = self->priv->m_preedit; preedit_backspace (_tmp3_); _tmp4_ = self->priv->m_preedit; _tmp5_ = preedit_get_text (_tmp4_); annotation = _tmp5_; _tmp7_ = annotation; if (g_strcmp0 (_tmp7_, "") == 0) { const gchar* _tmp8_; _tmp8_ = self->priv->m_extension_name; _tmp6_ = g_strcmp0 (_tmp8_, "unicode") == 0; } else { _tmp6_ = FALSE; } if (_tmp6_) { panel_binding_key_press_escape (self); result = TRUE; _g_free0 (annotation); return result; } _tmp9_ = self->priv->m_emojier; _tmp10_ = annotation; ibus_emojier_set_annotation (_tmp9_, _tmp10_); _g_free0 (annotation); break; } case GDK_KEY_space: case GDK_KEY_KP_Space: { const gchar* _tmp11_; if ((modifiers & GDK_SHIFT_MASK) != ((guint) 0)) { if (!panel_binding_key_press_keyval (self, keyval)) { result = TRUE; return result; } show_candidate = panel_binding_is_emoji_lookup_table (self); break; } show_candidate = panel_binding_key_press_space (self); _tmp11_ = self->priv->m_extension_name; if (g_strcmp0 (_tmp11_, "unicode") == 0) { panel_binding_key_press_enter (self); result = TRUE; return result; } break; } case GDK_KEY_Right: case GDK_KEY_KP_Right: { if (self->priv->m_is_wayland) { show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Down, modifiers); } else { show_candidate = panel_binding_key_press_cursor_horizontal (self, GDK_KEY_Right, modifiers); } break; } case GDK_KEY_Left: case GDK_KEY_KP_Left: { if (self->priv->m_is_wayland) { show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Up, modifiers); } else { show_candidate = panel_binding_key_press_cursor_horizontal (self, GDK_KEY_Left, modifiers); } break; } case GDK_KEY_Down: case GDK_KEY_KP_Down: { if (self->priv->m_is_wayland) { show_candidate = panel_binding_key_press_cursor_horizontal (self, GDK_KEY_Right, modifiers); } else { show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Down, modifiers); } break; } case GDK_KEY_Up: case GDK_KEY_KP_Up: { if (self->priv->m_is_wayland) { show_candidate = panel_binding_key_press_cursor_horizontal (self, GDK_KEY_Left, modifiers); } else { show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Up, modifiers); } break; } case GDK_KEY_Page_Down: case GDK_KEY_KP_Page_Down: { if (self->priv->m_is_wayland) { show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Down, modifiers); } else { show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Page_Down, modifiers); } break; } case GDK_KEY_Page_Up: case GDK_KEY_KP_Page_Up: { if (self->priv->m_is_wayland) { show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Up, modifiers); } else { show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Page_Up, modifiers); } break; } case GDK_KEY_Home: case GDK_KEY_KP_Home: { show_candidate = panel_binding_key_press_cursor_home_end (self, GDK_KEY_Home, modifiers); break; } case GDK_KEY_End: case GDK_KEY_KP_End: { show_candidate = panel_binding_key_press_cursor_home_end (self, GDK_KEY_End, modifiers); break; } default: { if ((modifiers & GDK_CONTROL_MASK) != ((guint) 0)) { show_candidate = panel_binding_key_press_control_keyval (self, keyval, modifiers); break; } if (!panel_binding_key_press_keyval (self, keyval)) { result = TRUE; return result; } show_candidate = panel_binding_is_emoji_lookup_table (self); break; } } panel_binding_show_preedit_and_candidate (self, show_candidate); result = TRUE; return result; } static void panel_binding_real_commit_text_received (IBusPanelService* base, IBusText* text) { PanelBinding * self; const gchar* str = NULL; const gchar* _tmp0_; const gchar* _tmp1_; Preedit* _tmp2_; const gchar* _tmp3_; Preedit* _tmp4_; gchar* annotation = NULL; Preedit* _tmp5_; gchar* _tmp6_; IBusEmojier* _tmp7_; const gchar* _tmp8_; self = (PanelBinding*) base; g_return_if_fail (text != NULL); _tmp0_ = text->text; str = _tmp0_; _tmp1_ = str; if (_tmp1_ == NULL) { return; } _tmp2_ = self->priv->m_preedit; _tmp3_ = str; preedit_append_text (_tmp2_, _tmp3_); _tmp4_ = self->priv->m_preedit; preedit_set_emoji (_tmp4_, ""); _tmp5_ = self->priv->m_preedit; _tmp6_ = preedit_get_text (_tmp5_); annotation = _tmp6_; _tmp7_ = self->priv->m_emojier; _tmp8_ = annotation; ibus_emojier_set_annotation (_tmp7_, _tmp8_); panel_binding_show_preedit_and_candidate (self, FALSE); _g_free0 (annotation); } static void panel_binding_real_page_up_lookup_table (IBusPanelService* base) { PanelBinding * self; gboolean show_candidate = FALSE; self = (PanelBinding*) base; show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Up, (guint) 0); panel_binding_show_preedit_and_candidate (self, show_candidate); } static void panel_binding_real_page_down_lookup_table (IBusPanelService* base) { PanelBinding * self; gboolean show_candidate = FALSE; self = (PanelBinding*) base; show_candidate = panel_binding_key_press_cursor_vertical (self, GDK_KEY_Down, (guint) 0); panel_binding_show_preedit_and_candidate (self, show_candidate); } static void panel_binding_real_cursor_up_lookup_table (IBusPanelService* base) { PanelBinding * self; gboolean show_candidate = FALSE; self = (PanelBinding*) base; show_candidate = panel_binding_key_press_cursor_horizontal (self, GDK_KEY_Left, (guint) 0); panel_binding_show_preedit_and_candidate (self, show_candidate); } static void panel_binding_real_cursor_down_lookup_table (IBusPanelService* base) { PanelBinding * self; gboolean show_candidate = FALSE; self = (PanelBinding*) base; show_candidate = panel_binding_key_press_cursor_horizontal (self, GDK_KEY_Right, (guint) 0); panel_binding_show_preedit_and_candidate (self, show_candidate); } static void panel_binding_candidate_clicked_lookup_table_real (PanelBinding* self, guint index, guint button, guint state, gboolean is_emojier) { IBusEmojier* _tmp5_; gboolean show_candidate = FALSE; guint ncandidates = 0U; IBusEmojier* _tmp6_; gboolean _tmp7_ = FALSE; g_return_if_fail (self != NULL); if (button == IBUS_EMOJIER_BUTTON_CLOSE_BUTTON) { Preedit* _tmp0_; IBusExtensionEvent* event = NULL; const gchar* _tmp1_; IBusExtensionEvent* _tmp2_; IBusExtensionEvent* _tmp3_; IBusExtensionEvent* _tmp4_; self->priv->m_enable_extension = FALSE; panel_binding_hide_emoji_lookup_table (self); _tmp0_ = self->priv->m_preedit; preedit_hide (_tmp0_); _tmp1_ = self->priv->m_extension_name; _tmp2_ = ibus_extension_event_new ("name", _tmp1_, "is-enabled", FALSE, "is-extension", TRUE, NULL); g_object_ref_sink (_tmp2_); event = _tmp2_; _tmp3_ = event; _tmp4_ = _g_object_ref0 (_tmp3_); ibus_panel_service_panel_extension ((IBusPanelService*) self, _tmp4_); _g_object_unref0 (event); return; } _tmp5_ = self->priv->m_emojier; if (_tmp5_ == NULL) { return; } show_candidate = FALSE; _tmp6_ = self->priv->m_emojier; ncandidates = ibus_emojier_get_number_of_candidates (_tmp6_); if (ncandidates > ((guint) 0)) { _tmp7_ = ncandidates >= index; } else { _tmp7_ = FALSE; } if (_tmp7_) { IBusEmojier* _tmp8_; gboolean _tmp9_ = FALSE; gboolean need_commit_signal = FALSE; IBusEmojier* _tmp10_; _tmp8_ = self->priv->m_emojier; ibus_emojier_set_cursor_pos (_tmp8_, index); if (self->priv->m_is_wayland) { _tmp9_ = is_emojier; } else { _tmp9_ = FALSE; } need_commit_signal = _tmp9_; _tmp10_ = self->priv->m_emojier; show_candidate = ibus_emojier_has_variants (_tmp10_, index, need_commit_signal); if (!self->priv->m_is_wayland) { Preedit* _tmp11_; IBusEmojier* _tmp12_; gchar* _tmp13_; gchar* _tmp14_; _tmp11_ = self->priv->m_preedit; _tmp12_ = self->priv->m_emojier; _tmp13_ = ibus_emojier_get_current_candidate (_tmp12_); _tmp14_ = _tmp13_; preedit_set_emoji (_tmp11_, _tmp14_); _g_free0 (_tmp14_); } } else { return; } if (!show_candidate) { IBusText* text = NULL; Preedit* _tmp15_; IBusText* _tmp16_; gboolean _tmp17_ = FALSE; _tmp15_ = self->priv->m_preedit; _tmp16_ = preedit_get_commit_text (_tmp15_); text = _tmp16_; panel_binding_hide_emoji_lookup_table (self); if (!is_emojier) { _tmp17_ = TRUE; } else { _tmp17_ = !self->priv->m_is_wayland; } if (_tmp17_) { IBusText* _tmp18_; _tmp18_ = text; panel_binding_commit_text_update_favorites (self, _tmp18_, TRUE); } _g_object_unref0 (text); return; } panel_binding_show_preedit_and_candidate (self, show_candidate); } static void panel_binding_real_candidate_clicked_lookup_table (IBusPanelService* base, guint index, guint button, guint state) { PanelBinding * self; self = (PanelBinding*) base; panel_binding_candidate_clicked_lookup_table_real (self, index, button, state, FALSE); } static void panel_binding_class_init (PanelBindingClass * klass, gpointer klass_data) { panel_binding_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &PanelBinding_private_offset); ((IBusPanelServiceClass *) klass)->focus_in = (void (*) (IBusPanelService*, const gchar*)) panel_binding_real_focus_in; ((IBusPanelServiceClass *) klass)->focus_out = (void (*) (IBusPanelService*, const gchar*)) panel_binding_real_focus_out; ((IBusPanelServiceClass *) klass)->panel_extension_received = (void (*) (IBusPanelService*, IBusExtensionEvent*)) panel_binding_real_panel_extension_received; ((IBusPanelServiceClass *) klass)->set_cursor_location = (void (*) (IBusPanelService*, gint, gint, gint, gint)) panel_binding_real_set_cursor_location; ((IBusPanelServiceClass *) klass)->update_preedit_text = (void (*) (IBusPanelService*, IBusText*, guint, gboolean)) panel_binding_real_update_preedit_text; ((IBusPanelServiceClass *) klass)->show_preedit_text = (void (*) (IBusPanelService*)) panel_binding_real_show_preedit_text; ((IBusPanelServiceClass *) klass)->hide_preedit_text = (void (*) (IBusPanelService*)) panel_binding_real_hide_preedit_text; ((IBusPanelServiceClass *) klass)->process_key_event = (gboolean (*) (IBusPanelService*, guint, guint, guint)) panel_binding_real_process_key_event; ((IBusPanelServiceClass *) klass)->commit_text_received = (void (*) (IBusPanelService*, IBusText*)) panel_binding_real_commit_text_received; ((IBusPanelServiceClass *) klass)->page_up_lookup_table = (void (*) (IBusPanelService*)) panel_binding_real_page_up_lookup_table; ((IBusPanelServiceClass *) klass)->page_down_lookup_table = (void (*) (IBusPanelService*)) panel_binding_real_page_down_lookup_table; ((IBusPanelServiceClass *) klass)->cursor_up_lookup_table = (void (*) (IBusPanelService*)) panel_binding_real_cursor_up_lookup_table; ((IBusPanelServiceClass *) klass)->cursor_down_lookup_table = (void (*) (IBusPanelService*)) panel_binding_real_cursor_down_lookup_table; ((IBusPanelServiceClass *) klass)->candidate_clicked_lookup_table = (void (*) (IBusPanelService*, guint, guint, guint)) panel_binding_real_candidate_clicked_lookup_table; G_OBJECT_CLASS (klass)->finalize = panel_binding_finalize; } static void panel_binding_instance_init (PanelBinding * self, gpointer klass) { gchar* _tmp0_; gchar* _tmp1_; gchar** _tmp2_; gchar* _tmp3_; self->priv = panel_binding_get_instance_private (self); self->priv->m_settings_panel = NULL; self->priv->m_settings_emoji = NULL; _tmp0_ = g_strdup (""); self->priv->m_current_context_path = _tmp0_; _tmp1_ = g_strdup (""); self->priv->m_real_current_context_path = _tmp1_; _tmp2_ = g_new0 (gchar*, 0 + 1); self->priv->m_emojier_favorites = _tmp2_; self->priv->m_emojier_favorites_length1 = 0; self->priv->_m_emojier_favorites_size_ = self->priv->m_emojier_favorites_length1; self->priv->m_loaded_emoji = FALSE; self->priv->m_loaded_unicode = FALSE; _tmp3_ = g_strdup (""); self->priv->m_extension_name = _tmp3_; memset (&self->priv->m_key_event_data, 0, sizeof (IBusProcessKeyEventData)); } static void panel_binding_finalize (GObject * obj) { PanelBinding * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PANEL_BINDING, PanelBinding); _g_object_unref0 (self->priv->m_bus); _g_object_unref0 (self->priv->m_application); _g_object_unref0 (self->priv->m_settings_panel); _g_object_unref0 (self->priv->m_settings_emoji); _g_free0 (self->priv->m_current_context_path); _g_free0 (self->priv->m_real_current_context_path); _g_object_unref0 (self->priv->m_emojier); self->priv->m_emojier_favorites = (_vala_array_free (self->priv->m_emojier_favorites, self->priv->m_emojier_favorites_length1, (GDestroyNotify) g_free), NULL); _g_object_unref0 (self->priv->m_css_provider); _g_free0 (self->priv->m_extension_name); _g_object_unref0 (self->priv->m_preedit); G_OBJECT_CLASS (panel_binding_parent_class)->finalize (obj); } static GType panel_binding_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (PanelBindingClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) panel_binding_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PanelBinding), 0, (GInstanceInitFunc) panel_binding_instance_init, NULL }; GType panel_binding_type_id; panel_binding_type_id = g_type_register_static (ibus_panel_service_get_type (), "PanelBinding", &g_define_type_info, 0); PanelBinding_private_offset = g_type_add_instance_private (panel_binding_type_id, sizeof (PanelBindingPrivate)); return panel_binding_type_id; } GType panel_binding_get_type (void) { static volatile gsize panel_binding_type_id__volatile = 0; if (g_once_init_enter (&panel_binding_type_id__volatile)) { GType panel_binding_type_id; panel_binding_type_id = panel_binding_get_type_once (); g_once_init_leave (&panel_binding_type_id__volatile, panel_binding_type_id); } return panel_binding_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { gint 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) { gint length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; } ibus-1.5.22/ui/gtk3/pango.c0000644000000000000000000001566313623751707012215 00000000000000/* pango.c generated by valac 0.47.91, 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 #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) { gchar* _tmp0_; gint result = 0; g_return_val_if_fail (self != NULL, 0); _tmp0_ = g_utf8_offset_to_pointer (self, c); result = (gint) (_tmp0_ - ((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* pango_attrs = NULL; PangoAttrList* _tmp0_; IBusAttrList* attrs = NULL; IBusAttrList* _tmp1_; IBusAttrList* _tmp2_; const gchar* str = NULL; const gchar* _tmp3_; glong nchars = 0L; const gchar* _tmp4_; glong* offsets = NULL; glong* _tmp5_; gint offsets_length1; gint _offsets_size_; IBusAttribute* attr = NULL; gint i = 0; PangoAttrList* result = NULL; g_return_val_if_fail (text != NULL, NULL); _tmp0_ = pango_attr_list_new (); pango_attrs = _tmp0_; _tmp1_ = ibus_text_get_attributes (text); attrs = _tmp1_; _tmp2_ = attrs; if (_tmp2_ == NULL) { result = pango_attrs; return result; } _tmp3_ = ibus_text_get_text (text); str = _tmp3_; _tmp4_ = str; nchars = (glong) g_utf8_strlen (_tmp4_, (gssize) -1); _tmp5_ = g_new0 (glong, nchars + 1); offsets = _tmp5_; offsets_length1 = nchars + 1; _offsets_size_ = offsets_length1; { gint i = 0; i = 0; { gboolean _tmp6_ = FALSE; _tmp6_ = TRUE; while (TRUE) { glong* _tmp8_; gint _tmp8__length1; const gchar* _tmp9_; if (!_tmp6_) { gint _tmp7_; _tmp7_ = i; i = _tmp7_ + 1; } _tmp6_ = FALSE; if (!(((glong) i) <= nchars)) { break; } _tmp8_ = offsets; _tmp8__length1 = offsets_length1; _tmp9_ = str; _tmp8_[i] = (glong) string_index_of_nth_char (_tmp9_, (glong) i); } } } i = 0; while (TRUE) { IBusAttrList* _tmp10_; gint _tmp11_; IBusAttribute* _tmp12_; IBusAttribute* _tmp13_; IBusAttribute* _tmp14_; glong start_index = 0L; IBusAttribute* _tmp15_; glong _tmp16_ = 0L; glong end_index = 0L; IBusAttribute* _tmp21_; glong _tmp22_ = 0L; PangoAttribute* pango_attr = NULL; IBusAttribute* _tmp27_; PangoAttribute* _tmp38_; PangoAttribute* _tmp39_; PangoAttrList* _tmp40_; PangoAttribute* _tmp41_; _tmp10_ = attrs; _tmp11_ = i; i = _tmp11_ + 1; _tmp12_ = ibus_attr_list_get (_tmp10_, (guint) _tmp11_); _tmp13_ = _g_object_ref0 (_tmp12_); _g_object_unref0 (attr); attr = _tmp13_; _tmp14_ = attr; if (_tmp14_ == NULL) { break; } _tmp15_ = attr; start_index = (glong) _tmp15_->start_index; if (start_index <= ((glong) 0)) { start_index = (glong) 0; } if (start_index <= nchars) { glong* _tmp17_; gint _tmp17__length1; glong _tmp18_; _tmp17_ = offsets; _tmp17__length1 = offsets_length1; _tmp18_ = _tmp17_[start_index]; _tmp16_ = _tmp18_; } else { glong* _tmp19_; gint _tmp19__length1; glong _tmp20_; _tmp19_ = offsets; _tmp19__length1 = offsets_length1; _tmp20_ = _tmp19_[-1]; _tmp16_ = _tmp20_; } start_index = _tmp16_; _tmp21_ = attr; end_index = (glong) _tmp21_->end_index; if (end_index <= ((glong) 0)) { end_index = (glong) 0; } if (end_index <= nchars) { glong* _tmp23_; gint _tmp23__length1; glong _tmp24_; _tmp23_ = offsets; _tmp23__length1 = offsets_length1; _tmp24_ = _tmp23_[end_index]; _tmp22_ = _tmp24_; } else { glong* _tmp25_; gint _tmp25__length1; glong _tmp26_; _tmp25_ = offsets; _tmp25__length1 = offsets_length1; _tmp26_ = _tmp25_[-1]; _tmp22_ = _tmp26_; } end_index = _tmp22_; pango_attr = NULL; _tmp27_ = attr; switch (_tmp27_->type) { case IBUS_ATTR_TYPE_FOREGROUND: { { guint16 r = 0U; IBusAttribute* _tmp28_; guint16 g = 0U; IBusAttribute* _tmp29_; guint16 b = 0U; IBusAttribute* _tmp30_; PangoAttribute* _tmp31_; _tmp28_ = attr; r = (guint16) ((_tmp28_->value & 0x00ff0000) >> 8); _tmp29_ = attr; g = (guint16) (_tmp29_->value & 0x0000ff00); _tmp30_ = attr; b = (guint16) ((_tmp30_->value & 0x000000ff) << 8); _tmp31_ = pango_attr_foreground_new (r, g, b); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp31_; break; } } case IBUS_ATTR_TYPE_BACKGROUND: { { guint16 r = 0U; IBusAttribute* _tmp32_; guint16 g = 0U; IBusAttribute* _tmp33_; guint16 b = 0U; IBusAttribute* _tmp34_; PangoAttribute* _tmp35_; _tmp32_ = attr; r = (guint16) ((_tmp32_->value & 0x00ff0000) >> 8); _tmp33_ = attr; g = (guint16) (_tmp33_->value & 0x0000ff00); _tmp34_ = attr; b = (guint16) ((_tmp34_->value & 0x000000ff) << 8); _tmp35_ = pango_attr_background_new (r, g, b); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp35_; break; } } case IBUS_ATTR_TYPE_UNDERLINE: { { IBusAttribute* _tmp36_; PangoAttribute* _tmp37_; _tmp36_ = attr; _tmp37_ = pango_attr_underline_new ((PangoUnderline) _tmp36_->value); _pango_attribute_destroy0 (pango_attr); pango_attr = _tmp37_; break; } } default: { _pango_attribute_destroy0 (pango_attr); continue; } } _tmp38_ = pango_attr; _tmp38_->start_index = (guint) start_index; _tmp39_ = pango_attr; _tmp39_->end_index = (guint) end_index; _tmp40_ = pango_attrs; _tmp41_ = pango_attr; pango_attr = NULL; pango_attr_list_insert (_tmp40_, _tmp41_); _pango_attribute_destroy0 (pango_attr); } result = pango_attrs; _g_object_unref0 (attr); offsets = (g_free (offsets), NULL); return result; } ibus-1.5.22/ui/gtk3/notification-item.xml0000644000000000000000000000650413623750431015074 00000000000000 ibus-1.5.22/ui/gtk3/candidatearea.vala0000644000000000000000000002656013623750431014346 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2015 Peng Huang * Copyright(c) 2015-2019 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 ThemedRGBA m_rgba; 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); m_rgba = new ThemedRGBA(this); } public bool candidate_scrolled(Gdk.EventScroll event) { switch (event.direction) { case Gdk.ScrollDirection.UP: cursor_up(); break; case Gdk.ScrollDirection.DOWN: cursor_down(); break; } return 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) { Pango.Attribute pango_attr = Pango.attr_foreground_new( (uint16)(m_rgba.selected_fg.red * uint16.MAX), (uint16)(m_rgba.selected_fg.green * uint16.MAX), (uint16)(m_rgba.selected_fg.blue * uint16.MAX)); pango_attr.start_index = 0; pango_attr.end_index = candidates[i].get_text().length; attrs.insert((owned)pango_attr); pango_attr = Pango.attr_background_new( (uint16)(m_rgba.selected_bg.red * uint16.MAX), (uint16)(m_rgba.selected_bg.green * uint16.MAX), (uint16)(m_rgba.selected_bg.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) { Gtk.EventBox container_ebox = new Gtk.EventBox(); container_ebox.add_events(Gdk.EventMask.SCROLL_MASK); container_ebox.scroll_event.connect(candidate_scrolled); add(container_ebox); Gtk.Box vbox = new Gtk.Box(Gtk.Orientation.VERTICAL, 0); container_ebox.add(vbox); // Add Candidates Gtk.Box candidates_hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); vbox.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 vbox.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); vbox.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; label.set_margin_start (8); label.set_margin_end (8); candidate.set_margin_start (8); candidate.set_margin_end (8); // 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.EventBox container_ebox = new Gtk.EventBox(); container_ebox.add_events(Gdk.EventMask.SCROLL_MASK); container_ebox.scroll_event.connect(candidate_scrolled); add(container_ebox); Gtk.Box hbox = new Gtk.Box(Gtk.Orientation.HORIZONTAL, 0); container_ebox.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.22/ui/gtk3/ibus_ui_gtk3_vala.stamp0000644000000000000000000000000613623751706015365 00000000000000stamp ibus-1.5.22/ui/gtk3/gtkpanel.xml.in0000644000000000000000000000065313623750431013663 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.22/ui/gtk3/property.c0000644000000000000000000015505013623751707012770 00000000000000/* property.c generated by valac 0.47.91, 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; enum { PROPERTY_MANAGER_PROPERTY_ACTIVATE_SIGNAL, PROPERTY_MANAGER_NUM_SIGNALS }; static guint property_manager_signals[PROPERTY_MANAGER_NUM_SIGNALS] = {0}; enum { IPROP_ITEM_PROPERTY_ACTIVATE_SIGNAL, IPROP_ITEM_NUM_SIGNALS }; static guint iprop_item_signals[IPROP_ITEM_NUM_SIGNALS] = {0}; typedef struct _PropImageMenuItemPrivate PropImageMenuItemPrivate; enum { PROP_IMAGE_MENU_ITEM_0_PROPERTY, PROP_IMAGE_MENU_ITEM_NUM_PROPERTIES }; static GParamSpec* prop_image_menu_item_properties[PROP_IMAGE_MENU_ITEM_NUM_PROPERTIES]; typedef struct _PropCheckMenuItemPrivate PropCheckMenuItemPrivate; enum { PROP_CHECK_MENU_ITEM_0_PROPERTY, PROP_CHECK_MENU_ITEM_NUM_PROPERTIES }; static GParamSpec* prop_check_menu_item_properties[PROP_CHECK_MENU_ITEM_NUM_PROPERTIES]; typedef struct _PropRadioMenuItemPrivate PropRadioMenuItemPrivate; enum { PROP_RADIO_MENU_ITEM_0_PROPERTY, PROP_RADIO_MENU_ITEM_NUM_PROPERTIES }; static GParamSpec* prop_radio_menu_item_properties[PROP_RADIO_MENU_ITEM_NUM_PROPERTIES]; typedef struct _PropSeparatorMenuItemPrivate PropSeparatorMenuItemPrivate; enum { PROP_SEPARATOR_MENU_ITEM_0_PROPERTY, PROP_SEPARATOR_MENU_ITEM_NUM_PROPERTIES }; static GParamSpec* prop_separator_menu_item_properties[PROP_SEPARATOR_MENU_ITEM_NUM_PROPERTIES]; #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 gint PropertyManager_private_offset; static gpointer property_manager_parent_class = NULL; static gint PropImageMenuItem_private_offset; static gpointer prop_image_menu_item_parent_class = NULL; static IPropItemIface * prop_image_menu_item_iprop_item_parent_iface = NULL; static gint PropCheckMenuItem_private_offset; static gpointer prop_check_menu_item_parent_class = NULL; static IPropItemIface * prop_check_menu_item_iprop_item_parent_iface = NULL; static gint PropRadioMenuItem_private_offset; static gpointer prop_radio_menu_item_parent_class = NULL; static IPropItemIface * prop_radio_menu_item_iprop_item_parent_iface = NULL; static gint PropSeparatorMenuItem_private_offset; 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropertyManager, property_manager_unref) 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropRadioMenuItem, g_object_unref) 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropImageMenuItem, g_object_unref) 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropCheckMenuItem, g_object_unref) 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; G_DEFINE_AUTOPTR_CLEANUP_FUNC (PropSeparatorMenuItem, g_object_unref) static void ____lambda24_ (PropertyManager* self, const gchar* k, gint s); static void _____lambda24__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); static GType property_manager_get_type_once (void); void iprop_item_update_property (IPropItem* self, IBusProperty* prop); static GType iprop_item_get_type_once (void); 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); static GType prop_image_menu_item_get_type_once (void); 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); static GType prop_check_menu_item_get_type_once (void); 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); static GType prop_radio_menu_item_get_type_once (void); static void prop_separator_menu_item_real_update_property (IPropItem* base, IBusProperty* property); static void prop_separator_menu_item_finalize (GObject * obj); static GType prop_separator_menu_item_get_type_once (void); static inline gpointer property_manager_get_instance_private (PropertyManager* self) { return G_STRUCT_MEMBER_P (self, PropertyManager_private_offset); } 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_; g_return_if_fail (self != NULL); g_return_if_fail (props != NULL); _tmp0_ = _g_object_ref0 (props); _g_object_unref0 (self->priv->m_props); self->priv->m_props = _tmp0_; } gint property_manager_create_menu_items (PropertyManager* self, GtkMenu* menu) { IBusPropList* _tmp0_; gint result = 0; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (menu != NULL, 0); _tmp0_ = self->priv->m_props; result = property_manager_create_menu_items_internal (self, _tmp0_, menu); return result; } static void ____lambda24_ (PropertyManager* self, const gchar* k, gint s) { g_return_if_fail (k != NULL); g_signal_emit (self, property_manager_signals[PROPERTY_MANAGER_PROPERTY_ACTIVATE_SIGNAL], 0, k, s); } static void _____lambda24__iprop_item_property_activate (IPropItem* _sender, const gchar* key, gint state, gpointer self) { ____lambda24_ ((PropertyManager*) self, key, state); } static gint property_manager_create_menu_items_internal (PropertyManager* self, IBusPropList* props, GtkMenu* menu) { gint i = 0; PropRadioMenuItem* last_radio = NULL; gint result = 0; 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; IBusProperty* _tmp0_; IBusProperty* _tmp1_; IBusProperty* _tmp2_; IBusProperty* _tmp3_; const gchar* _tmp4_; gint _tmp5_; IPropItem* item = NULL; IBusProperty* _tmp6_; IBusProperty* _tmp31_; IPropItem* _tmp32_; _tmp0_ = ibus_prop_list_get (props, (guint) i); _tmp1_ = _g_object_ref0 (_tmp0_); prop = _tmp1_; _tmp2_ = prop; if (_tmp2_ == NULL) { _g_object_unref0 (prop); break; } _tmp3_ = prop; _tmp4_ = ibus_property_get_key (_tmp3_); g_debug ("property.vala:44: ins prop = %s", _tmp4_); _tmp5_ = i; i = _tmp5_ + 1; item = NULL; _tmp6_ = prop; switch (ibus_property_get_prop_type (_tmp6_)) { case PROP_TYPE_NORMAL: { IBusProperty* _tmp7_; PropImageMenuItem* _tmp8_; _tmp7_ = prop; _tmp8_ = prop_image_menu_item_new (_tmp7_); g_object_ref_sink (_tmp8_); _g_object_unref0 (item); item = (IPropItem*) _tmp8_; break; } case PROP_TYPE_TOGGLE: { IBusProperty* _tmp9_; PropCheckMenuItem* _tmp10_; _tmp9_ = prop; _tmp10_ = prop_check_menu_item_new (_tmp9_); g_object_ref_sink (_tmp10_); _g_object_unref0 (item); item = (IPropItem*) _tmp10_; break; } case PROP_TYPE_RADIO: { { PropRadioMenuItem* radio = NULL; IBusProperty* _tmp11_; PropRadioMenuItem* _tmp12_; PropRadioMenuItem* _tmp13_; PropRadioMenuItem* _tmp14_; IPropItem* _tmp15_; PropRadioMenuItem* _tmp16_; PropRadioMenuItem* _tmp17_; _tmp11_ = prop; _tmp12_ = last_radio; _tmp13_ = prop_radio_menu_item_new (_tmp11_, _tmp12_); g_object_ref_sink (_tmp13_); radio = _tmp13_; _tmp14_ = radio; _tmp15_ = _g_object_ref0 ((IPropItem*) _tmp14_); _g_object_unref0 (item); item = _tmp15_; _tmp16_ = radio; _tmp17_ = _g_object_ref0 (_tmp16_); _g_object_unref0 (last_radio); last_radio = _tmp17_; _g_object_unref0 (radio); } break; } case PROP_TYPE_MENU: { { PropImageMenuItem* menuitem = NULL; IBusProperty* _tmp18_; PropImageMenuItem* _tmp19_; PropImageMenuItem* _tmp20_; IPropItem* _tmp21_; GtkMenu* submenu = NULL; GtkMenu* _tmp22_; IBusProperty* _tmp23_; IBusPropList* _tmp24_; GtkMenu* _tmp25_; _tmp18_ = prop; _tmp19_ = prop_image_menu_item_new (_tmp18_); g_object_ref_sink (_tmp19_); menuitem = _tmp19_; _tmp20_ = menuitem; _tmp21_ = _g_object_ref0 ((IPropItem*) _tmp20_); _g_object_unref0 (item); item = _tmp21_; _tmp22_ = (GtkMenu*) gtk_menu_new (); g_object_ref_sink (_tmp22_); submenu = _tmp22_; _tmp23_ = prop; _tmp24_ = ibus_property_get_sub_props (_tmp23_); _tmp25_ = submenu; if (property_manager_create_menu_items_internal (self, _tmp24_, _tmp25_) > 0) { PropImageMenuItem* _tmp26_; GtkMenu* _tmp27_; _tmp26_ = menuitem; _tmp27_ = submenu; gtk_menu_item_set_submenu ((GtkMenuItem*) _tmp26_, _tmp27_); } _g_object_unref0 (submenu); _g_object_unref0 (menuitem); } break; } case PROP_TYPE_SEPARATOR: { IBusProperty* _tmp28_; PropSeparatorMenuItem* _tmp29_; _tmp28_ = prop; _tmp29_ = prop_separator_menu_item_new (_tmp28_); g_object_ref_sink (_tmp29_); _g_object_unref0 (item); item = (IPropItem*) _tmp29_; break; } default: { IBusProperty* _tmp30_; _tmp30_ = prop; g_warning ("property.vala:76: unknown property type %d", (gint) ibus_property_get_prop_type (_tmp30_)); break; } } _tmp31_ = prop; if (ibus_property_get_prop_type (_tmp31_) != PROP_TYPE_RADIO) { _g_object_unref0 (last_radio); last_radio = NULL; } _tmp32_ = item; if (_tmp32_ != NULL) { IPropItem* _tmp33_; IPropItem* _tmp34_; _tmp33_ = item; gtk_menu_shell_append ((GtkMenuShell*) menu, G_TYPE_CHECK_INSTANCE_TYPE (_tmp33_, gtk_menu_item_get_type ()) ? ((GtkMenuItem*) _tmp33_) : NULL); _tmp34_ = item; g_signal_connect (_tmp34_, "property-activate", (GCallback) _____lambda24__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) { IBusPropList* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (prop != NULL); _vala_assert (prop != NULL, "prop != null"); _tmp0_ = self->priv->m_props; if (_tmp0_ != NULL) { IBusPropList* _tmp1_; _tmp1_ = self->priv->m_props; ibus_prop_list_update_property (_tmp1_, prop); } } 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, gpointer klass_data) { property_manager_parent_class = g_type_class_peek_parent (klass); ((PropertyManagerClass *) klass)->finalize = property_manager_finalize; g_type_class_adjust_private_offset (klass, &PropertyManager_private_offset); property_manager_signals[PROPERTY_MANAGER_PROPERTY_ACTIVATE_SIGNAL] = 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, gpointer klass) { self->priv = property_manager_get_instance_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); } static GType property_manager_get_type_once (void) { 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); PropertyManager_private_offset = g_type_add_instance_private (property_manager_type_id, sizeof (PropertyManagerPrivate)); return property_manager_type_id; } 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)) { GType property_manager_type_id; property_manager_type_id = property_manager_get_type_once (); 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_default_init (IPropItemIface * iface, gpointer iface_data) { iprop_item_signals[IPROP_ITEM_PROPERTY_ACTIVATE_SIGNAL] = 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); } static GType iprop_item_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IPropItemIface), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) iprop_item_default_init, (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); return iprop_item_type_id; } 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)) { GType iprop_item_type_id; iprop_item_type_id = iprop_item_get_type_once (); g_once_init_leave (&iprop_item_type_id__volatile, iprop_item_type_id); } return iprop_item_type_id__volatile; } static inline gpointer prop_image_menu_item_get_instance_private (PropImageMenuItem* self) { return G_STRUCT_MEMBER_P (self, PropImageMenuItem_private_offset); } PropImageMenuItem* prop_image_menu_item_construct (GType object_type, IBusProperty* property) { PropImageMenuItem * self = NULL; IBusProperty* _tmp0_; g_return_val_if_fail (property != NULL, NULL); self = (PropImageMenuItem*) g_object_new (object_type, NULL); _vala_assert (property != NULL, "property != null"); _tmp0_ = _g_object_ref0 (property); _g_object_unref0 (self->priv->m_property); self->priv->m_property = _tmp0_; 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_; const gchar* _tmp1_; const gchar* _tmp2_; IBusProperty* _tmp3_; IBusText* _tmp4_; IBusProperty* _tmp5_; IBusProperty* _tmp6_; IBusProperty* _tmp7_; IBusText* _tmp8_; IBusProperty* _tmp9_; self = (PropImageMenuItem*) base; g_return_if_fail (property != NULL); _tmp0_ = self->priv->m_property; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = ibus_property_get_key (property); if (g_strcmp0 (_tmp1_, _tmp2_) != 0) { return; } _tmp3_ = self->priv->m_property; _tmp4_ = ibus_property_get_label (property); ibus_property_set_label (_tmp3_, _tmp4_); _tmp5_ = self->priv->m_property; ibus_property_set_visible (_tmp5_, ibus_property_get_visible (property)); _tmp6_ = self->priv->m_property; ibus_property_set_sensitive (_tmp6_, ibus_property_get_sensitive (property)); _tmp7_ = self->priv->m_property; _tmp8_ = ibus_property_get_tooltip (property); ibus_property_set_tooltip (_tmp7_, _tmp8_); _tmp9_ = self->priv->m_property; ibus_property_set_state (_tmp9_, ibus_property_get_state (property)); prop_image_menu_item_sync (self); } static void prop_image_menu_item_sync (PropImageMenuItem* self) { IBusProperty* _tmp0_; IBusText* _tmp1_; const gchar* _tmp2_; IBusProperty* _tmp3_; IBusProperty* _tmp4_; 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; gtk_widget_set_visible ((GtkWidget*) self, ibus_property_get_visible (_tmp3_)); _tmp4_ = self->priv->m_property; gtk_widget_set_sensitive ((GtkWidget*) self, ibus_property_get_sensitive (_tmp4_)); } static void prop_image_menu_item_real_activate (GtkMenuItem* base) { PropImageMenuItem * self; IBusProperty* _tmp0_; const gchar* _tmp1_; IBusProperty* _tmp2_; self = (PropImageMenuItem*) base; _tmp0_ = self->priv->m_property; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = self->priv->m_property; g_signal_emit ((IPropItem*) self, iprop_item_signals[IPROP_ITEM_PROPERTY_ACTIVATE_SIGNAL], 0, _tmp1_, (gint) ibus_property_get_state (_tmp2_)); } static void prop_image_menu_item_class_init (PropImageMenuItemClass * klass, gpointer klass_data) { prop_image_menu_item_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &PropImageMenuItem_private_offset); ((GtkMenuItemClass *) klass)->activate = (void (*) (GtkMenuItem*)) 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, gpointer iface_data) { 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, gpointer klass) { self->priv = prop_image_menu_item_get_instance_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); } static GType prop_image_menu_item_get_type_once (void) { 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); PropImageMenuItem_private_offset = g_type_add_instance_private (prop_image_menu_item_type_id, sizeof (PropImageMenuItemPrivate)); return prop_image_menu_item_type_id; } 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)) { GType prop_image_menu_item_type_id; prop_image_menu_item_type_id = prop_image_menu_item_get_type_once (); 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; } static inline gpointer prop_check_menu_item_get_instance_private (PropCheckMenuItem* self) { return G_STRUCT_MEMBER_P (self, PropCheckMenuItem_private_offset); } PropCheckMenuItem* prop_check_menu_item_construct (GType object_type, IBusProperty* property) { PropCheckMenuItem * self = NULL; IBusProperty* _tmp0_; g_return_val_if_fail (property != NULL, NULL); self = (PropCheckMenuItem*) g_object_new (object_type, NULL); _vala_assert (property != NULL, "property != null"); _tmp0_ = _g_object_ref0 (property); _g_object_unref0 (self->priv->m_property); self->priv->m_property = _tmp0_; 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_; const gchar* _tmp1_; const gchar* _tmp2_; IBusProperty* _tmp3_; IBusText* _tmp4_; IBusProperty* _tmp5_; const gchar* _tmp6_; IBusProperty* _tmp7_; IBusProperty* _tmp8_; IBusProperty* _tmp9_; IBusText* _tmp10_; IBusProperty* _tmp11_; self = (PropCheckMenuItem*) base; g_return_if_fail (property != NULL); _tmp0_ = self->priv->m_property; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = ibus_property_get_key (property); if (g_strcmp0 (_tmp1_, _tmp2_) != 0) { return; } _tmp3_ = self->priv->m_property; _tmp4_ = ibus_property_get_label (property); ibus_property_set_label (_tmp3_, _tmp4_); _tmp5_ = self->priv->m_property; _tmp6_ = ibus_property_get_icon (property); ibus_property_set_icon (_tmp5_, _tmp6_); _tmp7_ = self->priv->m_property; ibus_property_set_visible (_tmp7_, ibus_property_get_visible (property)); _tmp8_ = self->priv->m_property; ibus_property_set_sensitive (_tmp8_, ibus_property_get_sensitive (property)); _tmp9_ = self->priv->m_property; _tmp10_ = ibus_property_get_tooltip (property); ibus_property_set_tooltip (_tmp9_, _tmp10_); _tmp11_ = self->priv->m_property; ibus_property_set_state (_tmp11_, ibus_property_get_state (property)); prop_check_menu_item_sync (self); } static void prop_check_menu_item_sync (PropCheckMenuItem* self) { IBusProperty* _tmp0_; IBusText* _tmp1_; const gchar* _tmp2_; IBusProperty* _tmp3_; IBusProperty* _tmp4_; IBusProperty* _tmp5_; 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; gtk_widget_set_visible ((GtkWidget*) self, ibus_property_get_visible (_tmp3_)); _tmp4_ = self->priv->m_property; gtk_widget_set_sensitive ((GtkWidget*) self, ibus_property_get_sensitive (_tmp4_)); _tmp5_ = self->priv->m_property; gtk_check_menu_item_set_active ((GtkCheckMenuItem*) self, ibus_property_get_state (_tmp5_) == PROP_STATE_CHECKED); } static void prop_check_menu_item_real_toggled (GtkCheckMenuItem* base) { PropCheckMenuItem * self; IBusPropState _tmp0_ = 0; IBusPropState new_state = 0; IBusProperty* _tmp1_; IBusPropState _tmp2_; self = (PropCheckMenuItem*) base; if (gtk_check_menu_item_get_active ((GtkCheckMenuItem*) self)) { _tmp0_ = PROP_STATE_CHECKED; } else { _tmp0_ = PROP_STATE_UNCHECKED; } new_state = _tmp0_; _tmp1_ = self->priv->m_property; _tmp2_ = new_state; if (ibus_property_get_state (_tmp1_) != _tmp2_) { IBusProperty* _tmp3_; IBusPropState _tmp4_; IBusProperty* _tmp5_; const gchar* _tmp6_; IBusProperty* _tmp7_; _tmp3_ = self->priv->m_property; _tmp4_ = new_state; ibus_property_set_state (_tmp3_, _tmp4_); _tmp5_ = self->priv->m_property; _tmp6_ = ibus_property_get_key (_tmp5_); _tmp7_ = self->priv->m_property; g_signal_emit ((IPropItem*) self, iprop_item_signals[IPROP_ITEM_PROPERTY_ACTIVATE_SIGNAL], 0, _tmp6_, (gint) ibus_property_get_state (_tmp7_)); } } static void prop_check_menu_item_class_init (PropCheckMenuItemClass * klass, gpointer klass_data) { prop_check_menu_item_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &PropCheckMenuItem_private_offset); ((GtkCheckMenuItemClass *) klass)->toggled = (void (*) (GtkCheckMenuItem*)) 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, gpointer iface_data) { 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, gpointer klass) { self->priv = prop_check_menu_item_get_instance_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); } static GType prop_check_menu_item_get_type_once (void) { 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); PropCheckMenuItem_private_offset = g_type_add_instance_private (prop_check_menu_item_type_id, sizeof (PropCheckMenuItemPrivate)); return prop_check_menu_item_type_id; } 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)) { GType prop_check_menu_item_type_id; prop_check_menu_item_type_id = prop_check_menu_item_get_type_once (); 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; } static inline gpointer prop_radio_menu_item_get_instance_private (PropRadioMenuItem* self) { return G_STRUCT_MEMBER_P (self, PropRadioMenuItem_private_offset); } PropRadioMenuItem* prop_radio_menu_item_construct (GType object_type, IBusProperty* property, PropRadioMenuItem* group_source) { PropRadioMenuItem * self = NULL; IBusProperty* _tmp0_; g_return_val_if_fail (property != NULL, NULL); self = (PropRadioMenuItem*) g_object_new (object_type, NULL); _vala_assert (property != NULL, "property != null"); _tmp0_ = _g_object_ref0 (property); _g_object_unref0 (self->priv->m_property); self->priv->m_property = _tmp0_; gtk_widget_set_no_show_all ((GtkWidget*) self, TRUE); if (group_source != NULL) { GSList* _tmp1_; _tmp1_ = gtk_radio_menu_item_get_group ((GtkRadioMenuItem*) group_source); gtk_radio_menu_item_set_group ((GtkRadioMenuItem*) self, _tmp1_); } 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_; const gchar* _tmp1_; const gchar* _tmp2_; IBusProperty* _tmp3_; IBusText* _tmp4_; IBusProperty* _tmp5_; const gchar* _tmp6_; IBusProperty* _tmp7_; IBusProperty* _tmp8_; IBusProperty* _tmp9_; IBusText* _tmp10_; IBusProperty* _tmp11_; self = (PropRadioMenuItem*) base; g_return_if_fail (property != NULL); _tmp0_ = self->priv->m_property; _tmp1_ = ibus_property_get_key (_tmp0_); _tmp2_ = ibus_property_get_key (property); if (g_strcmp0 (_tmp1_, _tmp2_) != 0) { return; } _tmp3_ = self->priv->m_property; _tmp4_ = ibus_property_get_label (property); ibus_property_set_label (_tmp3_, _tmp4_); _tmp5_ = self->priv->m_property; _tmp6_ = ibus_property_get_icon (property); ibus_property_set_icon (_tmp5_, _tmp6_); _tmp7_ = self->priv->m_property; ibus_property_set_visible (_tmp7_, ibus_property_get_visible (property)); _tmp8_ = self->priv->m_property; ibus_property_set_sensitive (_tmp8_, ibus_property_get_sensitive (property)); _tmp9_ = self->priv->m_property; _tmp10_ = ibus_property_get_tooltip (property); ibus_property_set_tooltip (_tmp9_, _tmp10_); _tmp11_ = self->priv->m_property; ibus_property_set_state (_tmp11_, ibus_property_get_state (property)); prop_radio_menu_item_sync (self); } static void prop_radio_menu_item_sync (PropRadioMenuItem* self) { IBusProperty* _tmp0_; IBusText* _tmp1_; const gchar* _tmp2_; IBusProperty* _tmp3_; IBusProperty* _tmp4_; IBusProperty* _tmp5_; 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; gtk_widget_set_visible ((GtkWidget*) self, ibus_property_get_visible (_tmp3_)); _tmp4_ = self->priv->m_property; gtk_widget_set_sensitive ((GtkWidget*) self, ibus_property_get_sensitive (_tmp4_)); _tmp5_ = self->priv->m_property; gtk_check_menu_item_set_active ((GtkCheckMenuItem*) self, ibus_property_get_state (_tmp5_) == PROP_STATE_CHECKED); } static void prop_radio_menu_item_real_toggled (GtkCheckMenuItem* base) { PropRadioMenuItem * self; IBusPropState _tmp0_ = 0; IBusPropState new_state = 0; IBusProperty* _tmp1_; IBusPropState _tmp2_; self = (PropRadioMenuItem*) base; if (gtk_check_menu_item_get_active ((GtkCheckMenuItem*) self)) { _tmp0_ = PROP_STATE_CHECKED; } else { _tmp0_ = PROP_STATE_UNCHECKED; } new_state = _tmp0_; _tmp1_ = self->priv->m_property; _tmp2_ = new_state; if (ibus_property_get_state (_tmp1_) != _tmp2_) { IBusProperty* _tmp3_; IBusPropState _tmp4_; IBusProperty* _tmp5_; const gchar* _tmp6_; IBusProperty* _tmp7_; _tmp3_ = self->priv->m_property; _tmp4_ = new_state; ibus_property_set_state (_tmp3_, _tmp4_); _tmp5_ = self->priv->m_property; _tmp6_ = ibus_property_get_key (_tmp5_); _tmp7_ = self->priv->m_property; g_signal_emit ((IPropItem*) self, iprop_item_signals[IPROP_ITEM_PROPERTY_ACTIVATE_SIGNAL], 0, _tmp6_, (gint) ibus_property_get_state (_tmp7_)); } } static void prop_radio_menu_item_class_init (PropRadioMenuItemClass * klass, gpointer klass_data) { prop_radio_menu_item_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &PropRadioMenuItem_private_offset); ((GtkCheckMenuItemClass *) klass)->toggled = (void (*) (GtkCheckMenuItem*)) 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, gpointer iface_data) { 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, gpointer klass) { self->priv = prop_radio_menu_item_get_instance_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); } static GType prop_radio_menu_item_get_type_once (void) { 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); PropRadioMenuItem_private_offset = g_type_add_instance_private (prop_radio_menu_item_type_id, sizeof (PropRadioMenuItemPrivate)); return prop_radio_menu_item_type_id; } 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)) { GType prop_radio_menu_item_type_id; prop_radio_menu_item_type_id = prop_radio_menu_item_get_type_once (); 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; } static inline gpointer prop_separator_menu_item_get_instance_private (PropSeparatorMenuItem* self) { return G_STRUCT_MEMBER_P (self, PropSeparatorMenuItem_private_offset); } PropSeparatorMenuItem* prop_separator_menu_item_construct (GType object_type, IBusProperty* property) { PropSeparatorMenuItem * self = NULL; IBusProperty* _tmp0_; g_return_val_if_fail (property != NULL, NULL); self = (PropSeparatorMenuItem*) g_object_new (object_type, NULL); _vala_assert (property != NULL, "property != null"); _tmp0_ = _g_object_ref0 (property); _g_object_unref0 (self->priv->m_property); self->priv->m_property = _tmp0_; 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, gpointer klass_data) { prop_separator_menu_item_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &PropSeparatorMenuItem_private_offset); G_OBJECT_CLASS (klass)->finalize = prop_separator_menu_item_finalize; } static void prop_separator_menu_item_iprop_item_interface_init (IPropItemIface * iface, gpointer iface_data) { 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, gpointer klass) { self->priv = prop_separator_menu_item_get_instance_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); } static GType prop_separator_menu_item_get_type_once (void) { 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); PropSeparatorMenuItem_private_offset = g_type_add_instance_private (prop_separator_menu_item_type_id, sizeof (PropSeparatorMenuItemPrivate)); return prop_separator_menu_item_type_id; } 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)) { GType prop_separator_menu_item_type_id; prop_separator_menu_item_type_id = prop_separator_menu_item_get_type_once (); 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.22/ui/gtk3/application.vala0000644000000000000000000001111513623750431014072 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011 Peng Huang * Copyright(c) 2017 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 Application { private IBus.Bus m_bus; private Panel m_panel; public Application(string[] argv) { GLib.Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR); 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) { // "Destroy" dbus method was called before this callback is called. // "Destroy" dbus method -> ibus_service_destroy() // -> g_dbus_connection_unregister_object() // -> g_object_unref(m_panel) will be called later with an idle method, // which was assigned in the arguments of // g_dbus_connection_register_object() debug("signal_name = %s", signal_name); // unref m_panel m_panel.disconnect_signals(); 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) { // https://bugzilla.redhat.com/show_bug.cgi?id=1226465#c20 // In /etc/xdg/plasma-workspace/env/gtk3_scrolling.sh // Plasma deskop sets this variable and prevents Super-space, // and Ctrl-Shift-e when ibus-ui-gtk3 runs after the // desktop is launched. GLib.Environment.unset_variable("GDK_CORE_DEVICE_EVENTS"); // for Gdk.X11.get_default_xdisplay() Gdk.set_allowed_backends("x11"); Application app = new Application(argv); app.run(); } } ibus-1.5.22/ui/gtk3/emojier.c0000644000000000000000000107604313623751711012536 00000000000000/* emojier.c generated by valac 0.47.91, the Vala compiler * generated from emojier.vala, do not modify */ /* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright (c) 2017-2019 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 #include #define TYPE_IBUS_EMOJIER (ibus_emojier_get_type ()) #define IBUS_EMOJIER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_IBUS_EMOJIER, IBusEmojier)) #define IBUS_EMOJIER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_IBUS_EMOJIER, IBusEmojierClass)) #define IS_IBUS_EMOJIER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_IBUS_EMOJIER)) #define IS_IBUS_EMOJIER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_IBUS_EMOJIER)) #define IBUS_EMOJIER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_IBUS_EMOJIER, IBusEmojierClass)) typedef struct _IBusEmojier IBusEmojier; typedef struct _IBusEmojierClass IBusEmojierClass; typedef struct _IBusEmojierPrivate IBusEmojierPrivate; #define TYPE_THEMED_RGBA (themed_rgba_get_type ()) #define THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THEMED_RGBA, ThemedRGBA)) #define THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THEMED_RGBA, ThemedRGBAClass)) #define IS_THEMED_RGBA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THEMED_RGBA)) #define IS_THEMED_RGBA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THEMED_RGBA)) #define THEMED_RGBA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THEMED_RGBA, ThemedRGBAClass)) typedef struct _ThemedRGBA ThemedRGBA; typedef struct _ThemedRGBAClass ThemedRGBAClass; #define IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW (ibus_emojier_escrolled_window_get_type ()) #define IBUS_EMOJIER_ESCROLLED_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, IBusEmojierEScrolledWindow)) #define IBUS_EMOJIER_ESCROLLED_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, IBusEmojierEScrolledWindowClass)) #define IBUS_EMOJIER_IS_ESCROLLED_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW)) #define IBUS_EMOJIER_IS_ESCROLLED_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW)) #define IBUS_EMOJIER_ESCROLLED_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, IBusEmojierEScrolledWindowClass)) typedef struct _IBusEmojierEScrolledWindow IBusEmojierEScrolledWindow; typedef struct _IBusEmojierEScrolledWindowClass IBusEmojierEScrolledWindowClass; #define IBUS_EMOJIER_TYPE_ELIST_BOX (ibus_emojier_elist_box_get_type ()) #define IBUS_EMOJIER_ELIST_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_ELIST_BOX, IBusEmojierEListBox)) #define IBUS_EMOJIER_ELIST_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_ELIST_BOX, IBusEmojierEListBoxClass)) #define IBUS_EMOJIER_IS_ELIST_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_ELIST_BOX)) #define IBUS_EMOJIER_IS_ELIST_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_ELIST_BOX)) #define IBUS_EMOJIER_ELIST_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_ELIST_BOX, IBusEmojierEListBoxClass)) typedef struct _IBusEmojierEListBox IBusEmojierEListBox; typedef struct _IBusEmojierEListBoxClass IBusEmojierEListBoxClass; enum { IBUS_EMOJIER_0_PROPERTY, IBUS_EMOJIER_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_properties[IBUS_EMOJIER_NUM_PROPERTIES]; typedef enum { IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD } IBusEmojierTravelDirection; #define IBUS_EMOJIER_TYPE_TRAVEL_DIRECTION (ibus_emojier_travel_direction_get_type ()) #define IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT (ibus_emojier_load_progress_object_get_type ()) #define IBUS_EMOJIER_LOAD_PROGRESS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, IBusEmojierLoadProgressObject)) #define IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, IBusEmojierLoadProgressObjectClass)) #define IBUS_EMOJIER_IS_LOAD_PROGRESS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT)) #define IBUS_EMOJIER_IS_LOAD_PROGRESS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT)) #define IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, IBusEmojierLoadProgressObjectClass)) typedef struct _IBusEmojierLoadProgressObject IBusEmojierLoadProgressObject; typedef struct _IBusEmojierLoadProgressObjectClass IBusEmojierLoadProgressObjectClass; #define _themed_rgba_unref0(var) ((var == NULL) ? NULL : (var = (themed_rgba_unref (var), NULL))) #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define _g_free0(var) (var = (g_free (var), NULL)) #define _g_main_loop_unref0(var) ((var == NULL) ? NULL : (var = (g_main_loop_unref (var), NULL))) #define _g_variant_unref0(var) ((var == NULL) ? NULL : (var = (g_variant_unref (var), NULL))) #define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) #define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL))) #define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL))) #define IBUS_EMOJIER_TYPE_EBOX_ROW (ibus_emojier_ebox_row_get_type ()) #define IBUS_EMOJIER_EBOX_ROW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow)) #define IBUS_EMOJIER_EBOX_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRowClass)) #define IBUS_EMOJIER_IS_EBOX_ROW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EBOX_ROW)) #define IBUS_EMOJIER_IS_EBOX_ROW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EBOX_ROW)) #define IBUS_EMOJIER_EBOX_ROW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRowClass)) typedef struct _IBusEmojierEBoxRow IBusEmojierEBoxRow; typedef struct _IBusEmojierEBoxRowClass IBusEmojierEBoxRowClass; #define IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX (ibus_emojier_epadded_label_box_get_type ()) #define IBUS_EMOJIER_EPADDED_LABEL_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, IBusEmojierEPaddedLabelBox)) #define IBUS_EMOJIER_EPADDED_LABEL_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, IBusEmojierEPaddedLabelBoxClass)) #define IBUS_EMOJIER_IS_EPADDED_LABEL_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX)) #define IBUS_EMOJIER_IS_EPADDED_LABEL_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX)) #define IBUS_EMOJIER_EPADDED_LABEL_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, IBusEmojierEPaddedLabelBoxClass)) typedef struct _IBusEmojierEPaddedLabelBox IBusEmojierEPaddedLabelBox; typedef struct _IBusEmojierEPaddedLabelBoxClass IBusEmojierEPaddedLabelBoxClass; typedef struct _Block1Data Block1Data; #define _pango_attr_list_unref0(var) ((var == NULL) ? NULL : (var = (pango_attr_list_unref (var), NULL))) #define IBUS_EMOJIER_TYPE_EGRID (ibus_emojier_egrid_get_type ()) #define IBUS_EMOJIER_EGRID(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EGRID, IBusEmojierEGrid)) #define IBUS_EMOJIER_EGRID_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EGRID, IBusEmojierEGridClass)) #define IBUS_EMOJIER_IS_EGRID(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EGRID)) #define IBUS_EMOJIER_IS_EGRID_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EGRID)) #define IBUS_EMOJIER_EGRID_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EGRID, IBusEmojierEGridClass)) typedef struct _IBusEmojierEGrid IBusEmojierEGrid; typedef struct _IBusEmojierEGridClass IBusEmojierEGridClass; typedef struct _Block2Data Block2Data; #define IBUS_EMOJIER_TYPE_EWHITE_LABEL (ibus_emojier_ewhite_label_get_type ()) #define IBUS_EMOJIER_EWHITE_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabel)) #define IBUS_EMOJIER_EWHITE_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabelClass)) #define IBUS_EMOJIER_IS_EWHITE_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EWHITE_LABEL)) #define IBUS_EMOJIER_IS_EWHITE_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EWHITE_LABEL)) #define IBUS_EMOJIER_EWHITE_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabelClass)) typedef struct _IBusEmojierEWhiteLabel IBusEmojierEWhiteLabel; typedef struct _IBusEmojierEWhiteLabelClass IBusEmojierEWhiteLabelClass; #define IBUS_EMOJIER_TYPE_ESELECTED_LABEL (ibus_emojier_eselected_label_get_type ()) #define IBUS_EMOJIER_ESELECTED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_ESELECTED_LABEL, IBusEmojierESelectedLabel)) #define IBUS_EMOJIER_ESELECTED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_ESELECTED_LABEL, IBusEmojierESelectedLabelClass)) #define IBUS_EMOJIER_IS_ESELECTED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_ESELECTED_LABEL)) #define IBUS_EMOJIER_IS_ESELECTED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_ESELECTED_LABEL)) #define IBUS_EMOJIER_ESELECTED_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_ESELECTED_LABEL, IBusEmojierESelectedLabelClass)) typedef struct _IBusEmojierESelectedLabel IBusEmojierESelectedLabel; typedef struct _IBusEmojierESelectedLabelClass IBusEmojierESelectedLabelClass; #define IBUS_EMOJIER_TYPE_EGOLD_LABEL (ibus_emojier_egold_label_get_type ()) #define IBUS_EMOJIER_EGOLD_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EGOLD_LABEL, IBusEmojierEGoldLabel)) #define IBUS_EMOJIER_EGOLD_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EGOLD_LABEL, IBusEmojierEGoldLabelClass)) #define IBUS_EMOJIER_IS_EGOLD_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EGOLD_LABEL)) #define IBUS_EMOJIER_IS_EGOLD_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EGOLD_LABEL)) #define IBUS_EMOJIER_EGOLD_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EGOLD_LABEL, IBusEmojierEGoldLabelClass)) typedef struct _IBusEmojierEGoldLabel IBusEmojierEGoldLabel; typedef struct _IBusEmojierEGoldLabelClass IBusEmojierEGoldLabelClass; #define __vala_GdkEventMotion_free0(var) ((var == NULL) ? NULL : (var = (_vala_GdkEventMotion_free (var), NULL))) #define __vala_PangoFontDescription_free0(var) ((var == NULL) ? NULL : (var = (_vala_PangoFontDescription_free (var), NULL))) typedef struct _IBusEmojierEListBoxPrivate IBusEmojierEListBoxPrivate; enum { IBUS_EMOJIER_ELIST_BOX_0_PROPERTY, IBUS_EMOJIER_ELIST_BOX_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_elist_box_properties[IBUS_EMOJIER_ELIST_BOX_NUM_PROPERTIES]; typedef struct _IBusEmojierEBoxRowPrivate IBusEmojierEBoxRowPrivate; enum { IBUS_EMOJIER_EBOX_ROW_0_PROPERTY, IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY, IBUS_EMOJIER_EBOX_ROW_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_ebox_row_properties[IBUS_EMOJIER_EBOX_ROW_NUM_PROPERTIES]; typedef struct _IBusEmojierEScrolledWindowPrivate IBusEmojierEScrolledWindowPrivate; enum { IBUS_EMOJIER_ESCROLLED_WINDOW_0_PROPERTY, IBUS_EMOJIER_ESCROLLED_WINDOW_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_escrolled_window_properties[IBUS_EMOJIER_ESCROLLED_WINDOW_NUM_PROPERTIES]; typedef struct _IBusEmojierEGridPrivate IBusEmojierEGridPrivate; enum { IBUS_EMOJIER_EGRID_0_PROPERTY, IBUS_EMOJIER_EGRID_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_egrid_properties[IBUS_EMOJIER_EGRID_NUM_PROPERTIES]; typedef struct _IBusEmojierEWhiteLabelPrivate IBusEmojierEWhiteLabelPrivate; enum { IBUS_EMOJIER_EWHITE_LABEL_0_PROPERTY, IBUS_EMOJIER_EWHITE_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_ewhite_label_properties[IBUS_EMOJIER_EWHITE_LABEL_NUM_PROPERTIES]; typedef struct _IBusEmojierESelectedLabelPrivate IBusEmojierESelectedLabelPrivate; enum { IBUS_EMOJIER_ESELECTED_LABEL_0_PROPERTY, IBUS_EMOJIER_ESELECTED_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_eselected_label_properties[IBUS_EMOJIER_ESELECTED_LABEL_NUM_PROPERTIES]; typedef struct _IBusEmojierEGoldLabelPrivate IBusEmojierEGoldLabelPrivate; enum { IBUS_EMOJIER_EGOLD_LABEL_0_PROPERTY, IBUS_EMOJIER_EGOLD_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_egold_label_properties[IBUS_EMOJIER_EGOLD_LABEL_NUM_PROPERTIES]; #define IBUS_EMOJIER_TYPE_EPADDED_LABEL (ibus_emojier_epadded_label_get_type ()) #define IBUS_EMOJIER_EPADDED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL, IBusEmojierEPaddedLabel)) #define IBUS_EMOJIER_EPADDED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL, IBusEmojierEPaddedLabelClass)) #define IBUS_EMOJIER_IS_EPADDED_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL)) #define IBUS_EMOJIER_IS_EPADDED_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_EMOJIER_TYPE_EPADDED_LABEL)) #define IBUS_EMOJIER_EPADDED_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_EMOJIER_TYPE_EPADDED_LABEL, IBusEmojierEPaddedLabelClass)) typedef struct _IBusEmojierEPaddedLabel IBusEmojierEPaddedLabel; typedef struct _IBusEmojierEPaddedLabelClass IBusEmojierEPaddedLabelClass; typedef struct _IBusEmojierEPaddedLabelPrivate IBusEmojierEPaddedLabelPrivate; enum { IBUS_EMOJIER_EPADDED_LABEL_0_PROPERTY, IBUS_EMOJIER_EPADDED_LABEL_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_epadded_label_properties[IBUS_EMOJIER_EPADDED_LABEL_NUM_PROPERTIES]; typedef struct _IBusEmojierEPaddedLabelBoxPrivate IBusEmojierEPaddedLabelBoxPrivate; enum { IBUS_EMOJIER_EPADDED_LABEL_BOX_0_PROPERTY, IBUS_EMOJIER_EPADDED_LABEL_BOX_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_epadded_label_box_properties[IBUS_EMOJIER_EPADDED_LABEL_BOX_NUM_PROPERTIES]; #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 _IBusEmojierLoadProgressObjectPrivate IBusEmojierLoadProgressObjectPrivate; enum { IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_0_PROPERTY, IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_PROPERTIES }; static GParamSpec* ibus_emojier_load_progress_object_properties[IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_PROPERTIES]; enum { IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_DESERIALIZE_UNICODE_SIGNAL, IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_SIGNALS }; static guint ibus_emojier_load_progress_object_signals[IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_NUM_SIGNALS] = {0}; enum { IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL, IBUS_EMOJIER_COMMIT_TEXT_SIGNAL, IBUS_EMOJIER_CANCEL_SIGNAL, IBUS_EMOJIER_NUM_SIGNALS }; static guint ibus_emojier_signals[IBUS_EMOJIER_NUM_SIGNALS] = {0}; #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 _IBusEmojier { GtkApplicationWindow parent_instance; IBusEmojierPrivate * priv; }; struct _IBusEmojierClass { GtkApplicationWindowClass parent_class; }; struct _IBusEmojierPrivate { ThemedRGBA* m_rgba; GtkBox* m_vbox; gchar* m_annotation; gchar* m_backward; gint m_backward_index; IBusEmojierEScrolledWindow* m_scrolled_window; IBusEmojierEListBox* m_list_box; gboolean m_is_running; gchar* m_input_context_path; GMainLoop* m_loop; gchar* m_result; gboolean m_candidate_panel_is_visible; gboolean m_candidate_panel_mode; gint m_category_active_index; IBusLookupTable* m_lookup_table; GtkLabel** m_candidates; gint m_candidates_length1; gint _m_candidates_size_; gboolean m_enter_notify_enable; guint m_entry_notify_show_id; guint m_entry_notify_disable_id; GtkProgressBar* m_unicode_progress_bar; guint m_unicode_progress_id; GtkLabel* m_unicode_percent_label; gdouble m_unicode_percent; GdkRectangle m_cursor_location; gboolean m_is_up_side_down; guint m_redraw_window_id; }; struct _Block1Data { int _ref_count_; IBusEmojier* self; GtkButton* warning_button; }; struct _Block2Data { int _ref_count_; IBusEmojier* self; guint index; }; struct _IBusEmojierEListBox { GtkListBox parent_instance; IBusEmojierEListBoxPrivate * priv; }; struct _IBusEmojierEListBoxClass { GtkListBoxClass parent_class; }; struct _IBusEmojierEBoxRow { GtkListBoxRow parent_instance; IBusEmojierEBoxRowPrivate * priv; }; struct _IBusEmojierEBoxRowClass { GtkListBoxRowClass parent_class; }; struct _IBusEmojierEBoxRowPrivate { gchar* _text; }; struct _IBusEmojierEScrolledWindow { GtkScrolledWindow parent_instance; IBusEmojierEScrolledWindowPrivate * priv; }; struct _IBusEmojierEScrolledWindowClass { GtkScrolledWindowClass parent_class; }; struct _IBusEmojierEGrid { GtkGrid parent_instance; IBusEmojierEGridPrivate * priv; }; struct _IBusEmojierEGridClass { GtkGridClass parent_class; }; struct _IBusEmojierEWhiteLabel { GtkLabel parent_instance; IBusEmojierEWhiteLabelPrivate * priv; }; struct _IBusEmojierEWhiteLabelClass { GtkLabelClass parent_class; }; struct _IBusEmojierEWhiteLabelPrivate { gint m_minimum_width; gint m_natural_width; gint m_minimum_height; gint m_natural_height; }; struct _IBusEmojierESelectedLabel { IBusEmojierEWhiteLabel parent_instance; IBusEmojierESelectedLabelPrivate * priv; }; struct _IBusEmojierESelectedLabelClass { IBusEmojierEWhiteLabelClass parent_class; }; struct _IBusEmojierEGoldLabel { IBusEmojierEWhiteLabel parent_instance; IBusEmojierEGoldLabelPrivate * priv; }; struct _IBusEmojierEGoldLabelClass { IBusEmojierEWhiteLabelClass parent_class; }; struct _IBusEmojierEPaddedLabel { GtkLabel parent_instance; IBusEmojierEPaddedLabelPrivate * priv; }; struct _IBusEmojierEPaddedLabelClass { GtkLabelClass parent_class; }; struct _IBusEmojierEPaddedLabelBox { GtkBox parent_instance; IBusEmojierEPaddedLabelBoxPrivate * priv; }; struct _IBusEmojierEPaddedLabelBoxClass { GtkBoxClass parent_class; }; struct _IBusEmojierLoadProgressObject { GObject parent_instance; IBusEmojierLoadProgressObjectPrivate * priv; }; struct _IBusEmojierLoadProgressObjectClass { GObjectClass parent_class; }; static gint IBusEmojier_private_offset; static gpointer ibus_emojier_parent_class = NULL; static gchar* ibus_emojier_m_current_lang_id; static gchar* ibus_emojier_m_current_lang_id = NULL; static gchar* ibus_emojier_m_emoji_font_family; static gchar* ibus_emojier_m_emoji_font_family = NULL; static gint ibus_emojier_m_emoji_font_size; static gint ibus_emojier_m_emoji_font_size = 0; static gboolean ibus_emojier_m_emoji_font_changed; static gboolean ibus_emojier_m_emoji_font_changed = FALSE; static gchar** ibus_emojier_m_favorites; static gint ibus_emojier_m_favorites_length1; static gchar** ibus_emojier_m_favorites = NULL; static gint ibus_emojier_m_favorites_length1 = 0; static gint _ibus_emojier_m_favorites_size_ = 0; static gchar** ibus_emojier_m_favorite_annotations; static gint ibus_emojier_m_favorite_annotations_length1; static gchar** ibus_emojier_m_favorite_annotations = NULL; static gint ibus_emojier_m_favorite_annotations_length1 = 0; static gint _ibus_emojier_m_favorite_annotations_size_ = 0; static gint ibus_emojier_m_emoji_max_seq_len; static gint ibus_emojier_m_emoji_max_seq_len = 0; static gboolean ibus_emojier_m_has_partial_match; static gboolean ibus_emojier_m_has_partial_match = FALSE; static guint ibus_emojier_m_partial_match_length; static guint ibus_emojier_m_partial_match_length = 0U; static guint ibus_emojier_m_partial_match_condition; static guint ibus_emojier_m_partial_match_condition = 0U; static gboolean ibus_emojier_m_show_emoji_variant; static gboolean ibus_emojier_m_show_emoji_variant = FALSE; static gint ibus_emojier_m_default_window_width; static gint ibus_emojier_m_default_window_width = 0; static gint ibus_emojier_m_default_window_height; static gint ibus_emojier_m_default_window_height = 0; static GHashTable* ibus_emojier_m_annotation_to_emojis_dict; static GHashTable* ibus_emojier_m_annotation_to_emojis_dict = NULL; static GHashTable* ibus_emojier_m_emoji_to_data_dict; static GHashTable* ibus_emojier_m_emoji_to_data_dict = NULL; static GHashTable* ibus_emojier_m_category_to_emojis_dict; static GHashTable* ibus_emojier_m_category_to_emojis_dict = NULL; static GHashTable* ibus_emojier_m_emoji_to_emoji_variants_dict; static GHashTable* ibus_emojier_m_emoji_to_emoji_variants_dict = NULL; static GHashTable* ibus_emojier_m_unicode_to_data_dict; static GHashTable* ibus_emojier_m_unicode_to_data_dict = NULL; static GHashTable* ibus_emojier_m_name_to_unicodes_dict; static GHashTable* ibus_emojier_m_name_to_unicodes_dict = NULL; static GSList* ibus_emojier_m_unicode_block_list; static GSList* ibus_emojier_m_unicode_block_list = NULL; static gboolean ibus_emojier_m_show_unicode; static gboolean ibus_emojier_m_show_unicode = FALSE; static IBusEmojierLoadProgressObject* ibus_emojier_m_unicode_progress_object; static IBusEmojierLoadProgressObject* ibus_emojier_m_unicode_progress_object = NULL; static gboolean ibus_emojier_m_loaded_unicode; static gboolean ibus_emojier_m_loaded_unicode = FALSE; static gchar* ibus_emojier_m_warning_message; static gchar* ibus_emojier_m_warning_message = NULL; extern gdouble ibus_emojier_m_mouse_x; gdouble ibus_emojier_m_mouse_x = 0.0; extern gdouble ibus_emojier_m_mouse_y; gdouble ibus_emojier_m_mouse_y = 0.0; static gpointer ibus_emojier_elist_box_parent_class = NULL; static gint IBusEmojierEBoxRow_private_offset; static gpointer ibus_emojier_ebox_row_parent_class = NULL; static gpointer ibus_emojier_escrolled_window_parent_class = NULL; static gpointer ibus_emojier_egrid_parent_class = NULL; static gint IBusEmojierEWhiteLabel_private_offset; static gpointer ibus_emojier_ewhite_label_parent_class = NULL; static gpointer ibus_emojier_eselected_label_parent_class = NULL; static gpointer ibus_emojier_egold_label_parent_class = NULL; static gpointer ibus_emojier_epadded_label_parent_class = NULL; static gpointer ibus_emojier_epadded_label_box_parent_class = NULL; static gpointer ibus_emojier_load_progress_object_parent_class = NULL; GType ibus_emojier_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojier, g_object_unref) gpointer themed_rgba_ref (gpointer instance); void themed_rgba_unref (gpointer instance); GParamSpec* param_spec_themed_rgba (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); void value_set_themed_rgba (GValue* value, gpointer v_object); void value_take_themed_rgba (GValue* value, gpointer v_object); gpointer value_get_themed_rgba (const GValue* value); GType themed_rgba_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (ThemedRGBA, themed_rgba_unref) static GType ibus_emojier_escrolled_window_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEScrolledWindow, g_object_unref) static GType ibus_emojier_elist_box_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEListBox, g_object_unref) static GType ibus_emojier_travel_direction_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; #define IBUS_EMOJIER_BUTTON_CLOSE_BUTTON ((guint) 1000) #define IBUS_EMOJIER_EMOJI_GRID_PAGE ((guint) 10) #define IBUS_EMOJIER_EMOJI_CATEGORY_FAVORITES N_ ("Favorites") #define IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS N_ ("Others") #define IBUS_EMOJIER_EMOJI_CATEGORY_UNICODE N_ ("Open Unicode choice") static GType ibus_emojier_load_progress_object_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierLoadProgressObject, g_object_unref) IBusEmojier* ibus_emojier_new (void); IBusEmojier* ibus_emojier_construct (GType object_type); static void ibus_emojier_check_action_variant_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter); static void _ibus_emojier_check_action_variant_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self); static void ibus_emojier_action_close_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter); static void _ibus_emojier_action_close_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self); static void ibus_emojier_set_css_data (IBusEmojier* self); static void __lambda7_ (IBusEmojier* self); static void ___lambda7__gtk_widget_hide (GtkWidget* _sender, gpointer self); static void __lambda8_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a); static void ibus_emojier_adjust_window_position (IBusEmojier* self); static void ___lambda8__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self); static void ibus_emojier_reload_emoji_dict (void); static GObject* ibus_emojier_get_load_progress_object (void); static void ibus_emojier_init_emoji_dict (void); static void ibus_emojier_make_emoji_dict (const gchar* lang); static void ibus_emojier_add_variants_to_component (void); void ibus_emojier_update_favorite_emoji_dict (void); static void _g_free0_ (gpointer var); static inline void _g_slist_free__g_free0_ (GSList* self); static void __g_slist_free__g_free0_0_ (gpointer var); static void _g_object_unref0_ (gpointer var); static void _g_slist_free0_ (gpointer var); static inline void _g_slist_free__g_object_unref0_ (GSList* self); static void ibus_emojier_update_emoji_to_data_dict (IBusEmojiData* data, const gchar* lang); static void ibus_emojier_update_annotation_to_emojis_dict (IBusEmojiData* data); static void ibus_emojier_update_category_to_emojis_dict (IBusEmojiData* data, const gchar* lang); static gpointer _g_strdup_gcopy_func (gconstpointer src, gpointer self); static gchar* ibus_emojier_utf8_code_point (const gchar* str); static gchar* ibus_emojier_utf8_entity (const gchar* str); static void ibus_emojier_update_annotations_with_description (IBusEmojiData* data, const gchar* description); static void ibus_emojier_make_unicode_block_dict (void); static void ibus_emojier_make_unicode_name_dict (GObject* source_object); static void ibus_emojier_make_unicode_name_dict_finish (GSList* unicode_list); static void ibus_emojier_update_unicode_to_data_dict (IBusUnicodeData* data); static void ibus_emojier_update_name_to_unicodes_dict (IBusUnicodeData* data); ThemedRGBA* themed_rgba_new (GtkWidget* widget); ThemedRGBA* themed_rgba_construct (GType object_type, GtkWidget* widget); GdkRGBA* themed_rgba_get_normal_bg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_fg (ThemedRGBA* self); GdkRGBA* themed_rgba_get_selected_bg (ThemedRGBA* self); static void ibus_emojier_set_fixed_size (IBusEmojier* self); static void ibus_emojier_remove_all_children (IBusEmojier* self); static void ibus_emojier_clamp_page (IBusEmojier* self); static void ibus_emojier_show_category_list (IBusEmojier* self); static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_new (GtkAdjustment* hadjustment, GtkAdjustment* vadjustment); static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_construct (GType object_type, GtkAdjustment* hadjustment, GtkAdjustment* vadjustment); static IBusEmojierEListBox* ibus_emojier_elist_box_new (void); static IBusEmojierEListBox* ibus_emojier_elist_box_construct (GType object_type); static void __lambda23_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow); static GType ibus_emojier_ebox_row_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEBoxRow, g_object_unref) static void ibus_emojier_show_emoji_for_category (IBusEmojier* self, const gchar* category); static const gchar* ibus_emojier_ebox_row_get_text (IBusEmojierEBoxRow* self); static void ___lambda23__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self); static IBusEmojierEBoxRow* ibus_emojier_ebox_row_new (const gchar* text); static IBusEmojierEBoxRow* ibus_emojier_ebox_row_construct (GType object_type, const gchar* text); static GType ibus_emojier_epadded_label_box_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEPaddedLabelBox, g_object_unref) static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_new (const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption); static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_construct (GType object_type, const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption); static void ibus_emojier_update_unicode_blocks (IBusEmojier* self); static void ibus_emojier_show_emoji_variants (IBusEmojier* self, GSList* emojis); static void ibus_emojier_show_unicode_blocks (IBusEmojier* self); static gboolean __lambda20_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e); static void ibus_emojier_hide_candidate_panel (IBusEmojier* self); static gboolean ___lambda20__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static void __lambda21_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow); static void ibus_emojier_show_unicode_for_block (IBusEmojier* self, const gchar* block_name); static void ibus_emojier_show_candidate_panel (IBusEmojier* self); static void ___lambda21__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self); static void __lambda22_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a); static void ___lambda22__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self); static void ibus_emojier_show_arrow_buttons (IBusEmojier* self); static Block1Data* block1_data_ref (Block1Data* _data1_); static void block1_data_unref (void * _userdata_); static void __lambda15_ (IBusEmojier* self); static void ___lambda15__gtk_button_clicked (GtkButton* _sender, gpointer self); static void __lambda16_ (IBusEmojier* self); static void ___lambda16__gtk_button_clicked (GtkButton* _sender, gpointer self); IBusText* ibus_emojier_get_title_text (IBusEmojier* self); PangoAttrList* get_pango_attr_list_from_ibus_text (IBusText* text); static void ___lambda17_ (Block1Data* _data1_); static void ____lambda17__gtk_button_clicked (GtkButton* _sender, gpointer self); static void ibus_emojier_show_unicode_progress_bar (IBusEmojier* self); static void __lambda18_ (IBusEmojier* self, guint i, guint n); static void ___lambda18__ibus_emojier_load_progress_object_deserialize_unicode (IBusEmojierLoadProgressObject* _sender, guint done, guint total, gpointer self); static gboolean __lambda19_ (IBusEmojier* self); static gboolean ___lambda19__gsource_func (gpointer self); static gchar* ibus_emojier_check_unicode_point (const gchar* annotation); static GSList* ibus_emojier_lookup_emojis_from_annotation (const gchar* annotation); static void ibus_emojier_update_candidate_window (IBusEmojier* self); static void ibus_emojier_update_category_list (IBusEmojier* self); static void ibus_emojier_reset_window_mode (IBusEmojier* self); static gint __lambda11_ (const gchar* a, const gchar* b); static gint ___lambda11__gcompare_func (gconstpointer a, gconstpointer b); static void ibus_emojier_show_code_point_description (IBusEmojier* self, const gchar* text); static gboolean ___lambda10_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e); static gboolean ____lambda10__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static GType ibus_emojier_egrid_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEGrid, g_object_unref) static IBusEmojierEGrid* ibus_emojier_egrid_new (void); static IBusEmojierEGrid* ibus_emojier_egrid_construct (GType object_type); static Block2Data* block2_data_ref (Block2Data* _data2_); static void block2_data_unref (void * _userdata_); static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_new (const gchar* text); static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_construct (GType object_type, const gchar* text); static GType ibus_emojier_ewhite_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEWhiteLabel, g_object_unref) static GType ibus_emojier_eselected_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierESelectedLabel, g_object_unref) static IBusEmojierEGoldLabel* ibus_emojier_egold_label_new (const gchar* text); static IBusEmojierEGoldLabel* ibus_emojier_egold_label_construct (GType object_type, const gchar* text); static GType ibus_emojier_egold_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEGoldLabel, g_object_unref) static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_new (const gchar* text); static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_construct (GType object_type, const gchar* text); static gboolean _____lambda12_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e); static gboolean ______lambda12__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self); static gboolean _____lambda13_ (Block2Data* _data2_, GdkEventMotion* e); static GdkEventMotion* _vala_GdkEventMotion_copy (GdkEventMotion* self); static void _vala_GdkEventMotion_free (GdkEventMotion* self); static gboolean __lambda14_ (IBusEmojier* self); static gboolean ___lambda14__gsource_func (gpointer self); static gboolean ______lambda13__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self); static void _vala_array_add2 (GtkLabel** * array, gint* length, gint* size, GtkLabel* value); static void ibus_emojier_show_description (IBusEmojier* self); static void ibus_emojier_show_emoji_description (IBusEmojier* self, IBusEmojiData* data, const gchar* text); static void ibus_emojier_show_unicode_description (IBusEmojier* self, IBusUnicodeData* data, const gchar* text); static void ibus_emojier_enter_notify_disable_with_timer (IBusEmojier* self); static gboolean __lambda24_ (IBusEmojier* self); static gboolean ___lambda24__gsource_func (gpointer self); static void ibus_emojier_candidate_panel_cursor_down (IBusEmojier* self); static void ibus_emojier_candidate_panel_cursor_up (IBusEmojier* self); static gint ibus_emojier_get_page_num (IBusEmojier* self); static gboolean ibus_emojier_category_list_cursor_move (IBusEmojier* self, guint keyval); gboolean ibus_emojier_has_variants (IBusEmojier* self, guint index, gboolean need_commit_signal); gboolean ibus_emojier_key_press_cursor_horizontal (IBusEmojier* self, guint keyval, guint modifiers); gboolean ibus_emojier_key_press_cursor_vertical (IBusEmojier* self, guint keyval, guint modifiers); gboolean ibus_emojier_key_press_cursor_home_end (IBusEmojier* self, guint keyval, guint modifiers); gboolean ibus_emojier_key_press_escape (IBusEmojier* self); gboolean ibus_emojier_key_press_enter (IBusEmojier* self, gboolean need_commit_signal); static void ibus_emojier_get_monitor_geometry (IBusEmojier* self, GdkRectangle* result); static gboolean ___lambda9_ (IBusEmojier* self); static gboolean ____lambda9__gsource_func (gpointer self); void ibus_emojier_set_annotation (IBusEmojier* self, const gchar* annotation); IBusLookupTable* ibus_emojier_get_one_dimension_lookup_table (IBusEmojier* self); guint ibus_emojier_get_number_of_candidates (IBusEmojier* self); guint ibus_emojier_get_cursor_pos (IBusEmojier* self); void ibus_emojier_set_cursor_pos (IBusEmojier* self, guint cursor_pos); gchar* ibus_emojier_get_current_candidate (IBusEmojier* self); static void ibus_emojier_real_show_all (GtkWidget* base); static void ibus_emojier_real_hide (GtkWidget* base); static gboolean ibus_emojier_real_key_press_event (GtkWidget* base, GdkEventKey* event); gboolean ibus_emojier_is_running (IBusEmojier* self); gchar* ibus_emojier_get_input_context_path (IBusEmojier* self); void ibus_emojier_set_input_context_path (IBusEmojier* self, const gchar* input_context_path); gchar* ibus_emojier_get_selected_string (IBusEmojier* self); void ibus_emojier_reset (IBusEmojier* self); void ibus_emojier_present_centralize (IBusEmojier* self, GdkEvent* event); void ibus_emojier_set_cursor_location (IBusEmojier* 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); gboolean ibus_emojier_is_candidate_panel_mode (IBusEmojier* self); gboolean ibus_emojier_has_loaded_emoji_dict (void); void ibus_emojier_set_annotation_lang (const gchar* lang); gchar* ibus_emojier_get_annotation_lang (void); void ibus_emojier_set_emoji_font (const gchar* emoji_font); static void _vala_PangoFontDescription_free (PangoFontDescription* self); void ibus_emojier_set_partial_match (gboolean has_partial_match); void ibus_emojier_set_partial_match_length (gint length); void ibus_emojier_set_partial_match_condition (gint condition); void ibus_emojier_set_favorites (gchar** unowned_favorites, gint unowned_favorites_length1, gchar** unowned_favorite_annotations, gint unowned_favorite_annotations_length1); static void _vala_array_add3 (gchar** * array, gint* length, gint* size, gchar* value); static void _vala_array_add4 (gchar** * array, gint* length, gint* size, gchar* value); static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_new (void); static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_construct (GType object_type); void ibus_emojier_load_unicode_dict (void); 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 gboolean __lambda5_ (IBusEmojierEListBox* self, GdkEventMotion* e); static gboolean ___lambda5__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self); static gboolean __lambda6_ (IBusEmojierEListBox* self, GdkEventCrossing* e); static gboolean ___lambda6__gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self); static GType ibus_emojier_elist_box_get_type_once (void); static void ibus_emojier_ebox_row_set_text (IBusEmojierEBoxRow* self, const gchar* value); static void ibus_emojier_ebox_row_finalize (GObject * obj); static GType ibus_emojier_ebox_row_get_type_once (void); static void _vala_ibus_emojier_ebox_row_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec); static void _vala_ibus_emojier_ebox_row_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec); static GType ibus_emojier_escrolled_window_get_type_once (void); static GType ibus_emojier_egrid_get_type_once (void); static void ibus_emojier_ewhite_label_real_get_preferred_width (GtkWidget* base, gint* minimum_width, gint* natural_width); static void ibus_emojier_ewhite_label_real_get_preferred_height (GtkWidget* base, gint* minimum_height, gint* natural_height); static void ibus_emojier_ewhite_label_finalize (GObject * obj); static GType ibus_emojier_ewhite_label_get_type_once (void); static GType ibus_emojier_eselected_label_get_type_once (void); static GType ibus_emojier_egold_label_get_type_once (void); static GType ibus_emojier_epadded_label_get_type (void) G_GNUC_CONST G_GNUC_UNUSED; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IBusEmojierEPaddedLabel, g_object_unref) static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_new (const gchar* text, GtkAlign align); static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_construct (GType object_type, const gchar* text, GtkAlign align); static GType ibus_emojier_epadded_label_get_type_once (void); GType icon_widget_get_type (void) G_GNUC_CONST; G_DEFINE_AUTOPTR_CLEANUP_FUNC (IconWidget, g_object_unref) 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 GType ibus_emojier_epadded_label_box_get_type_once (void); 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 GType ibus_emojier_load_progress_object_get_type_once (void); static void ibus_emojier_finalize (GObject * obj); static GType ibus_emojier_get_type_once (void); 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 gunichar IBUS_EMOJIER_EMOJI_VARIANT_LIST[6] = {(gunichar) 0x1f3fb, (gunichar) 0x1f3fc, (gunichar) 0x1f3fd, (gunichar) 0x1f3fe, (gunichar) 0x1f3ff, (gunichar) 0x200d}; static inline gpointer ibus_emojier_get_instance_private (IBusEmojier* self) { return G_STRUCT_MEMBER_P (self, IBusEmojier_private_offset); } static GType ibus_emojier_travel_direction_get_type_once (void) { static const GEnumValue values[] = {{IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, "IBUS_EMOJIER_TRAVEL_DIRECTION_NONE", "none"}, {IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD, "IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD", "backward"}, {0, NULL, NULL}}; GType ibus_emojier_travel_direction_type_id; ibus_emojier_travel_direction_type_id = g_enum_register_static ("IBusEmojierTravelDirection", values); return ibus_emojier_travel_direction_type_id; } static GType ibus_emojier_travel_direction_get_type (void) { static volatile gsize ibus_emojier_travel_direction_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_travel_direction_type_id__volatile)) { GType ibus_emojier_travel_direction_type_id; ibus_emojier_travel_direction_type_id = ibus_emojier_travel_direction_get_type_once (); g_once_init_leave (&ibus_emojier_travel_direction_type_id__volatile, ibus_emojier_travel_direction_type_id); } return ibus_emojier_travel_direction_type_id__volatile; } static void _ibus_emojier_check_action_variant_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self) { ibus_emojier_check_action_variant_cb ((IBusEmojier*) self, _sender, parameter); } static void _ibus_emojier_action_close_cb_g_simple_action_activate (GSimpleAction* _sender, GVariant* parameter, gpointer self) { ibus_emojier_action_close_cb ((IBusEmojier*) self, _sender, parameter); } static void __lambda7_ (IBusEmojier* self) { gboolean _tmp0_ = FALSE; GMainLoop* _tmp1_; _tmp1_ = self->priv->m_loop; if (_tmp1_ != NULL) { GMainLoop* _tmp2_; _tmp2_ = self->priv->m_loop; _tmp0_ = g_main_loop_is_running (_tmp2_); } else { _tmp0_ = FALSE; } if (_tmp0_) { GMainLoop* _tmp3_; _tmp3_ = self->priv->m_loop; g_main_loop_quit (_tmp3_); } } static void ___lambda7__gtk_widget_hide (GtkWidget* _sender, gpointer self) { __lambda7_ ((IBusEmojier*) self); } static void __lambda8_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a) { g_return_if_fail (w != NULL); g_return_if_fail (a != NULL); ibus_emojier_adjust_window_position (self); } static void ___lambda8__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self) { __lambda8_ ((IBusEmojier*) self, _sender, allocation); } IBusEmojier* ibus_emojier_construct (GType object_type) { IBusEmojier * self = NULL; GSimpleAction* action = NULL; GVariant* _tmp0_; GVariant* _tmp1_; GSimpleAction* _tmp2_; GSimpleAction* _tmp3_; GSimpleAction* _tmp4_; GSimpleAction* _tmp5_; GSimpleAction* _tmp6_; GSimpleAction* _tmp7_; GSimpleAction* _tmp8_; const gchar* _tmp9_; const gchar* _tmp11_; gchar** _tmp13_; gint _tmp13__length1; gchar** _tmp15_; gint _tmp15__length1; GtkBox* _tmp17_; GtkBox* _tmp18_; IBusLookupTable* _tmp19_; IBusLookupTable* _tmp20_; GHashTable* _tmp21_; GObject* _tmp22_; GObject* _tmp23_; self = (IBusEmojier*) g_object_new (object_type, "type", GTK_WINDOW_POPUP, NULL); _tmp0_ = g_variant_new_boolean (ibus_emojier_m_show_emoji_variant); g_variant_ref_sink (_tmp0_); _tmp1_ = _tmp0_; _tmp2_ = g_simple_action_new_stateful ("variant", NULL, _tmp1_); _tmp3_ = _tmp2_; _g_variant_unref0 (_tmp1_); action = _tmp3_; _tmp4_ = action; g_signal_connect_object (_tmp4_, "activate", (GCallback) _ibus_emojier_check_action_variant_cb_g_simple_action_activate, self, 0); _tmp5_ = action; g_action_map_add_action ((GActionMap*) self, (GAction*) _tmp5_); _tmp6_ = g_simple_action_new ("close", NULL); _g_object_unref0 (action); action = _tmp6_; _tmp7_ = action; g_signal_connect_object (_tmp7_, "activate", (GCallback) _ibus_emojier_action_close_cb_g_simple_action_activate, self, 0); _tmp8_ = action; g_action_map_add_action ((GActionMap*) self, (GAction*) _tmp8_); _tmp9_ = ibus_emojier_m_current_lang_id; if (_tmp9_ == NULL) { gchar* _tmp10_; _tmp10_ = g_strdup ("en"); _g_free0 (ibus_emojier_m_current_lang_id); ibus_emojier_m_current_lang_id = _tmp10_; } _tmp11_ = ibus_emojier_m_emoji_font_family; if (_tmp11_ == NULL) { gchar* _tmp12_; _tmp12_ = g_strdup ("Monospace"); _g_free0 (ibus_emojier_m_emoji_font_family); ibus_emojier_m_emoji_font_family = _tmp12_; ibus_emojier_m_emoji_font_changed = TRUE; } if (ibus_emojier_m_emoji_font_size == 0) { ibus_emojier_m_emoji_font_size = 16; ibus_emojier_m_emoji_font_changed = TRUE; } _tmp13_ = ibus_emojier_m_favorites; _tmp13__length1 = ibus_emojier_m_favorites_length1; if (_tmp13_ == NULL) { gchar** _tmp14_; _tmp14_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorites = (_vala_array_free (ibus_emojier_m_favorites, ibus_emojier_m_favorites_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorites = _tmp14_; ibus_emojier_m_favorites_length1 = 0; _ibus_emojier_m_favorites_size_ = ibus_emojier_m_favorites_length1; } _tmp15_ = ibus_emojier_m_favorite_annotations; _tmp15__length1 = ibus_emojier_m_favorite_annotations_length1; if (_tmp15_ == NULL) { gchar** _tmp16_; _tmp16_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorite_annotations = (_vala_array_free (ibus_emojier_m_favorite_annotations, ibus_emojier_m_favorite_annotations_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorite_annotations = _tmp16_; ibus_emojier_m_favorite_annotations_length1 = 0; _ibus_emojier_m_favorite_annotations_size_ = ibus_emojier_m_favorite_annotations_length1; } ibus_emojier_set_css_data (self); _tmp17_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); g_object_ref_sink (_tmp17_); _g_object_unref0 (self->priv->m_vbox); self->priv->m_vbox = _tmp17_; _tmp18_ = self->priv->m_vbox; gtk_container_add ((GtkContainer*) self, (GtkWidget*) _tmp18_); _tmp19_ = ibus_lookup_table_new ((guint) 1, (guint) 0, TRUE, TRUE); g_object_ref_sink (_tmp19_); _g_object_unref0 (self->priv->m_lookup_table); self->priv->m_lookup_table = _tmp19_; _tmp20_ = self->priv->m_lookup_table; ibus_lookup_table_set_page_size (_tmp20_, IBUS_EMOJIER_EMOJI_GRID_PAGE * IBUS_EMOJIER_EMOJI_GRID_PAGE); g_signal_connect_object ((GtkWidget*) self, "hide", (GCallback) ___lambda7__gtk_widget_hide, self, 0); g_signal_connect_object ((GtkWidget*) self, "size-allocate", (GCallback) ___lambda8__gtk_widget_size_allocate, self, 0); _tmp21_ = ibus_emojier_m_annotation_to_emojis_dict; if (_tmp21_ == NULL) { ibus_emojier_reload_emoji_dict (); } _tmp22_ = ibus_emojier_get_load_progress_object (); _tmp23_ = _tmp22_; _g_object_unref0 (_tmp23_); _g_object_unref0 (action); return self; } IBusEmojier* ibus_emojier_new (void) { return ibus_emojier_construct (TYPE_IBUS_EMOJIER); } static void ibus_emojier_reload_emoji_dict (void) { const gchar* _tmp0_; GList* annotations = NULL; GHashTable* _tmp10_; GList* _tmp11_; GList* _tmp12_; ibus_emojier_init_emoji_dict (); ibus_emojier_make_emoji_dict ("en"); _tmp0_ = ibus_emojier_m_current_lang_id; if (g_strcmp0 (_tmp0_, "en") != 0) { gchar** lang_ids = NULL; const gchar* _tmp1_; gchar** _tmp2_; gchar** _tmp3_; gint lang_ids_length1; gint _lang_ids_size_; gchar** _tmp4_; gint _tmp4__length1; const gchar* _tmp9_; _tmp1_ = ibus_emojier_m_current_lang_id; _tmp3_ = _tmp2_ = g_strsplit (_tmp1_, "_", 0); lang_ids = _tmp3_; lang_ids_length1 = _vala_array_length (_tmp2_); _lang_ids_size_ = lang_ids_length1; _tmp4_ = lang_ids; _tmp4__length1 = lang_ids_length1; if (_tmp4__length1 > 1) { gchar* sub_id = NULL; gchar** _tmp5_; gint _tmp5__length1; const gchar* _tmp6_; gchar* _tmp7_; const gchar* _tmp8_; _tmp5_ = lang_ids; _tmp5__length1 = lang_ids_length1; _tmp6_ = _tmp5_[0]; _tmp7_ = g_strdup (_tmp6_); sub_id = _tmp7_; _tmp8_ = sub_id; ibus_emojier_make_emoji_dict (_tmp8_); _g_free0 (sub_id); } _tmp9_ = ibus_emojier_m_current_lang_id; ibus_emojier_make_emoji_dict (_tmp9_); lang_ids = (_vala_array_free (lang_ids, lang_ids_length1, (GDestroyNotify) g_free), NULL); } ibus_emojier_add_variants_to_component (); _tmp10_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp11_ = g_hash_table_get_keys (_tmp10_); annotations = _tmp11_; _tmp12_ = annotations; { GList* annotation_collection = NULL; GList* annotation_it = NULL; annotation_collection = _tmp12_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { const gchar* annotation = NULL; annotation = (const gchar*) annotation_it->data; { const gchar* _tmp13_; gint _tmp14_; gint _tmp15_; _tmp13_ = annotation; _tmp14_ = strlen (_tmp13_); _tmp15_ = _tmp14_; if (ibus_emojier_m_emoji_max_seq_len < _tmp15_) { const gchar* _tmp16_; gint _tmp17_; gint _tmp18_; _tmp16_ = annotation; _tmp17_ = strlen (_tmp16_); _tmp18_ = _tmp17_; ibus_emojier_m_emoji_max_seq_len = _tmp18_; } } } } ibus_emojier_update_favorite_emoji_dict (); (annotations == NULL) ? NULL : (annotations = (g_list_free (annotations), NULL)); } static void _g_free0_ (gpointer var) { var = (g_free (var), NULL); } static inline void _g_slist_free__g_free0_ (GSList* self) { g_slist_free_full (self, (GDestroyNotify) _g_free0_); } static void __g_slist_free__g_free0_0_ (gpointer var) { (var == NULL) ? NULL : (var = (_g_slist_free__g_free0_ (var), NULL)); } static void _g_object_unref0_ (gpointer var) { (var == NULL) ? NULL : (var = (g_object_unref (var), NULL)); } static void _g_slist_free0_ (gpointer var) { (var == NULL) ? NULL : (var = (g_slist_free (var), NULL)); } static void ibus_emojier_init_emoji_dict (void) { GHashFunc _tmp0_; GEqualFunc _tmp1_; GHashTable* _tmp2_; GHashFunc _tmp3_; GEqualFunc _tmp4_; GHashTable* _tmp5_; GHashFunc _tmp6_; GEqualFunc _tmp7_; GHashTable* _tmp8_; GHashFunc _tmp9_; GEqualFunc _tmp10_; GHashTable* _tmp11_; GHashTable* _tmp12_; GHashTable* _tmp16_; _tmp0_ = g_str_hash; _tmp1_ = g_str_equal; _tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _g_free0_, __g_slist_free__g_free0_0_); _g_hash_table_unref0 (ibus_emojier_m_annotation_to_emojis_dict); ibus_emojier_m_annotation_to_emojis_dict = _tmp2_; _tmp3_ = g_str_hash; _tmp4_ = g_str_equal; _tmp5_ = g_hash_table_new_full (_tmp3_, _tmp4_, _g_free0_, _g_object_unref0_); _g_hash_table_unref0 (ibus_emojier_m_emoji_to_data_dict); ibus_emojier_m_emoji_to_data_dict = _tmp5_; _tmp6_ = g_str_hash; _tmp7_ = g_str_equal; _tmp8_ = g_hash_table_new_full (_tmp6_, _tmp7_, _g_free0_, __g_slist_free__g_free0_0_); _g_hash_table_unref0 (ibus_emojier_m_category_to_emojis_dict); ibus_emojier_m_category_to_emojis_dict = _tmp8_; _tmp9_ = g_str_hash; _tmp10_ = g_str_equal; _tmp11_ = g_hash_table_new_full (_tmp9_, _tmp10_, _g_free0_, __g_slist_free__g_free0_0_); _g_hash_table_unref0 (ibus_emojier_m_emoji_to_emoji_variants_dict); ibus_emojier_m_emoji_to_emoji_variants_dict = _tmp11_; _tmp12_ = ibus_emojier_m_unicode_to_data_dict; if (_tmp12_ == NULL) { GHashFunc _tmp13_; GEqualFunc _tmp14_; GHashTable* _tmp15_; _tmp13_ = g_direct_hash; _tmp14_ = g_direct_equal; _tmp15_ = g_hash_table_new_full (_tmp13_, _tmp14_, NULL, _g_object_unref0_); _g_hash_table_unref0 (ibus_emojier_m_unicode_to_data_dict); ibus_emojier_m_unicode_to_data_dict = _tmp15_; } _tmp16_ = ibus_emojier_m_name_to_unicodes_dict; if (_tmp16_ == NULL) { GHashFunc _tmp17_; GEqualFunc _tmp18_; GHashTable* _tmp19_; _tmp17_ = g_str_hash; _tmp18_ = g_str_equal; _tmp19_ = g_hash_table_new_full (_tmp17_, _tmp18_, _g_free0_, _g_slist_free0_); _g_hash_table_unref0 (ibus_emojier_m_name_to_unicodes_dict); ibus_emojier_m_name_to_unicodes_dict = _tmp19_; } } static inline void _g_slist_free__g_object_unref0_ (GSList* self) { g_slist_free_full (self, (GDestroyNotify) _g_object_unref0_); } static gpointer _g_object_ref0 (gpointer self) { return self ? g_object_ref (self) : NULL; } static void ibus_emojier_make_emoji_dict (const gchar* lang) { GSList* emoji_list = NULL; gchar* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; GSList* _tmp4_; GSList* _tmp5_; GSList* _tmp6_; GSList* _tmp7_; g_return_if_fail (lang != NULL); _tmp0_ = g_strconcat (PKGDATADIR "/dicts/emoji-", lang, NULL); _tmp1_ = _tmp0_; _tmp2_ = g_strconcat (_tmp1_, ".dict", NULL); _tmp3_ = _tmp2_; _tmp4_ = ibus_emoji_data_load (_tmp3_); _tmp5_ = _tmp4_; _g_free0 (_tmp3_); _g_free0 (_tmp1_); emoji_list = _tmp5_; _tmp6_ = emoji_list; if (_tmp6_ == NULL) { (emoji_list == NULL) ? NULL : (emoji_list = (_g_slist_free__g_object_unref0_ (emoji_list), NULL)); return; } _tmp7_ = emoji_list; { GSList* data_collection = NULL; GSList* data_it = NULL; data_collection = _tmp7_; for (data_it = data_collection; data_it != NULL; data_it = data_it->next) { IBusEmojiData* _tmp8_; IBusEmojiData* data = NULL; _tmp8_ = _g_object_ref0 ((IBusEmojiData*) data_it->data); data = _tmp8_; { IBusEmojiData* _tmp9_; IBusEmojiData* _tmp10_; IBusEmojiData* _tmp11_; _tmp9_ = data; ibus_emojier_update_emoji_to_data_dict (_tmp9_, lang); _tmp10_ = data; ibus_emojier_update_annotation_to_emojis_dict (_tmp10_); _tmp11_ = data; ibus_emojier_update_category_to_emojis_dict (_tmp11_, lang); _g_object_unref0 (data); } } } (emoji_list == NULL) ? NULL : (emoji_list = (_g_slist_free__g_object_unref0_ (emoji_list), NULL)); } static void ibus_emojier_add_variants_to_component (void) { gchar* category = NULL; gchar* _tmp0_; GSList* hits = NULL; GHashTable* _tmp1_; const gchar* _tmp2_; gconstpointer _tmp3_; GSList* _tmp4_; GSList* _tmp9_; GSList* emoji_list = NULL; GSList* annotations = NULL; gchar* _tmp10_; IBusEmojiData* _data = NULL; GSList* _tmp11_; const gchar* _tmp12_; IBusEmojiData* _tmp13_; IBusEmojiData* _tmp14_; IBusEmojiData* _tmp15_; gchar* _tmp16_; gchar* _tmp17_; gchar* _tmp18_; GSList* _tmp19_; const gchar* _tmp20_; IBusEmojiData* _tmp21_; IBusEmojiData* _tmp22_; IBusEmojiData* _tmp23_; gchar* _tmp24_; gchar* _tmp25_; gchar* _tmp26_; GSList* _tmp27_; const gchar* _tmp28_; IBusEmojiData* _tmp29_; IBusEmojiData* _tmp30_; IBusEmojiData* _tmp31_; GSList* _tmp32_; _tmp0_ = g_strdup ("Component"); category = _tmp0_; _tmp1_ = ibus_emojier_m_category_to_emojis_dict; _tmp2_ = category; _tmp3_ = g_hash_table_lookup (_tmp1_, _tmp2_); hits = (GSList*) _tmp3_; _tmp4_ = hits; if (_tmp4_ == NULL) { gchar* _tmp5_; GHashTable* _tmp6_; const gchar* _tmp7_; gconstpointer _tmp8_; _tmp5_ = g_strdup ("component"); _g_free0 (category); category = _tmp5_; _tmp6_ = ibus_emojier_m_category_to_emojis_dict; _tmp7_ = category; _tmp8_ = g_hash_table_lookup (_tmp6_, _tmp7_); hits = (GSList*) _tmp8_; } _tmp9_ = hits; if (_tmp9_ == NULL) { _g_free0 (category); return; } emoji_list = NULL; annotations = NULL; _tmp10_ = g_strdup ("zero"); annotations = g_slist_append (annotations, _tmp10_); _tmp11_ = annotations; _tmp12_ = category; _tmp13_ = ibus_emoji_data_new ("emoji", "\u200d", "annotations", _tmp11_, "description", "ZERO WIDTH JOINER", "category", _tmp12_, NULL); g_object_ref_sink (_tmp13_); _g_object_unref0 (_data); _data = _tmp13_; _tmp14_ = _data; _tmp15_ = _g_object_ref0 (_tmp14_); emoji_list = g_slist_append (emoji_list, _tmp15_); (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); annotations = NULL; _tmp16_ = g_strdup ("text"); annotations = g_slist_append (annotations, _tmp16_); _tmp17_ = g_strdup ("variation"); annotations = g_slist_append (annotations, _tmp17_); _tmp18_ = g_strdup ("selector"); annotations = g_slist_append (annotations, _tmp18_); _tmp19_ = annotations; _tmp20_ = category; _tmp21_ = ibus_emoji_data_new ("emoji", "\ufe0e", "annotations", _tmp19_, "description", "VARIATION SELECTOR-15", "category", _tmp20_, NULL); g_object_ref_sink (_tmp21_); _g_object_unref0 (_data); _data = _tmp21_; _tmp22_ = _data; _tmp23_ = _g_object_ref0 (_tmp22_); emoji_list = g_slist_append (emoji_list, _tmp23_); (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); annotations = NULL; _tmp24_ = g_strdup ("emoji"); annotations = g_slist_append (annotations, _tmp24_); _tmp25_ = g_strdup ("variation"); annotations = g_slist_append (annotations, _tmp25_); _tmp26_ = g_strdup ("selector"); annotations = g_slist_append (annotations, _tmp26_); _tmp27_ = annotations; _tmp28_ = category; _tmp29_ = ibus_emoji_data_new ("emoji", "\ufe0f", "annotations", _tmp27_, "description", "VARIATION SELECTOR-16", "category", _tmp28_, NULL); g_object_ref_sink (_tmp29_); _g_object_unref0 (_data); _data = _tmp29_; _tmp30_ = _data; _tmp31_ = _g_object_ref0 (_tmp30_); emoji_list = g_slist_append (emoji_list, _tmp31_); _tmp32_ = emoji_list; { GSList* data_collection = NULL; GSList* data_it = NULL; data_collection = _tmp32_; for (data_it = data_collection; data_it != NULL; data_it = data_it->next) { IBusEmojiData* _tmp33_; IBusEmojiData* data = NULL; _tmp33_ = _g_object_ref0 ((IBusEmojiData*) data_it->data); data = _tmp33_; { IBusEmojiData* _tmp34_; IBusEmojiData* _tmp35_; IBusEmojiData* _tmp36_; _tmp34_ = data; ibus_emojier_update_emoji_to_data_dict (_tmp34_, "en"); _tmp35_ = data; ibus_emojier_update_annotation_to_emojis_dict (_tmp35_); _tmp36_ = data; ibus_emojier_update_category_to_emojis_dict (_tmp36_, "en"); _g_object_unref0 (data); } } } _g_object_unref0 (_data); (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); (emoji_list == NULL) ? NULL : (emoji_list = (_g_slist_free__g_object_unref0_ (emoji_list), NULL)); _g_free0 (category); } static gpointer _g_strdup_gcopy_func (gconstpointer src, gpointer self) { gpointer result; result = g_strdup ((const gchar*) src); return result; } static void ibus_emojier_update_annotation_to_emojis_dict (IBusEmojiData* data) { gchar* emoji = NULL; const gchar* _tmp0_; gchar* _tmp1_; GSList* annotations = NULL; GSList* _tmp2_; GSList* _tmp3_; g_return_if_fail (data != NULL); _tmp0_ = ibus_emoji_data_get_emoji (data); _tmp1_ = g_strdup (_tmp0_); emoji = _tmp1_; _tmp2_ = ibus_emoji_data_get_annotations (data); annotations = _tmp2_; _tmp3_ = annotations; { GSList* annotation_collection = NULL; GSList* annotation_it = NULL; annotation_collection = _tmp3_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { gchar* _tmp4_; gchar* annotation = NULL; _tmp4_ = g_strdup ((const gchar*) annotation_it->data); annotation = _tmp4_; { gboolean has_emoji = FALSE; GSList* hits = NULL; GHashTable* _tmp5_; const gchar* _tmp6_; gconstpointer _tmp7_; GSList* _tmp8_; GSList* _tmp9_; has_emoji = FALSE; _tmp5_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp6_ = annotation; _tmp7_ = g_hash_table_lookup (_tmp5_, _tmp6_); _tmp8_ = g_slist_copy_deep ((GSList*) _tmp7_, _g_strdup_gcopy_func, NULL); hits = _tmp8_; _tmp9_ = hits; { GSList* hit_emoji_collection = NULL; GSList* hit_emoji_it = NULL; hit_emoji_collection = _tmp9_; for (hit_emoji_it = hit_emoji_collection; hit_emoji_it != NULL; hit_emoji_it = hit_emoji_it->next) { gchar* _tmp10_; gchar* hit_emoji = NULL; _tmp10_ = g_strdup ((const gchar*) hit_emoji_it->data); hit_emoji = _tmp10_; { const gchar* _tmp11_; const gchar* _tmp12_; _tmp11_ = hit_emoji; _tmp12_ = emoji; if (g_strcmp0 (_tmp11_, _tmp12_) == 0) { has_emoji = TRUE; _g_free0 (hit_emoji); break; } _g_free0 (hit_emoji); } } } if (!has_emoji) { const gchar* _tmp13_; gchar* _tmp14_; GHashTable* _tmp15_; const gchar* _tmp16_; gchar* _tmp17_; GSList* _tmp18_; GSList* _tmp19_; _tmp13_ = emoji; _tmp14_ = g_strdup (_tmp13_); hits = g_slist_append (hits, _tmp14_); _tmp15_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp16_ = annotation; _tmp17_ = g_strdup (_tmp16_); _tmp18_ = hits; _tmp19_ = g_slist_copy_deep (_tmp18_, _g_strdup_gcopy_func, NULL); g_hash_table_replace (_tmp15_, _tmp17_, _tmp19_); } (hits == NULL) ? NULL : (hits = (_g_slist_free__g_free0_ (hits), NULL)); _g_free0 (annotation); } } } _g_free0 (emoji); } static gunichar string_get_char (const gchar* self, glong index) { gunichar result = 0U; g_return_val_if_fail (self != NULL, 0U); result = g_utf8_get_char (((gchar*) self) + index); return result; } static gchar* ibus_emojier_utf8_code_point (const gchar* str) { GString* buff = NULL; GString* _tmp0_; gint length = 0; GString* _tmp16_; const gchar* _tmp17_; gchar* _tmp18_; gchar* result = NULL; g_return_val_if_fail (str != NULL, NULL); _tmp0_ = g_string_new (""); buff = _tmp0_; length = g_utf8_strlen (str, (gssize) -1); if (length == 0) { GString* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; GString* _tmp4_; const gchar* _tmp5_; gchar* _tmp6_; _tmp1_ = buff; _tmp2_ = g_strdup_printf ("U+%04X", (guint) 0); _tmp3_ = _tmp2_; g_string_append (_tmp1_, _tmp3_); _g_free0 (_tmp3_); _tmp4_ = buff; _tmp5_ = _tmp4_->str; _tmp6_ = g_strdup (_tmp5_); result = _tmp6_; _g_string_free0 (buff); return result; } { gint i = 0; i = 0; { gboolean _tmp7_ = FALSE; _tmp7_ = TRUE; while (TRUE) { gunichar ch = 0U; const gchar* _tmp15_; if (!_tmp7_) { gint _tmp8_; _tmp8_ = i; i = _tmp8_ + 1; } _tmp7_ = FALSE; if (!(i < length)) { break; } ch = string_get_char (str, (glong) 0); if (i == 0) { GString* _tmp9_; gchar* _tmp10_; gchar* _tmp11_; _tmp9_ = buff; _tmp10_ = g_strdup_printf ("U+%04X", (guint) ch); _tmp11_ = _tmp10_; g_string_append (_tmp9_, _tmp11_); _g_free0 (_tmp11_); } else { GString* _tmp12_; gchar* _tmp13_; gchar* _tmp14_; _tmp12_ = buff; _tmp13_ = g_strdup_printf (" %04X", (guint) ch); _tmp14_ = _tmp13_; g_string_append (_tmp12_, _tmp14_); _g_free0 (_tmp14_); } _tmp15_ = g_utf8_next_char (str); str = _tmp15_; } } } _tmp16_ = buff; _tmp17_ = _tmp16_->str; _tmp18_ = g_strdup (_tmp17_); result = _tmp18_; _g_string_free0 (buff); return result; } static gchar* ibus_emojier_utf8_entity (const gchar* str) { GString* buff = NULL; GString* _tmp0_; gint length = 0; GString* _tmp8_; const gchar* _tmp9_; gchar* _tmp10_; gchar* result = NULL; g_return_val_if_fail (str != NULL, NULL); _tmp0_ = g_string_new (""); buff = _tmp0_; length = g_utf8_strlen (str, (gssize) -1); { gint i = 0; i = 0; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { gunichar ch = 0U; const gchar* _tmp7_; if (!_tmp1_) { gint _tmp2_; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; if (!(i < length)) { break; } ch = string_get_char (str, (glong) 0); switch (ch) { case '<': { GString* _tmp3_; _tmp3_ = buff; g_string_append (_tmp3_, "<"); break; } case '>': { GString* _tmp4_; _tmp4_ = buff; g_string_append (_tmp4_, ">"); break; } case '&': { GString* _tmp5_; _tmp5_ = buff; g_string_append (_tmp5_, "&"); break; } default: { GString* _tmp6_; _tmp6_ = buff; g_string_append_unichar (_tmp6_, ch); break; } } _tmp7_ = g_utf8_next_char (str); str = _tmp7_; } } } _tmp8_ = buff; _tmp9_ = _tmp8_->str; _tmp10_ = g_strdup (_tmp9_); result = _tmp10_; _g_string_free0 (buff); return result; } static gint string_index_of (const gchar* self, const gchar* needle, gint start_index) { gchar* _result_ = NULL; gchar* _tmp0_; gchar* _tmp1_; gint result = 0; g_return_val_if_fail (self != NULL, 0); g_return_val_if_fail (needle != NULL, 0); _tmp0_ = strstr (((gchar*) self) + start_index, (gchar*) needle); _result_ = _tmp0_; _tmp1_ = _result_; if (_tmp1_ != NULL) { gchar* _tmp2_; _tmp2_ = _result_; result = (gint) (_tmp2_ - ((gchar*) self)); return result; } else { result = -1; return result; } } static glong string_strnlen (gchar* str, glong maxlen) { gchar* end = NULL; gchar* _tmp0_; gchar* _tmp1_; glong result = 0L; _tmp0_ = memchr (str, 0, (gsize) maxlen); end = _tmp0_; _tmp1_ = end; if (_tmp1_ == NULL) { result = maxlen; return result; } else { gchar* _tmp2_; _tmp2_ = end; result = (glong) (_tmp2_ - str); return result; } } static gchar* string_substring (const gchar* self, glong offset, glong len) { glong string_length = 0L; gboolean _tmp0_ = FALSE; gchar* _tmp3_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); if (offset >= ((glong) 0)) { _tmp0_ = len >= ((glong) 0); } else { _tmp0_ = FALSE; } if (_tmp0_) { string_length = string_strnlen ((gchar*) self, offset + len); } else { gint _tmp1_; gint _tmp2_; _tmp1_ = strlen (self); _tmp2_ = _tmp1_; string_length = (glong) _tmp2_; } if (offset < ((glong) 0)) { offset = string_length + offset; g_return_val_if_fail (offset >= ((glong) 0), NULL); } else { g_return_val_if_fail (offset <= string_length, NULL); } if (len < ((glong) 0)) { len = string_length - offset; } g_return_val_if_fail ((offset + len) <= string_length, NULL); _tmp3_ = g_strndup (((gchar*) self) + offset, (gsize) len); result = _tmp3_; return result; } static void ibus_emojier_update_annotations_with_description (IBusEmojiData* data, const gchar* description) { GSList* annotations = NULL; GSList* _tmp0_; GSList* _tmp1_; gboolean update_annotations = FALSE; gchar* former = NULL; gchar* later = NULL; gint index = 0; gchar** words = NULL; const gchar* _tmp11_; gchar** _tmp12_; gchar** _tmp13_; gint words_length1; gint _words_size_; gboolean _tmp14_ = FALSE; gchar** _tmp15_; gint _tmp15__length1; g_return_if_fail (data != NULL); g_return_if_fail (description != NULL); _tmp0_ = ibus_emoji_data_get_annotations (data); _tmp1_ = g_slist_copy_deep (_tmp0_, _g_strdup_gcopy_func, NULL); annotations = _tmp1_; update_annotations = FALSE; former = NULL; later = NULL; index = string_index_of (description, ": ", 0); if (index > 0) { gchar* _tmp2_; GSList* _tmp3_; const gchar* _tmp4_; GCompareFunc _tmp5_; GSList* _tmp6_; gchar* _tmp9_; _tmp2_ = string_substring (description, (glong) 0, (glong) index); _g_free0 (former); former = _tmp2_; _tmp3_ = annotations; _tmp4_ = former; _tmp5_ = ((GCompareFunc) g_strcmp0); _tmp6_ = g_slist_find_custom (_tmp3_, _tmp4_, _tmp5_); if (_tmp6_ == NULL) { const gchar* _tmp7_; gchar* _tmp8_; _tmp7_ = former; _tmp8_ = g_strdup (_tmp7_); annotations = g_slist_append (annotations, _tmp8_); update_annotations = TRUE; } _tmp9_ = string_substring (description, (glong) (index + 2), (glong) -1); _g_free0 (later); later = _tmp9_; } else { gchar* _tmp10_; _tmp10_ = g_strdup (description); _g_free0 (later); later = _tmp10_; } _tmp11_ = later; _tmp13_ = _tmp12_ = g_strsplit (_tmp11_, " ", 0); words = _tmp13_; words_length1 = _vala_array_length (_tmp12_); _words_size_ = words_length1; _tmp15_ = words; _tmp15__length1 = words_length1; if (_tmp15__length1 < 3) { GSList* _tmp16_; const gchar* _tmp17_; GCompareFunc _tmp18_; GSList* _tmp19_; _tmp16_ = annotations; _tmp17_ = later; _tmp18_ = ((GCompareFunc) g_strcmp0); _tmp19_ = g_slist_find_custom (_tmp16_, _tmp17_, _tmp18_); _tmp14_ = _tmp19_ == NULL; } else { _tmp14_ = FALSE; } if (_tmp14_) { const gchar* _tmp20_; gchar* _tmp21_; _tmp20_ = later; _tmp21_ = g_strdup (_tmp20_); annotations = g_slist_append (annotations, _tmp21_); update_annotations = TRUE; } if (update_annotations) { GSList* _tmp22_; GSList* _tmp23_; _tmp22_ = annotations; _tmp23_ = g_slist_copy_deep (_tmp22_, _g_strdup_gcopy_func, NULL); ibus_emoji_data_set_annotations (data, _tmp23_); } words = (_vala_array_free (words, words_length1, (GDestroyNotify) g_free), NULL); _g_free0 (later); _g_free0 (former); (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); } static void ibus_emojier_update_emoji_to_data_dict (IBusEmojiData* data, const gchar* lang) { gchar* emoji = NULL; const gchar* _tmp0_; gchar* _tmp1_; g_return_if_fail (data != NULL); g_return_if_fail (lang != NULL); _tmp0_ = ibus_emoji_data_get_emoji (data); _tmp1_ = g_strdup (_tmp0_); emoji = _tmp1_; if (g_strcmp0 (lang, "en") == 0) { gchar* description = NULL; const gchar* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; GHashTable* _tmp5_; const gchar* _tmp6_; gchar* _tmp7_; IBusEmojiData* _tmp8_; _tmp2_ = ibus_emoji_data_get_description (data); _tmp3_ = g_utf8_strdown (_tmp2_, (gssize) -1); description = _tmp3_; _tmp4_ = description; ibus_emojier_update_annotations_with_description (data, _tmp4_); _tmp5_ = ibus_emojier_m_emoji_to_data_dict; _tmp6_ = emoji; _tmp7_ = g_strdup (_tmp6_); _tmp8_ = _g_object_ref0 (data); g_hash_table_replace (_tmp5_, _tmp7_, _tmp8_); _g_free0 (description); } else { IBusEmojiData* en_data = NULL; GHashTable* _tmp9_; const gchar* _tmp10_; gconstpointer _tmp11_; IBusEmojiData* _tmp12_; gchar* trans_description = NULL; const gchar* _tmp17_; gchar* _tmp18_; IBusEmojiData* _tmp19_; const gchar* _tmp20_; const gchar* _tmp21_; gchar* _tmp22_; const gchar* _tmp23_; GSList* annotations = NULL; GSList* _tmp24_; GSList* en_annotations = NULL; IBusEmojiData* _tmp25_; GSList* _tmp26_; GSList* _tmp27_; IBusEmojiData* _tmp35_; GSList* _tmp36_; GSList* _tmp37_; en_data = NULL; _tmp9_ = ibus_emojier_m_emoji_to_data_dict; _tmp10_ = emoji; _tmp11_ = g_hash_table_lookup (_tmp9_, _tmp10_); en_data = (IBusEmojiData*) _tmp11_; _tmp12_ = en_data; if (_tmp12_ == NULL) { GHashTable* _tmp13_; const gchar* _tmp14_; gchar* _tmp15_; IBusEmojiData* _tmp16_; _tmp13_ = ibus_emojier_m_emoji_to_data_dict; _tmp14_ = emoji; _tmp15_ = g_strdup (_tmp14_); _tmp16_ = _g_object_ref0 (data); g_hash_table_insert (_tmp13_, _tmp15_, _tmp16_); _g_free0 (emoji); return; } _tmp17_ = ibus_emoji_data_get_description (data); _tmp18_ = g_strdup (_tmp17_); trans_description = _tmp18_; _tmp19_ = en_data; _tmp20_ = trans_description; ibus_emoji_data_set_description (_tmp19_, _tmp20_); _tmp21_ = trans_description; _tmp22_ = g_utf8_strdown (_tmp21_, (gssize) -1); _g_free0 (trans_description); trans_description = _tmp22_; _tmp23_ = trans_description; ibus_emojier_update_annotations_with_description (data, _tmp23_); _tmp24_ = ibus_emoji_data_get_annotations (data); annotations = _tmp24_; _tmp25_ = en_data; _tmp26_ = ibus_emoji_data_get_annotations (_tmp25_); en_annotations = _tmp26_; _tmp27_ = en_annotations; { GSList* annotation_collection = NULL; GSList* annotation_it = NULL; annotation_collection = _tmp27_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { gchar* _tmp28_; gchar* annotation = NULL; _tmp28_ = g_strdup ((const gchar*) annotation_it->data); annotation = _tmp28_; { GSList* _tmp29_; const gchar* _tmp30_; GCompareFunc _tmp31_; GSList* _tmp32_; _tmp29_ = annotations; _tmp30_ = annotation; _tmp31_ = ((GCompareFunc) g_strcmp0); _tmp32_ = g_slist_find_custom (_tmp29_, _tmp30_, _tmp31_); if (_tmp32_ == NULL) { const gchar* _tmp33_; gchar* _tmp34_; _tmp33_ = annotation; _tmp34_ = g_strdup (_tmp33_); annotations = g_slist_append (annotations, _tmp34_); } _g_free0 (annotation); } } } _tmp35_ = en_data; _tmp36_ = annotations; _tmp37_ = g_slist_copy_deep (_tmp36_, _g_strdup_gcopy_func, NULL); ibus_emoji_data_set_annotations (_tmp35_, _tmp37_); _g_free0 (trans_description); } _g_free0 (emoji); } static gint string_index_of_char (const gchar* self, gunichar c, gint start_index) { gchar* _result_ = NULL; gchar* _tmp0_; gchar* _tmp1_; gint result = 0; g_return_val_if_fail (self != NULL, 0); _tmp0_ = g_utf8_strchr (((gchar*) self) + start_index, (gssize) -1, c); _result_ = _tmp0_; _tmp1_ = _result_; if (_tmp1_ != NULL) { gchar* _tmp2_; _tmp2_ = _result_; result = (gint) (_tmp2_ - ((gchar*) self)); return result; } else { result = -1; return result; } } static gchar* g_unichar_to_string (gunichar self) { gchar* str = NULL; gchar* _tmp0_; gchar* result = NULL; _tmp0_ = g_new0 (gchar, 7); str = (gchar*) _tmp0_; g_unichar_to_utf8 (self, str); result = str; return result; } static void ibus_emojier_update_category_to_emojis_dict (IBusEmojiData* data, const gchar* lang) { gchar* emoji = NULL; const gchar* _tmp0_; gchar* _tmp1_; gchar* category = NULL; const gchar* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; g_return_if_fail (data != NULL); g_return_if_fail (lang != NULL); _tmp0_ = ibus_emoji_data_get_emoji (data); _tmp1_ = g_strdup (_tmp0_); emoji = _tmp1_; _tmp2_ = ibus_emoji_data_get_category (data); _tmp3_ = g_strdup (_tmp2_); category = _tmp3_; _tmp4_ = category; if (g_strcmp0 (_tmp4_, "") == 0) { gchar* _tmp5_; _tmp5_ = g_strdup (IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS); _g_free0 (category); category = _tmp5_; } if (g_strcmp0 (lang, "en") == 0) { gboolean has_variant = FALSE; const gchar* _tmp6_; gboolean has_emoji = FALSE; GSList* hits = NULL; GHashTable* _tmp40_; const gchar* _tmp41_; gconstpointer _tmp42_; GSList* _tmp43_; GSList* _tmp44_; has_variant = FALSE; _tmp6_ = category; if (g_ascii_strcasecmp (_tmp6_, "component") != 0) { { gunichar* ch_collection = NULL; gint ch_collection_length1 = 0; gint _ch_collection_size_ = 0; gint ch_it = 0; ch_collection = IBUS_EMOJIER_EMOJI_VARIANT_LIST; ch_collection_length1 = G_N_ELEMENTS (IBUS_EMOJIER_EMOJI_VARIANT_LIST); for (ch_it = 0; ch_it < ch_collection_length1; ch_it = ch_it + 1) { gunichar ch = 0U; ch = ch_collection[ch_it]; { const gchar* _tmp7_; _tmp7_ = emoji; if (string_index_of_char (_tmp7_, ch, 0) >= 0) { has_variant = TRUE; break; } } } } } if (has_variant) { gunichar base_ch = 0U; const gchar* _tmp8_; gchar* base_emoji = NULL; gchar* _tmp9_; GString* buff = NULL; GString* _tmp10_; GString* _tmp11_; GString* _tmp12_; GHashTable* _tmp13_; GString* _tmp14_; const gchar* _tmp15_; gconstpointer _tmp16_; GSList* variants = NULL; GHashTable* _tmp20_; const gchar* _tmp21_; gconstpointer _tmp22_; GSList* _tmp23_; GSList* _tmp24_; const gchar* _tmp25_; GCompareFunc _tmp26_; GSList* _tmp27_; _tmp8_ = emoji; base_ch = string_get_char (_tmp8_, (glong) 0); _tmp9_ = g_unichar_to_string (base_ch); base_emoji = _tmp9_; _tmp10_ = g_string_new (""); buff = _tmp10_; _tmp11_ = buff; g_string_append_unichar (_tmp11_, base_ch); _tmp12_ = buff; g_string_append_unichar (_tmp12_, (gunichar) 0xfe0f); _tmp13_ = ibus_emojier_m_emoji_to_data_dict; _tmp14_ = buff; _tmp15_ = _tmp14_->str; _tmp16_ = g_hash_table_lookup (_tmp13_, _tmp15_); if (((IBusEmojiData*) _tmp16_) != NULL) { GString* _tmp17_; const gchar* _tmp18_; gchar* _tmp19_; _tmp17_ = buff; _tmp18_ = _tmp17_->str; _tmp19_ = g_strdup (_tmp18_); _g_free0 (base_emoji); base_emoji = _tmp19_; } _tmp20_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp21_ = base_emoji; _tmp22_ = g_hash_table_lookup (_tmp20_, _tmp21_); _tmp23_ = g_slist_copy_deep ((GSList*) _tmp22_, _g_strdup_gcopy_func, NULL); variants = _tmp23_; _tmp24_ = variants; _tmp25_ = emoji; _tmp26_ = ((GCompareFunc) g_strcmp0); _tmp27_ = g_slist_find_custom (_tmp24_, _tmp25_, _tmp26_); if (_tmp27_ == NULL) { GSList* _tmp28_; const gchar* _tmp31_; const gchar* _tmp32_; GHashTable* _tmp35_; const gchar* _tmp36_; gchar* _tmp37_; GSList* _tmp38_; GSList* _tmp39_; _tmp28_ = variants; if (_tmp28_ == NULL) { const gchar* _tmp29_; gchar* _tmp30_; _tmp29_ = base_emoji; _tmp30_ = g_strdup (_tmp29_); variants = g_slist_append (variants, _tmp30_); } _tmp31_ = base_emoji; _tmp32_ = emoji; if (g_strcmp0 (_tmp31_, _tmp32_) != 0) { const gchar* _tmp33_; gchar* _tmp34_; _tmp33_ = emoji; _tmp34_ = g_strdup (_tmp33_); variants = g_slist_append (variants, _tmp34_); } _tmp35_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp36_ = base_emoji; _tmp37_ = g_strdup (_tmp36_); _tmp38_ = variants; _tmp39_ = g_slist_copy_deep (_tmp38_, _g_strdup_gcopy_func, NULL); g_hash_table_replace (_tmp35_, _tmp37_, _tmp39_); } (variants == NULL) ? NULL : (variants = (_g_slist_free__g_free0_ (variants), NULL)); _g_string_free0 (buff); _g_free0 (base_emoji); _g_free0 (category); _g_free0 (emoji); return; } has_emoji = FALSE; _tmp40_ = ibus_emojier_m_category_to_emojis_dict; _tmp41_ = category; _tmp42_ = g_hash_table_lookup (_tmp40_, _tmp41_); _tmp43_ = g_slist_copy_deep ((GSList*) _tmp42_, _g_strdup_gcopy_func, NULL); hits = _tmp43_; _tmp44_ = hits; { GSList* hit_emoji_collection = NULL; GSList* hit_emoji_it = NULL; hit_emoji_collection = _tmp44_; for (hit_emoji_it = hit_emoji_collection; hit_emoji_it != NULL; hit_emoji_it = hit_emoji_it->next) { gchar* _tmp45_; gchar* hit_emoji = NULL; _tmp45_ = g_strdup ((const gchar*) hit_emoji_it->data); hit_emoji = _tmp45_; { const gchar* _tmp46_; const gchar* _tmp47_; _tmp46_ = hit_emoji; _tmp47_ = emoji; if (g_strcmp0 (_tmp46_, _tmp47_) == 0) { has_emoji = TRUE; _g_free0 (hit_emoji); break; } _g_free0 (hit_emoji); } } } if (!has_emoji) { const gchar* _tmp48_; gchar* _tmp49_; GHashTable* _tmp50_; const gchar* _tmp51_; gchar* _tmp52_; GSList* _tmp53_; GSList* _tmp54_; _tmp48_ = emoji; _tmp49_ = g_strdup (_tmp48_); hits = g_slist_append (hits, _tmp49_); _tmp50_ = ibus_emojier_m_category_to_emojis_dict; _tmp51_ = category; _tmp52_ = g_strdup (_tmp51_); _tmp53_ = hits; _tmp54_ = g_slist_copy_deep (_tmp53_, _g_strdup_gcopy_func, NULL); g_hash_table_replace (_tmp50_, _tmp52_, _tmp54_); } (hits == NULL) ? NULL : (hits = (_g_slist_free__g_free0_ (hits), NULL)); } _g_free0 (category); _g_free0 (emoji); } static void ibus_emojier_make_unicode_block_dict (void) { GSList* _tmp0_; GSList* _tmp1_; _tmp0_ = ibus_unicode_block_load (PKGDATADIR "/dicts/unicode-blocks.dict"); (ibus_emojier_m_unicode_block_list == NULL) ? NULL : (ibus_emojier_m_unicode_block_list = (_g_slist_free__g_object_unref0_ (ibus_emojier_m_unicode_block_list), NULL)); ibus_emojier_m_unicode_block_list = _tmp0_; _tmp1_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp1_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { const gchar* name = NULL; IBusUnicodeBlock* _tmp2_; const gchar* _tmp3_; const gchar* _tmp4_; gint _tmp5_; gint _tmp6_; _tmp2_ = block; _tmp3_ = ibus_unicode_block_get_name (_tmp2_); name = _tmp3_; _tmp4_ = name; _tmp5_ = strlen (_tmp4_); _tmp6_ = _tmp5_; if (ibus_emojier_m_emoji_max_seq_len < _tmp6_) { const gchar* _tmp7_; gint _tmp8_; gint _tmp9_; _tmp7_ = name; _tmp8_ = strlen (_tmp7_); _tmp9_ = _tmp8_; ibus_emojier_m_emoji_max_seq_len = _tmp9_; } } } } } static void ibus_emojier_make_unicode_name_dict (GObject* source_object) { g_return_if_fail (source_object != NULL); ibus_unicode_data_load_async (PKGDATADIR "/dicts/unicode-names.dict", source_object, NULL, (IBusUnicodeDataLoadAsyncFinish) ibus_emojier_make_unicode_name_dict_finish, NULL); } static void ibus_emojier_make_unicode_name_dict_finish (GSList* unicode_list) { GList* names = NULL; GHashTable* _tmp3_; GList* _tmp4_; GList* _tmp5_; if (unicode_list == NULL) { return; } { GSList* data_collection = NULL; GSList* data_it = NULL; data_collection = unicode_list; for (data_it = data_collection; data_it != NULL; data_it = data_it->next) { IBusUnicodeData* _tmp0_; IBusUnicodeData* data = NULL; _tmp0_ = _g_object_ref0 ((IBusUnicodeData*) data_it->data); data = _tmp0_; { IBusUnicodeData* _tmp1_; IBusUnicodeData* _tmp2_; _tmp1_ = data; ibus_emojier_update_unicode_to_data_dict (_tmp1_); _tmp2_ = data; ibus_emojier_update_name_to_unicodes_dict (_tmp2_); _g_object_unref0 (data); } } } _tmp3_ = ibus_emojier_m_name_to_unicodes_dict; _tmp4_ = g_hash_table_get_keys (_tmp3_); names = _tmp4_; _tmp5_ = names; { GList* name_collection = NULL; GList* name_it = NULL; name_collection = _tmp5_; for (name_it = name_collection; name_it != NULL; name_it = name_it->next) { const gchar* name = NULL; name = (const gchar*) name_it->data; { const gchar* _tmp6_; gint _tmp7_; gint _tmp8_; _tmp6_ = name; _tmp7_ = strlen (_tmp6_); _tmp8_ = _tmp7_; if (ibus_emojier_m_emoji_max_seq_len < _tmp8_) { const gchar* _tmp9_; gint _tmp10_; gint _tmp11_; _tmp9_ = name; _tmp10_ = strlen (_tmp9_); _tmp11_ = _tmp10_; ibus_emojier_m_emoji_max_seq_len = _tmp11_; } } } } ibus_emojier_m_loaded_unicode = TRUE; (names == NULL) ? NULL : (names = (g_list_free (names), NULL)); } static void ibus_emojier_update_unicode_to_data_dict (IBusUnicodeData* data) { gunichar code = 0U; GHashTable* _tmp0_; IBusUnicodeData* _tmp1_; g_return_if_fail (data != NULL); code = ibus_unicode_data_get_code (data); _tmp0_ = ibus_emojier_m_unicode_to_data_dict; _tmp1_ = _g_object_ref0 (data); g_hash_table_replace (_tmp0_, (gpointer) ((gintptr) code), _tmp1_); } static void ibus_emojier_update_name_to_unicodes_dict (IBusUnicodeData* data) { gunichar code = 0U; gchar** names = NULL; const gchar* _tmp0_; gchar* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_; gchar** _tmp4_; gint names_length1; gint _names_size_; gchar** _tmp5_; gint _tmp5__length1; g_return_if_fail (data != NULL); code = ibus_unicode_data_get_code (data); _tmp0_ = ibus_unicode_data_get_name (data); _tmp1_ = g_utf8_strdown (_tmp0_, (gssize) -1); _tmp2_ = ibus_unicode_data_get_alias (data); _tmp3_ = g_utf8_strdown (_tmp2_, (gssize) -1); _tmp4_ = g_new0 (gchar*, 2 + 1); _tmp4_[0] = _tmp1_; _tmp4_[1] = _tmp3_; names = _tmp4_; names_length1 = 2; _names_size_ = names_length1; _tmp5_ = names; _tmp5__length1 = names_length1; { gchar** name_collection = NULL; gint name_collection_length1 = 0; gint _name_collection_size_ = 0; gint name_it = 0; name_collection = _tmp5_; name_collection_length1 = _tmp5__length1; for (name_it = 0; name_it < name_collection_length1; name_it = name_it + 1) { const gchar* name = NULL; name = name_collection[name_it]; { const gchar* _tmp6_; gboolean has_code = FALSE; GSList* hits = NULL; GHashTable* _tmp7_; const gchar* _tmp8_; gconstpointer _tmp9_; GSList* _tmp10_; GSList* _tmp11_; _tmp6_ = name; if (g_strcmp0 (_tmp6_, "") == 0) { continue; } has_code = FALSE; _tmp7_ = ibus_emojier_m_name_to_unicodes_dict; _tmp8_ = name; _tmp9_ = g_hash_table_lookup (_tmp7_, _tmp8_); _tmp10_ = g_slist_copy ((GSList*) _tmp9_); hits = _tmp10_; _tmp11_ = hits; { GSList* hit_code_collection = NULL; GSList* hit_code_it = NULL; hit_code_collection = _tmp11_; for (hit_code_it = hit_code_collection; hit_code_it != NULL; hit_code_it = hit_code_it->next) { gunichar hit_code = 0U; hit_code = (gunichar) ((gintptr) hit_code_it->data); { if (hit_code == code) { has_code = TRUE; break; } } } } if (!has_code) { GHashTable* _tmp12_; const gchar* _tmp13_; gchar* _tmp14_; GSList* _tmp15_; GSList* _tmp16_; hits = g_slist_append (hits, (gpointer) ((gintptr) code)); _tmp12_ = ibus_emojier_m_name_to_unicodes_dict; _tmp13_ = name; _tmp14_ = g_strdup (_tmp13_); _tmp15_ = hits; _tmp16_ = g_slist_copy (_tmp15_); g_hash_table_replace (_tmp12_, _tmp14_, _tmp16_); } (hits == NULL) ? NULL : (hits = (g_slist_free (hits), NULL)); } } } names = (_vala_array_free (names, names_length1, (GDestroyNotify) g_free), NULL); } static void ibus_emojier_set_css_data (IBusEmojier* self) { GdkDisplay* display = NULL; GdkDisplay* _tmp0_; GdkDisplay* _tmp1_; GdkScreen* _tmp2_ = NULL; GdkDisplay* _tmp3_; GdkScreen* screen = NULL; GdkScreen* _tmp6_; GdkScreen* _tmp7_; gchar* backup_locale = NULL; const gchar* _tmp8_; gchar* _tmp9_; const gchar* _tmp10_; ThemedRGBA* _tmp13_; guint bg_red = 0U; ThemedRGBA* _tmp15_; GdkRGBA* _tmp16_; GdkRGBA* _tmp17_; guint bg_green = 0U; ThemedRGBA* _tmp18_; GdkRGBA* _tmp19_; GdkRGBA* _tmp20_; guint bg_blue = 0U; ThemedRGBA* _tmp21_; GdkRGBA* _tmp22_; GdkRGBA* _tmp23_; gdouble bg_alpha = 0.0; ThemedRGBA* _tmp24_; GdkRGBA* _tmp25_; GdkRGBA* _tmp26_; gchar* data = NULL; gchar* _tmp27_; gchar* _tmp28_; gchar* _tmp29_; gchar* _tmp30_; const gchar* _tmp31_; gchar* _tmp32_; gchar* _tmp33_; gchar* _tmp34_; gchar* _tmp35_; gchar* _tmp36_; gchar* _tmp37_; guint fg_red = 0U; ThemedRGBA* _tmp38_; GdkRGBA* _tmp39_; GdkRGBA* _tmp40_; guint fg_green = 0U; ThemedRGBA* _tmp41_; GdkRGBA* _tmp42_; GdkRGBA* _tmp43_; guint fg_blue = 0U; ThemedRGBA* _tmp44_; GdkRGBA* _tmp45_; GdkRGBA* _tmp46_; gdouble fg_alpha = 0.0; ThemedRGBA* _tmp47_; GdkRGBA* _tmp48_; GdkRGBA* _tmp49_; ThemedRGBA* _tmp50_; GdkRGBA* _tmp51_; GdkRGBA* _tmp52_; ThemedRGBA* _tmp53_; GdkRGBA* _tmp54_; GdkRGBA* _tmp55_; ThemedRGBA* _tmp56_; GdkRGBA* _tmp57_; GdkRGBA* _tmp58_; ThemedRGBA* _tmp59_; GdkRGBA* _tmp60_; GdkRGBA* _tmp61_; const gchar* _tmp62_; gchar* _tmp63_; gchar* _tmp64_; gchar* _tmp65_; gchar* _tmp66_; const gchar* _tmp67_; gchar* _tmp68_; gchar* _tmp69_; gchar* _tmp70_; gchar* _tmp71_; gchar* _tmp72_; gchar* _tmp73_; gchar* _tmp74_; gchar* _tmp75_; gchar* _tmp76_; gchar* _tmp77_; gchar* _tmp78_; gchar* _tmp79_; gchar* _tmp80_; const gchar* _tmp81_; gchar* _tmp82_; gchar* _tmp83_; gchar* _tmp84_; gchar* _tmp85_; const gchar* _tmp86_; gchar* _tmp87_; gchar* _tmp88_; gchar* _tmp89_; gchar* _tmp90_; gchar* _tmp91_; gchar* _tmp92_; gchar* _tmp93_; gchar* _tmp94_; gchar* _tmp95_; GtkCssProvider* css_provider = NULL; GtkCssProvider* _tmp96_; const gchar* _tmp101_; GdkScreen* _tmp103_; GtkCssProvider* _tmp104_; GError* _inner_error0_ = 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_; GdkScreen* _tmp5_; _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 ("emojier.vala:762: Could not open display."); _g_object_unref0 (screen); _g_object_unref0 (display); return; } _tmp8_ = setlocale (LC_NUMERIC, NULL); _tmp9_ = g_strdup (_tmp8_); backup_locale = _tmp9_; _tmp10_ = setlocale (LC_NUMERIC, "en_US.UTF-8"); if (_tmp10_ == NULL) { const gchar* _tmp11_; _tmp11_ = setlocale (LC_NUMERIC, "C.UTF-8"); if (_tmp11_ == NULL) { const gchar* _tmp12_; _tmp12_ = setlocale (LC_NUMERIC, "C"); if (_tmp12_ == NULL) { g_warning ("emojier.vala:771: %s", "You don't install either en_US.UTF-8 or C.UTF-8 " "or C locale"); } } } _tmp13_ = self->priv->m_rgba; if (_tmp13_ == NULL) { ThemedRGBA* _tmp14_; _tmp14_ = themed_rgba_new ((GtkWidget*) self); _themed_rgba_unref0 (self->priv->m_rgba); self->priv->m_rgba = _tmp14_; } _tmp15_ = self->priv->m_rgba; _tmp16_ = themed_rgba_get_normal_bg (_tmp15_); _tmp17_ = _tmp16_; bg_red = (guint) ((*_tmp17_).red * 255); _tmp18_ = self->priv->m_rgba; _tmp19_ = themed_rgba_get_normal_bg (_tmp18_); _tmp20_ = _tmp19_; bg_green = (guint) ((*_tmp20_).green * 255); _tmp21_ = self->priv->m_rgba; _tmp22_ = themed_rgba_get_normal_bg (_tmp21_); _tmp23_ = _tmp22_; bg_blue = (guint) ((*_tmp23_).blue * 255); _tmp24_ = self->priv->m_rgba; _tmp25_ = themed_rgba_get_normal_bg (_tmp24_); _tmp26_ = _tmp25_; bg_alpha = (*_tmp26_).alpha; _tmp27_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", bg_red, bg_green, bg_blue, bg_alpha); _tmp28_ = _tmp27_; _tmp29_ = g_strconcat ("#IBusEmojierWhiteLabel { background-color: ", _tmp28_, NULL); _tmp30_ = _tmp29_; _tmp31_ = ibus_emojier_m_emoji_font_family; _tmp32_ = g_strdup_printf ("font-family: %s; font-size: %dpt; ", _tmp31_, ibus_emojier_m_emoji_font_size); _tmp33_ = _tmp32_; _tmp34_ = g_strconcat (_tmp30_, _tmp33_, NULL); _tmp35_ = _tmp34_; _tmp36_ = g_strconcat (_tmp35_, "border-width: 4px; border-radius: 3px; } ", NULL); _tmp37_ = _tmp36_; _g_free0 (_tmp35_); _g_free0 (_tmp33_); _g_free0 (_tmp30_); _g_free0 (_tmp28_); data = _tmp37_; _tmp38_ = self->priv->m_rgba; _tmp39_ = themed_rgba_get_selected_fg (_tmp38_); _tmp40_ = _tmp39_; fg_red = (guint) ((*_tmp40_).red * 255); _tmp41_ = self->priv->m_rgba; _tmp42_ = themed_rgba_get_selected_fg (_tmp41_); _tmp43_ = _tmp42_; fg_green = (guint) ((*_tmp43_).green * 255); _tmp44_ = self->priv->m_rgba; _tmp45_ = themed_rgba_get_selected_fg (_tmp44_); _tmp46_ = _tmp45_; fg_blue = (guint) ((*_tmp46_).blue * 255); _tmp47_ = self->priv->m_rgba; _tmp48_ = themed_rgba_get_selected_fg (_tmp47_); _tmp49_ = _tmp48_; fg_alpha = (*_tmp49_).alpha; _tmp50_ = self->priv->m_rgba; _tmp51_ = themed_rgba_get_selected_bg (_tmp50_); _tmp52_ = _tmp51_; bg_red = (guint) ((*_tmp52_).red * 255); _tmp53_ = self->priv->m_rgba; _tmp54_ = themed_rgba_get_selected_bg (_tmp53_); _tmp55_ = _tmp54_; bg_green = (guint) ((*_tmp55_).green * 255); _tmp56_ = self->priv->m_rgba; _tmp57_ = themed_rgba_get_selected_bg (_tmp56_); _tmp58_ = _tmp57_; bg_blue = (guint) ((*_tmp58_).blue * 255); _tmp59_ = self->priv->m_rgba; _tmp60_ = themed_rgba_get_selected_bg (_tmp59_); _tmp61_ = _tmp60_; bg_alpha = (*_tmp61_).alpha; _tmp62_ = data; _tmp63_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", fg_red, fg_green, fg_blue, fg_alpha); _tmp64_ = _tmp63_; _tmp65_ = g_strconcat ("#IBusEmojierSelectedLabel { color: ", _tmp64_, NULL); _tmp66_ = _tmp65_; _tmp67_ = ibus_emojier_m_emoji_font_family; _tmp68_ = g_strdup_printf ("font-family: %s; font-size: %dpt; ", _tmp67_, ibus_emojier_m_emoji_font_size); _tmp69_ = _tmp68_; _tmp70_ = g_strconcat (_tmp66_, _tmp69_, NULL); _tmp71_ = _tmp70_; _tmp72_ = g_strconcat (_tmp71_, "background-color: ", NULL); _tmp73_ = _tmp72_; _tmp74_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", bg_red, bg_green, bg_blue, bg_alpha); _tmp75_ = _tmp74_; _tmp76_ = g_strconcat (_tmp73_, _tmp75_, NULL); _tmp77_ = _tmp76_; _tmp78_ = g_strconcat (_tmp77_, "border-width: 4px; border-radius: 3px; }", NULL); _tmp79_ = _tmp78_; _tmp80_ = g_strconcat (_tmp62_, _tmp79_, NULL); _g_free0 (data); data = _tmp80_; _g_free0 (_tmp79_); _g_free0 (_tmp77_); _g_free0 (_tmp75_); _g_free0 (_tmp73_); _g_free0 (_tmp71_); _g_free0 (_tmp69_); _g_free0 (_tmp66_); _g_free0 (_tmp64_); _tmp81_ = data; _tmp82_ = g_strdup_printf ("rgba(%u, %u, %u, %lf); ", fg_red, fg_green, fg_blue, fg_alpha); _tmp83_ = _tmp82_; _tmp84_ = g_strconcat ("#IBusEmojierGoldLabel { color: ", _tmp83_, NULL); _tmp85_ = _tmp84_; _tmp86_ = ibus_emojier_m_emoji_font_family; _tmp87_ = g_strdup_printf ("font-family: %s; font-size: %dpt; ", _tmp86_, ibus_emojier_m_emoji_font_size); _tmp88_ = _tmp87_; _tmp89_ = g_strconcat (_tmp85_, _tmp88_, NULL); _tmp90_ = _tmp89_; _tmp91_ = g_strconcat (_tmp90_, "background-color: #b09c5f; ", NULL); _tmp92_ = _tmp91_; _tmp93_ = g_strconcat (_tmp92_, "border-width: 4px; border-radius: 3px; }", NULL); _tmp94_ = _tmp93_; _tmp95_ = g_strconcat (_tmp81_, _tmp94_, NULL); _g_free0 (data); data = _tmp95_; _g_free0 (_tmp94_); _g_free0 (_tmp92_); _g_free0 (_tmp90_); _g_free0 (_tmp88_); _g_free0 (_tmp85_); _g_free0 (_tmp83_); _tmp96_ = gtk_css_provider_new (); css_provider = _tmp96_; { GtkCssProvider* _tmp97_; const gchar* _tmp98_; _tmp97_ = css_provider; _tmp98_ = data; gtk_css_provider_load_from_data (_tmp97_, _tmp98_, (gssize) -1, &_inner_error0_); if (G_UNLIKELY (_inner_error0_ != NULL)) { goto __catch0_g_error; } } goto __finally0; __catch0_g_error: { GError* e = NULL; GError* _tmp99_; const gchar* _tmp100_; e = _inner_error0_; _inner_error0_ = NULL; _tmp99_ = e; _tmp100_ = _tmp99_->message; g_warning ("emojier.vala:819: Failed css_provider_from_data: %s", _tmp100_); _g_error_free0 (e); _g_object_unref0 (css_provider); _g_free0 (data); _g_free0 (backup_locale); _g_object_unref0 (screen); _g_object_unref0 (display); return; } __finally0: if (G_UNLIKELY (_inner_error0_ != NULL)) { _g_object_unref0 (css_provider); _g_free0 (data); _g_free0 (backup_locale); _g_object_unref0 (screen); _g_object_unref0 (display); g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code); g_clear_error (&_inner_error0_); return; } _tmp101_ = backup_locale; if (_tmp101_ != NULL) { const gchar* _tmp102_; _tmp102_ = backup_locale; setlocale (LC_NUMERIC, _tmp102_); } else { setlocale (LC_NUMERIC, ""); } _tmp103_ = screen; _tmp104_ = css_provider; gtk_style_context_add_provider_for_screen (_tmp103_, (GtkStyleProvider*) _tmp104_, (guint) GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); _g_object_unref0 (css_provider); _g_free0 (data); _g_free0 (backup_locale); _g_object_unref0 (screen); _g_object_unref0 (display); } static void ibus_emojier_set_fixed_size (IBusEmojier* self) { g_return_if_fail (self != NULL); gtk_window_resize ((GtkWindow*) self, 20, 1); } static void ibus_emojier_remove_all_children (IBusEmojier* self) { IBusEmojierEListBox* _tmp0_; GtkBox* _tmp5_; GList* _tmp6_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_list_box; if (_tmp0_ != NULL) { IBusEmojierEListBox* _tmp1_; GList* _tmp2_; _tmp1_ = self->priv->m_list_box; _tmp2_ = gtk_container_get_children ((GtkContainer*) _tmp1_); { GList* w_collection = NULL; GList* w_it = NULL; w_collection = _tmp2_; for (w_it = w_collection; w_it != NULL; w_it = w_it->next) { GtkWidget* _tmp3_; GtkWidget* w = NULL; _tmp3_ = _g_object_ref0 ((GtkWidget*) w_it->data); w = _tmp3_; { GtkWidget* _tmp4_; _tmp4_ = w; gtk_widget_destroy (_tmp4_); _g_object_unref0 (w); } } (w_collection == NULL) ? NULL : (w_collection = (g_list_free (w_collection), NULL)); } _g_object_unref0 (self->priv->m_list_box); self->priv->m_list_box = NULL; } _tmp5_ = self->priv->m_vbox; _tmp6_ = gtk_container_get_children ((GtkContainer*) _tmp5_); { GList* w_collection = NULL; GList* w_it = NULL; w_collection = _tmp6_; for (w_it = w_collection; w_it != NULL; w_it = w_it->next) { GtkWidget* _tmp7_; GtkWidget* w = NULL; _tmp7_ = _g_object_ref0 ((GtkWidget*) w_it->data); w = _tmp7_; { gboolean _tmp8_ = FALSE; GtkWidget* _tmp9_; const gchar* _tmp10_; const gchar* _tmp11_; GtkWidget* _tmp15_; _tmp9_ = w; _tmp10_ = gtk_widget_get_name (_tmp9_); _tmp11_ = _tmp10_; if (g_strcmp0 (_tmp11_, "IBusEmojierEntry") == 0) { _tmp8_ = TRUE; } else { GtkWidget* _tmp12_; const gchar* _tmp13_; const gchar* _tmp14_; _tmp12_ = w; _tmp13_ = gtk_widget_get_name (_tmp12_); _tmp14_ = _tmp13_; _tmp8_ = g_strcmp0 (_tmp14_, "IBusEmojierTitleLabelBox") == 0; } if (_tmp8_) { _g_object_unref0 (w); continue; } _tmp15_ = w; gtk_widget_destroy (_tmp15_); _g_object_unref0 (w); } } (w_collection == NULL) ? NULL : (w_collection = (g_list_free (w_collection), NULL)); } } static void ibus_emojier_clamp_page (IBusEmojier* self) { GtkListBoxRow* row = NULL; GtkAllocation alloc = {0}; GtkAllocation _tmp8_ = {0}; GtkListBoxRow* _tmp9_; GtkAllocation _tmp10_ = {0}; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp11_; GtkAdjustment* _tmp12_; GtkAdjustment* _tmp13_; GtkAllocation _tmp14_; GtkAllocation _tmp15_; GtkAllocation _tmp16_; IBusLookupTable* _tmp17_; g_return_if_fail (self != NULL); if (self->priv->m_category_active_index >= 0) { IBusEmojierEListBox* _tmp0_; GtkListBoxRow* _tmp1_; GtkListBoxRow* _tmp2_; IBusEmojierEListBox* _tmp3_; GtkListBoxRow* _tmp4_; _tmp0_ = self->priv->m_list_box; _tmp1_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp0_, self->priv->m_category_active_index); _tmp2_ = _g_object_ref0 (_tmp1_); _g_object_unref0 (row); row = _tmp2_; _tmp3_ = self->priv->m_list_box; _tmp4_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp3_, _tmp4_); } else { IBusEmojierEListBox* _tmp5_; GtkListBoxRow* _tmp6_; GtkListBoxRow* _tmp7_; _tmp5_ = self->priv->m_list_box; _tmp6_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp5_, 0); _tmp7_ = _g_object_ref0 (_tmp6_); _g_object_unref0 (row); row = _tmp7_; } _tmp8_.x = 0; _tmp8_.y = 0; _tmp8_.width = 0; _tmp8_.height = 0; alloc = _tmp8_; _tmp9_ = row; gtk_widget_get_allocation ((GtkWidget*) _tmp9_, &_tmp10_); alloc = _tmp10_; _tmp11_ = self->priv->m_scrolled_window; _tmp12_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp11_); _tmp13_ = _g_object_ref0 (_tmp12_); adjustment = _tmp13_; _tmp14_ = alloc; _tmp15_ = alloc; _tmp16_ = alloc; gtk_adjustment_clamp_page (adjustment, (gdouble) _tmp14_.y, (gdouble) (_tmp15_.y + _tmp16_.height)); g_return_if_fail (self->priv->m_category_active_index >= 0); _tmp17_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp17_, (guint) self->priv->m_category_active_index); _g_object_unref0 (adjustment); _g_object_unref0 (row); } static void __lambda23_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow) { IBusEmojierEBoxRow* row = NULL; IBusEmojierEBoxRow* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; g_return_if_fail (box != NULL); g_return_if_fail (gtkrow != NULL); self->priv->m_category_active_index = gtk_list_box_row_get_index (gtkrow); _tmp0_ = _g_object_ref0 (IBUS_EMOJIER_IS_EBOX_ROW (gtkrow) ? ((IBusEmojierEBoxRow*) gtkrow) : NULL); row = _tmp0_; _tmp1_ = ibus_emojier_ebox_row_get_text (row); _tmp2_ = _tmp1_; ibus_emojier_show_emoji_for_category (self, _tmp2_); gtk_widget_show_all ((GtkWidget*) self); _g_object_unref0 (row); } static void ___lambda23__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self) { __lambda23_ ((IBusEmojier*) self, _sender, row); } static void ibus_emojier_show_category_list (IBusEmojier* self) { gboolean _tmp0_ = FALSE; IBusEmojierEScrolledWindow* _tmp7_; GtkBox* _tmp8_; IBusEmojierEScrolledWindow* _tmp9_; GtkViewport* viewport = NULL; GtkViewport* _tmp10_; IBusEmojierEScrolledWindow* _tmp11_; GtkViewport* _tmp12_; IBusEmojierEListBox* _tmp13_; GtkViewport* _tmp14_; IBusEmojierEListBox* _tmp15_; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp16_; GtkAdjustment* _tmp17_; GtkAdjustment* _tmp18_; IBusEmojierEListBox* _tmp19_; GtkAdjustment* _tmp20_; IBusEmojierEListBox* _tmp21_; guint ncandidates = 0U; IBusLookupTable* _tmp22_; IBusEmojierEScrolledWindow* _tmp39_; IBusEmojierEListBox* _tmp41_; IBusEmojierEListBox* _tmp42_; g_return_if_fail (self != NULL); if (self->priv->m_category_active_index >= 0) { IBusEmojierEListBox* _tmp1_; _tmp1_ = self->priv->m_list_box; _tmp0_ = _tmp1_ != NULL; } else { _tmp0_ = FALSE; } if (_tmp0_) { GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp2_; GtkListBoxRow* _tmp3_; GtkListBoxRow* _tmp4_; IBusEmojierEListBox* _tmp5_; GtkListBoxRow* _tmp6_; _tmp2_ = self->priv->m_list_box; _tmp3_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp2_, self->priv->m_category_active_index); _tmp4_ = _g_object_ref0 (_tmp3_); row = _tmp4_; _tmp5_ = self->priv->m_list_box; _tmp6_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp5_, _tmp6_); _g_object_unref0 (row); return; } if (self->priv->m_category_active_index < 0) { self->priv->m_category_active_index = 0; } ibus_emojier_remove_all_children (self); _tmp7_ = ibus_emojier_escrolled_window_new (NULL, NULL); g_object_ref_sink (_tmp7_); _g_object_unref0 (self->priv->m_scrolled_window); self->priv->m_scrolled_window = _tmp7_; ibus_emojier_set_fixed_size (self); _tmp8_ = self->priv->m_vbox; _tmp9_ = self->priv->m_scrolled_window; gtk_container_add ((GtkContainer*) _tmp8_, (GtkWidget*) _tmp9_); _tmp10_ = (GtkViewport*) gtk_viewport_new (NULL, NULL); g_object_ref_sink (_tmp10_); viewport = _tmp10_; _tmp11_ = self->priv->m_scrolled_window; _tmp12_ = viewport; gtk_container_add ((GtkContainer*) _tmp11_, (GtkWidget*) _tmp12_); _tmp13_ = ibus_emojier_elist_box_new (); g_object_ref_sink (_tmp13_); _g_object_unref0 (self->priv->m_list_box); self->priv->m_list_box = _tmp13_; _tmp14_ = viewport; _tmp15_ = self->priv->m_list_box; gtk_container_add ((GtkContainer*) _tmp14_, (GtkWidget*) _tmp15_); _tmp16_ = self->priv->m_scrolled_window; _tmp17_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp16_); _tmp18_ = _g_object_ref0 (_tmp17_); adjustment = _tmp18_; _tmp19_ = self->priv->m_list_box; _tmp20_ = adjustment; gtk_list_box_set_adjustment ((GtkListBox*) _tmp19_, _tmp20_); _tmp21_ = self->priv->m_list_box; g_signal_connect_object ((GtkListBox*) _tmp21_, "row-activated", (GCallback) ___lambda23__gtk_list_box_row_activated, self, 0); _tmp22_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp22_); { guint i = 0U; i = (guint) 0; { gboolean _tmp23_ = FALSE; _tmp23_ = TRUE; while (TRUE) { gchar* category = NULL; IBusLookupTable* _tmp25_; IBusText* _tmp26_; const gchar* _tmp27_; gchar* _tmp28_; IBusEmojierEBoxRow* row = NULL; const gchar* _tmp29_; IBusEmojierEBoxRow* _tmp30_; IBusEmojierEPaddedLabelBox* widget = NULL; const gchar* _tmp31_; IBusEmojierEPaddedLabelBox* _tmp32_; IBusEmojierEBoxRow* _tmp33_; IBusEmojierEPaddedLabelBox* _tmp34_; IBusEmojierEListBox* _tmp35_; IBusEmojierEBoxRow* _tmp36_; if (!_tmp23_) { guint _tmp24_; _tmp24_ = i; i = _tmp24_ + 1; } _tmp23_ = FALSE; if (!(i < ncandidates)) { break; } _tmp25_ = self->priv->m_lookup_table; _tmp26_ = ibus_lookup_table_get_candidate (_tmp25_, i); _tmp27_ = _tmp26_->text; _tmp28_ = g_strdup (_tmp27_); category = _tmp28_; _tmp29_ = category; _tmp30_ = ibus_emojier_ebox_row_new (_tmp29_); g_object_ref_sink (_tmp30_); row = _tmp30_; _tmp31_ = category; _tmp32_ = ibus_emojier_epadded_label_box_new (_ (_tmp31_), GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp32_); widget = _tmp32_; _tmp33_ = row; _tmp34_ = widget; gtk_container_add ((GtkContainer*) _tmp33_, (GtkWidget*) _tmp34_); _tmp35_ = self->priv->m_list_box; _tmp36_ = row; gtk_container_add ((GtkContainer*) _tmp35_, (GtkWidget*) _tmp36_); if (i == ((guint) self->priv->m_category_active_index)) { IBusEmojierEListBox* _tmp37_; IBusEmojierEBoxRow* _tmp38_; _tmp37_ = self->priv->m_list_box; _tmp38_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp37_, (GtkListBoxRow*) _tmp38_); } _g_object_unref0 (widget); _g_object_unref0 (row); _g_free0 (category); } } } _tmp39_ = self->priv->m_scrolled_window; gtk_widget_show_all ((GtkWidget*) _tmp39_); if (self->priv->m_category_active_index == -1) { IBusEmojierEListBox* _tmp40_; _tmp40_ = self->priv->m_list_box; gtk_list_box_unselect_all ((GtkListBox*) _tmp40_); } _tmp41_ = self->priv->m_list_box; gtk_list_box_invalidate_filter ((GtkListBox*) _tmp41_); _tmp42_ = self->priv->m_list_box; gtk_list_box_set_selection_mode ((GtkListBox*) _tmp42_, GTK_SELECTION_SINGLE); _g_object_unref0 (adjustment); _g_object_unref0 (viewport); } static void ibus_emojier_show_emoji_for_category (IBusEmojier* self, const gchar* category) { IBusLookupTable* _tmp17_; IBusText* _tmp18_; const gchar* _tmp19_; gchar* _tmp20_; g_return_if_fail (self != NULL); g_return_if_fail (category != NULL); if (g_strcmp0 (category, IBUS_EMOJIER_EMOJI_CATEGORY_FAVORITES) == 0) { IBusLookupTable* _tmp0_; gchar** _tmp1_; gint _tmp1__length1; gchar* _tmp6_; _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp0_); self->priv->m_candidate_panel_mode = TRUE; _tmp1_ = ibus_emojier_m_favorites; _tmp1__length1 = ibus_emojier_m_favorites_length1; { gchar** favorate_collection = NULL; gint favorate_collection_length1 = 0; gint _favorate_collection_size_ = 0; gint favorate_it = 0; favorate_collection = _tmp1_; favorate_collection_length1 = _tmp1__length1; for (favorate_it = 0; favorate_it < favorate_collection_length1; favorate_it = favorate_it + 1) { const gchar* favorate = NULL; favorate = favorate_collection[favorate_it]; { IBusText* text = NULL; const gchar* _tmp2_; IBusText* _tmp3_; IBusLookupTable* _tmp4_; IBusText* _tmp5_; _tmp2_ = favorate; _tmp3_ = ibus_text_new_from_string (_tmp2_); g_object_ref_sink (_tmp3_); text = _tmp3_; _tmp4_ = self->priv->m_lookup_table; _tmp5_ = text; ibus_lookup_table_append_candidate (_tmp4_, _tmp5_); _g_object_unref0 (text); } } } _tmp6_ = g_strdup (category); _g_free0 (self->priv->m_backward); self->priv->m_backward = _tmp6_; } else { if (g_strcmp0 (category, IBUS_EMOJIER_EMOJI_CATEGORY_UNICODE) == 0) { self->priv->m_category_active_index = -1; ibus_emojier_m_show_unicode = TRUE; ibus_emojier_update_unicode_blocks (self); return; } else { GSList* emojis = NULL; GHashTable* _tmp7_; gconstpointer _tmp8_; GSList* _tmp9_; IBusLookupTable* _tmp10_; GSList* _tmp11_; gchar* _tmp16_; _tmp7_ = ibus_emojier_m_category_to_emojis_dict; _tmp8_ = g_hash_table_lookup (_tmp7_, category); _tmp9_ = g_slist_copy_deep ((GSList*) _tmp8_, _g_strdup_gcopy_func, NULL); emojis = _tmp9_; _tmp10_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp10_); self->priv->m_candidate_panel_mode = TRUE; _tmp11_ = emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp11_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { IBusText* text = NULL; const gchar* _tmp12_; IBusText* _tmp13_; IBusLookupTable* _tmp14_; IBusText* _tmp15_; _tmp12_ = emoji; _tmp13_ = ibus_text_new_from_string (_tmp12_); g_object_ref_sink (_tmp13_); text = _tmp13_; _tmp14_ = self->priv->m_lookup_table; _tmp15_ = text; ibus_lookup_table_append_candidate (_tmp14_, _tmp15_); _g_object_unref0 (text); } } } _tmp16_ = g_strdup (category); _g_free0 (self->priv->m_backward); self->priv->m_backward = _tmp16_; (emojis == NULL) ? NULL : (emojis = (_g_slist_free__g_free0_ (emojis), NULL)); } } _tmp17_ = self->priv->m_lookup_table; _tmp18_ = ibus_lookup_table_get_candidate (_tmp17_, (guint) 0); _tmp19_ = _tmp18_->text; _tmp20_ = g_strdup (_tmp19_); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp20_; if (self->priv->m_backward_index >= 0) { IBusLookupTable* _tmp21_; _tmp21_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp21_, (guint) self->priv->m_backward_index); self->priv->m_backward_index = -1; } } static void ibus_emojier_show_emoji_variants (IBusEmojier* self, GSList* emojis) { IBusLookupTable* _tmp0_; IBusLookupTable* _tmp1_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_lookup_table; self->priv->m_backward_index = (gint) ibus_lookup_table_get_cursor_pos (_tmp0_); _tmp1_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp1_); { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = emojis; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { IBusText* text = NULL; const gchar* _tmp2_; IBusText* _tmp3_; IBusLookupTable* _tmp4_; IBusText* _tmp5_; _tmp2_ = emoji; _tmp3_ = ibus_text_new_from_string (_tmp2_); g_object_ref_sink (_tmp3_); text = _tmp3_; _tmp4_ = self->priv->m_lookup_table; _tmp5_ = text; ibus_lookup_table_append_candidate (_tmp4_, _tmp5_); _g_object_unref0 (text); } } } } static gboolean __lambda20_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e) { gboolean result = FALSE; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); self->priv->m_category_active_index = -1; ibus_emojier_m_show_unicode = FALSE; ibus_emojier_hide_candidate_panel (self); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } static gboolean ___lambda20__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = __lambda20_ ((IBusEmojier*) self, _sender, event); return result; } static void __lambda21_ (IBusEmojier* self, GtkListBox* box, GtkListBoxRow* gtkrow) { IBusEmojierEBoxRow* row = NULL; IBusEmojierEBoxRow* _tmp0_; const gchar* _tmp1_; const gchar* _tmp2_; g_return_if_fail (box != NULL); g_return_if_fail (gtkrow != NULL); self->priv->m_category_active_index = gtk_list_box_row_get_index (gtkrow); _tmp0_ = _g_object_ref0 (IBUS_EMOJIER_IS_EBOX_ROW (gtkrow) ? ((IBusEmojierEBoxRow*) gtkrow) : NULL); row = _tmp0_; _tmp1_ = ibus_emojier_ebox_row_get_text (row); _tmp2_ = _tmp1_; ibus_emojier_show_unicode_for_block (self, _tmp2_); ibus_emojier_show_candidate_panel (self); _g_object_unref0 (row); } static void ___lambda21__gtk_list_box_row_activated (GtkListBox* _sender, GtkListBoxRow* row, gpointer self) { __lambda21_ ((IBusEmojier*) self, _sender, row); } static void __lambda22_ (IBusEmojier* self, GtkWidget* w, GtkAllocation* a) { g_return_if_fail (w != NULL); g_return_if_fail (a != NULL); ibus_emojier_clamp_page (self); } static void ___lambda22__gtk_widget_size_allocate (GtkWidget* _sender, GtkAllocation* allocation, gpointer self) { __lambda22_ ((IBusEmojier*) self, _sender, allocation); } static void ibus_emojier_show_unicode_blocks (IBusEmojier* self) { gboolean _tmp0_ = FALSE; gboolean _tmp7_ = FALSE; IBusEmojierEPaddedLabelBox* label = NULL; IBusEmojierEPaddedLabelBox* _tmp10_; GtkButton* button = NULL; GtkButton* _tmp11_; GtkButton* _tmp12_; IBusEmojierEPaddedLabelBox* _tmp13_; GtkBox* _tmp14_; GtkButton* _tmp15_; GtkButton* _tmp16_; GtkButton* _tmp17_; IBusEmojierEScrolledWindow* _tmp18_; GtkBox* _tmp19_; IBusEmojierEScrolledWindow* _tmp20_; GtkViewport* viewport = NULL; GtkViewport* _tmp21_; IBusEmojierEScrolledWindow* _tmp22_; GtkViewport* _tmp23_; IBusEmojierEListBox* _tmp24_; GtkViewport* _tmp25_; IBusEmojierEListBox* _tmp26_; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp27_; GtkAdjustment* _tmp28_; GtkAdjustment* _tmp29_; IBusEmojierEListBox* _tmp30_; GtkAdjustment* _tmp31_; IBusEmojierEListBox* _tmp32_; guint n = 0U; GSList* _tmp33_; IBusEmojierEScrolledWindow* _tmp51_; IBusEmojierEScrolledWindow* _tmp52_; IBusEmojierEListBox* _tmp54_; IBusEmojierEListBox* _tmp55_; GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp56_; GtkListBoxRow* _tmp57_; GtkListBoxRow* _tmp58_; GtkListBoxRow* _tmp59_; g_return_if_fail (self != NULL); if (self->priv->m_category_active_index >= 0) { IBusEmojierEListBox* _tmp1_; _tmp1_ = self->priv->m_list_box; _tmp0_ = _tmp1_ != NULL; } else { _tmp0_ = FALSE; } if (_tmp0_) { GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp2_; GtkListBoxRow* _tmp3_; GtkListBoxRow* _tmp4_; IBusEmojierEListBox* _tmp5_; GtkListBoxRow* _tmp6_; _tmp2_ = self->priv->m_list_box; _tmp3_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp2_, self->priv->m_category_active_index); _tmp4_ = _g_object_ref0 (_tmp3_); row = _tmp4_; _tmp5_ = self->priv->m_list_box; _tmp6_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp5_, _tmp6_); _g_object_unref0 (row); return; } if (self->priv->m_category_active_index < 0) { self->priv->m_category_active_index = 0; } ibus_emojier_m_show_unicode = TRUE; if (ibus_emojier_m_default_window_width == 0) { _tmp7_ = ibus_emojier_m_default_window_height == 0; } else { _tmp7_ = FALSE; } if (_tmp7_) { gint _tmp8_ = 0; gint _tmp9_ = 0; gtk_window_get_size ((GtkWindow*) self, &_tmp8_, &_tmp9_); ibus_emojier_m_default_window_width = _tmp8_; ibus_emojier_m_default_window_height = _tmp9_; } ibus_emojier_remove_all_children (self); ibus_emojier_set_fixed_size (self); _tmp10_ = ibus_emojier_epadded_label_box_new (_ ("Bring back emoji choice"), GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD, NULL); g_object_ref_sink (_tmp10_); label = _tmp10_; _tmp11_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp11_); button = _tmp11_; _tmp12_ = button; _tmp13_ = label; gtk_container_add ((GtkContainer*) _tmp12_, (GtkWidget*) _tmp13_); _tmp14_ = self->priv->m_vbox; _tmp15_ = button; gtk_container_add ((GtkContainer*) _tmp14_, (GtkWidget*) _tmp15_); _tmp16_ = button; gtk_widget_show_all ((GtkWidget*) _tmp16_); _tmp17_ = button; g_signal_connect_object ((GtkWidget*) _tmp17_, "button-press-event", (GCallback) ___lambda20__gtk_widget_button_press_event, self, 0); _tmp18_ = ibus_emojier_escrolled_window_new (NULL, NULL); g_object_ref_sink (_tmp18_); _g_object_unref0 (self->priv->m_scrolled_window); self->priv->m_scrolled_window = _tmp18_; _tmp19_ = self->priv->m_vbox; _tmp20_ = self->priv->m_scrolled_window; gtk_container_add ((GtkContainer*) _tmp19_, (GtkWidget*) _tmp20_); _tmp21_ = (GtkViewport*) gtk_viewport_new (NULL, NULL); g_object_ref_sink (_tmp21_); viewport = _tmp21_; _tmp22_ = self->priv->m_scrolled_window; _tmp23_ = viewport; gtk_container_add ((GtkContainer*) _tmp22_, (GtkWidget*) _tmp23_); _tmp24_ = ibus_emojier_elist_box_new (); g_object_ref_sink (_tmp24_); _g_object_unref0 (self->priv->m_list_box); self->priv->m_list_box = _tmp24_; _tmp25_ = viewport; _tmp26_ = self->priv->m_list_box; gtk_container_add ((GtkContainer*) _tmp25_, (GtkWidget*) _tmp26_); _tmp27_ = self->priv->m_scrolled_window; _tmp28_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp27_); _tmp29_ = _g_object_ref0 (_tmp28_); adjustment = _tmp29_; _tmp30_ = self->priv->m_list_box; _tmp31_ = adjustment; gtk_list_box_set_adjustment ((GtkListBox*) _tmp30_, _tmp31_); _tmp32_ = self->priv->m_list_box; g_signal_connect_object ((GtkListBox*) _tmp32_, "row-activated", (GCallback) ___lambda21__gtk_list_box_row_activated, self, 0); n = (guint) 0; _tmp33_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp33_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { gchar* name = NULL; IBusUnicodeBlock* _tmp34_; const gchar* _tmp35_; gchar* _tmp36_; gchar* caption = NULL; IBusUnicodeBlock* _tmp37_; gchar* _tmp38_; IBusEmojierEBoxRow* row = NULL; const gchar* _tmp39_; IBusEmojierEBoxRow* _tmp40_; IBusEmojierEPaddedLabelBox* widget = NULL; const gchar* _tmp41_; const gchar* _tmp42_; IBusEmojierEPaddedLabelBox* _tmp43_; IBusEmojierEBoxRow* _tmp44_; IBusEmojierEPaddedLabelBox* _tmp45_; IBusEmojierEListBox* _tmp46_; IBusEmojierEBoxRow* _tmp47_; guint _tmp48_; _tmp34_ = block; _tmp35_ = ibus_unicode_block_get_name (_tmp34_); _tmp36_ = g_strdup (_tmp35_); name = _tmp36_; _tmp37_ = block; _tmp38_ = g_strdup_printf ("U+%08X", (guint) ibus_unicode_block_get_start (_tmp37_)); caption = _tmp38_; _tmp39_ = name; _tmp40_ = ibus_emojier_ebox_row_new (_tmp39_); g_object_ref_sink (_tmp40_); row = _tmp40_; _tmp41_ = name; _tmp42_ = caption; _tmp43_ = ibus_emojier_epadded_label_box_new (_ (_tmp41_), GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, _tmp42_); g_object_ref_sink (_tmp43_); widget = _tmp43_; _tmp44_ = row; _tmp45_ = widget; gtk_container_add ((GtkContainer*) _tmp44_, (GtkWidget*) _tmp45_); _tmp46_ = self->priv->m_list_box; _tmp47_ = row; gtk_container_add ((GtkContainer*) _tmp46_, (GtkWidget*) _tmp47_); _tmp48_ = n; n = _tmp48_ + 1; if (_tmp48_ == ((guint) self->priv->m_category_active_index)) { IBusEmojierEListBox* _tmp49_; IBusEmojierEBoxRow* _tmp50_; _tmp49_ = self->priv->m_list_box; _tmp50_ = row; gtk_list_box_select_row ((GtkListBox*) _tmp49_, (GtkListBoxRow*) _tmp50_); } _g_object_unref0 (widget); _g_object_unref0 (row); _g_free0 (caption); _g_free0 (name); } } } gtk_widget_set_size_request ((GtkWidget*) self, -1, ibus_emojier_m_default_window_height + 100); _tmp51_ = self->priv->m_scrolled_window; gtk_scrolled_window_set_policy ((GtkScrolledWindow*) _tmp51_, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); _tmp52_ = self->priv->m_scrolled_window; gtk_widget_show_all ((GtkWidget*) _tmp52_); if (self->priv->m_category_active_index == -1) { IBusEmojierEListBox* _tmp53_; _tmp53_ = self->priv->m_list_box; gtk_list_box_unselect_all ((GtkListBox*) _tmp53_); } _tmp54_ = self->priv->m_list_box; gtk_list_box_invalidate_filter ((GtkListBox*) _tmp54_); _tmp55_ = self->priv->m_list_box; gtk_list_box_set_selection_mode ((GtkListBox*) _tmp55_, GTK_SELECTION_SINGLE); _tmp56_ = self->priv->m_list_box; _tmp57_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp56_, ((gint) n) - 1); _tmp58_ = _g_object_ref0 (_tmp57_); row = _tmp58_; _tmp59_ = row; g_signal_connect_object ((GtkWidget*) _tmp59_, "size-allocate", (GCallback) ___lambda22__gtk_widget_size_allocate, self, 0); _g_object_unref0 (row); _g_object_unref0 (adjustment); _g_object_unref0 (viewport); _g_object_unref0 (button); _g_object_unref0 (label); } static void ibus_emojier_show_unicode_for_block (IBusEmojier* self, const gchar* block_name) { gunichar start = 0U; gunichar end = 0U; GSList* _tmp0_; IBusLookupTable* _tmp7_; gchar* _tmp16_; IBusLookupTable* _tmp17_; g_return_if_fail (self != NULL); g_return_if_fail (block_name != NULL); start = (gunichar) 0; end = (gunichar) 0; _tmp0_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp0_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { gchar* name = NULL; IBusUnicodeBlock* _tmp1_; const gchar* _tmp2_; gchar* _tmp3_; const gchar* _tmp4_; _tmp1_ = block; _tmp2_ = ibus_unicode_block_get_name (_tmp1_); _tmp3_ = g_strdup (_tmp2_); name = _tmp3_; _tmp4_ = name; if (g_strcmp0 (block_name, _tmp4_) == 0) { IBusUnicodeBlock* _tmp5_; IBusUnicodeBlock* _tmp6_; _tmp5_ = block; start = ibus_unicode_block_get_start (_tmp5_); _tmp6_ = block; end = ibus_unicode_block_get_end (_tmp6_); } _g_free0 (name); } } } _tmp7_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp7_); self->priv->m_candidate_panel_mode = TRUE; { gunichar ch = 0U; ch = start; { gboolean _tmp8_ = FALSE; _tmp8_ = TRUE; while (TRUE) { IBusUnicodeData* data = NULL; GHashTable* _tmp10_; gconstpointer _tmp11_; IBusUnicodeData* _tmp12_; IBusText* text = NULL; IBusText* _tmp13_; IBusLookupTable* _tmp14_; IBusText* _tmp15_; if (!_tmp8_) { gunichar _tmp9_; _tmp9_ = ch; ch = _tmp9_ + 1; } _tmp8_ = FALSE; if (!(ch < end)) { break; } _tmp10_ = ibus_emojier_m_unicode_to_data_dict; _tmp11_ = g_hash_table_lookup (_tmp10_, (gpointer) ((gintptr) ch)); data = (IBusUnicodeData*) _tmp11_; _tmp12_ = data; if (_tmp12_ == NULL) { continue; } _tmp13_ = ibus_text_new_from_unichar (ch); g_object_ref_sink (_tmp13_); text = _tmp13_; _tmp14_ = self->priv->m_lookup_table; _tmp15_ = text; ibus_lookup_table_append_candidate (_tmp14_, _tmp15_); _g_object_unref0 (text); } } } _tmp16_ = g_strdup (block_name); _g_free0 (self->priv->m_backward); self->priv->m_backward = _tmp16_; _tmp17_ = self->priv->m_lookup_table; if (ibus_lookup_table_get_number_of_candidates (_tmp17_) > ((guint) 0)) { IBusLookupTable* _tmp18_; IBusText* _tmp19_; const gchar* _tmp20_; gchar* _tmp21_; _tmp18_ = self->priv->m_lookup_table; _tmp19_ = ibus_lookup_table_get_candidate (_tmp18_, (guint) 0); _tmp20_ = _tmp19_->text; _tmp21_ = g_strdup (_tmp20_); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp21_; } } 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_)) { IBusEmojier* self; self = _data1_->self; _g_object_unref0 (_data1_->warning_button); _g_object_unref0 (self); g_slice_free (Block1Data, _data1_); } } static void __lambda15_ (IBusEmojier* self) { IBusLookupTable* _tmp0_; _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_page_down (_tmp0_); ibus_emojier_show_candidate_panel (self); } static void ___lambda15__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda15_ ((IBusEmojier*) self); } static void __lambda16_ (IBusEmojier* self) { IBusLookupTable* _tmp0_; _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_page_up (_tmp0_); ibus_emojier_show_candidate_panel (self); } static void ___lambda16__gtk_button_clicked (GtkButton* _sender, gpointer self) { __lambda16_ ((IBusEmojier*) self); } static void ___lambda17_ (Block1Data* _data1_) { IBusEmojier* self; GtkLabel* warning_label = NULL; const gchar* _tmp0_; GtkLabel* _tmp1_; GtkPopover* popover = NULL; GtkButton* _tmp2_; GtkPopover* _tmp3_; self = _data1_->self; _tmp0_ = ibus_emojier_m_warning_message; _tmp1_ = (GtkLabel*) gtk_label_new (_tmp0_); g_object_ref_sink (_tmp1_); warning_label = _tmp1_; gtk_label_set_line_wrap (warning_label, TRUE); gtk_label_set_max_width_chars (warning_label, 40); _tmp2_ = _data1_->warning_button; _tmp3_ = (GtkPopover*) gtk_popover_new ((GtkWidget*) _tmp2_); g_object_ref_sink (_tmp3_); popover = _tmp3_; gtk_container_add ((GtkContainer*) popover, (GtkWidget*) warning_label); gtk_widget_show_all ((GtkWidget*) popover); gtk_popover_popup (popover); _g_object_unref0 (popover); _g_object_unref0 (warning_label); } static void ____lambda17__gtk_button_clicked (GtkButton* _sender, gpointer self) { ___lambda17_ (self); } static void ibus_emojier_show_arrow_buttons (IBusEmojier* self) { Block1Data* _data1_; GtkButton* next_button = NULL; GtkButton* _tmp0_; GtkButton* _tmp1_; GtkButton* _tmp2_; GtkImage* _tmp3_; GtkImage* _tmp4_; GtkButton* _tmp5_; GtkButton* _tmp6_; GtkButton* prev_button = NULL; GtkButton* _tmp7_; GtkButton* _tmp8_; GtkButton* _tmp9_; GtkImage* _tmp10_; GtkImage* _tmp11_; GtkButton* _tmp12_; GtkButton* _tmp13_; GMenu* menu = NULL; GMenu* _tmp14_; GMenu* _tmp15_; GMenu* _tmp16_; GtkMenuButton* menu_button = NULL; GtkMenuButton* _tmp17_; GtkMenuButton* _tmp18_; GtkMenuButton* _tmp19_; GtkMenuButton* _tmp20_; GMenu* _tmp21_; GtkMenuButton* _tmp22_; GtkMenuButton* _tmp23_; IBusText* text = NULL; IBusText* _tmp24_; PangoAttrList* attrs = NULL; IBusText* _tmp25_; PangoAttrList* _tmp26_; GtkLabel* title_label = NULL; IBusText* _tmp27_; const gchar* _tmp28_; GtkLabel* _tmp29_; GtkLabel* _tmp30_; PangoAttrList* _tmp31_; const gchar* _tmp32_; GtkBox* buttons_hbox = NULL; GtkBox* _tmp40_; GtkLabel* state_label = NULL; GtkLabel* _tmp41_; GtkLabel* _tmp42_; GtkLabel* _tmp43_; GtkLabel* _tmp44_; GtkBox* _tmp45_; GtkLabel* _tmp46_; GtkBox* _tmp47_; GtkButton* _tmp48_; GtkBox* _tmp49_; GtkButton* _tmp50_; GtkBox* _tmp51_; GtkLabel* _tmp52_; GtkButton* _tmp53_; GtkBox* _tmp56_; GtkMenuButton* _tmp57_; GtkBox* _tmp58_; GtkBox* _tmp59_; GtkBox* _tmp60_; g_return_if_fail (self != NULL); _data1_ = g_slice_new0 (Block1Data); _data1_->_ref_count_ = 1; _data1_->self = g_object_ref (self); _tmp0_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp0_); next_button = _tmp0_; _tmp1_ = next_button; g_signal_connect_object (_tmp1_, "clicked", (GCallback) ___lambda15__gtk_button_clicked, self, 0); _tmp2_ = next_button; _tmp3_ = (GtkImage*) gtk_image_new_from_icon_name ("go-down", (GtkIconSize) GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp3_); _tmp4_ = _tmp3_; gtk_button_set_image (_tmp2_, (GtkWidget*) _tmp4_); _g_object_unref0 (_tmp4_); _tmp5_ = next_button; gtk_button_set_relief (_tmp5_, GTK_RELIEF_NONE); _tmp6_ = next_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp6_, _ ("Page Down")); _tmp7_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp7_); prev_button = _tmp7_; _tmp8_ = prev_button; g_signal_connect_object (_tmp8_, "clicked", (GCallback) ___lambda16__gtk_button_clicked, self, 0); _tmp9_ = prev_button; _tmp10_ = (GtkImage*) gtk_image_new_from_icon_name ("go-up", (GtkIconSize) GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp10_); _tmp11_ = _tmp10_; gtk_button_set_image (_tmp9_, (GtkWidget*) _tmp11_); _g_object_unref0 (_tmp11_); _tmp12_ = prev_button; gtk_button_set_relief (_tmp12_, GTK_RELIEF_NONE); _tmp13_ = prev_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp13_, _ ("Page Up")); _tmp14_ = g_menu_new (); menu = _tmp14_; _tmp15_ = menu; g_menu_append (_tmp15_, _ ("Show emoji variants"), "win.variant"); _tmp16_ = menu; g_menu_append (_tmp16_, _ ("Close"), "win.close"); _tmp17_ = (GtkMenuButton*) gtk_menu_button_new (); g_object_ref_sink (_tmp17_); menu_button = _tmp17_; _tmp18_ = menu_button; gtk_menu_button_set_direction (_tmp18_, GTK_ARROW_NONE); _tmp19_ = menu_button; gtk_widget_set_valign ((GtkWidget*) _tmp19_, GTK_ALIGN_CENTER); _tmp20_ = menu_button; _tmp21_ = menu; gtk_menu_button_set_menu_model (_tmp20_, (GMenuModel*) _tmp21_); _tmp22_ = menu_button; gtk_button_set_relief ((GtkButton*) _tmp22_, GTK_RELIEF_NONE); _tmp23_ = menu_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp23_, _ ("Menu")); _tmp24_ = ibus_emojier_get_title_text (self); text = _tmp24_; _tmp25_ = text; _tmp26_ = get_pango_attr_list_from_ibus_text (_tmp25_); attrs = _tmp26_; _tmp27_ = text; _tmp28_ = ibus_text_get_text (_tmp27_); _tmp29_ = (GtkLabel*) gtk_label_new (_tmp28_); g_object_ref_sink (_tmp29_); title_label = _tmp29_; _tmp30_ = title_label; _tmp31_ = attrs; gtk_label_set_attributes (_tmp30_, _tmp31_); _data1_->warning_button = NULL; _tmp32_ = ibus_emojier_m_warning_message; if (g_strcmp0 (_tmp32_, "") != 0) { GtkButton* _tmp33_; GtkButton* _tmp34_; GtkButton* _tmp35_; GtkImage* _tmp36_; GtkImage* _tmp37_; GtkButton* _tmp38_; GtkButton* _tmp39_; _tmp33_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp33_); _g_object_unref0 (_data1_->warning_button); _data1_->warning_button = _tmp33_; _tmp34_ = _data1_->warning_button; gtk_widget_set_tooltip_text ((GtkWidget*) _tmp34_, _ ("Click to view a warning message")); _tmp35_ = _data1_->warning_button; _tmp36_ = (GtkImage*) gtk_image_new_from_icon_name ("dialog-warning", (GtkIconSize) GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp36_); _tmp37_ = _tmp36_; gtk_button_set_image (_tmp35_, (GtkWidget*) _tmp37_); _g_object_unref0 (_tmp37_); _tmp38_ = _data1_->warning_button; gtk_button_set_relief (_tmp38_, GTK_RELIEF_NONE); _tmp39_ = _data1_->warning_button; g_signal_connect_data (_tmp39_, "clicked", (GCallback) ____lambda17__gtk_button_clicked, block1_data_ref (_data1_), (GClosureNotify) block1_data_unref, 0); } _tmp40_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); g_object_ref_sink (_tmp40_); buttons_hbox = _tmp40_; _tmp41_ = (GtkLabel*) gtk_label_new (NULL); g_object_ref_sink (_tmp41_); state_label = _tmp41_; _tmp42_ = state_label; gtk_widget_set_size_request ((GtkWidget*) _tmp42_, 10, -1); _tmp43_ = state_label; gtk_widget_set_halign ((GtkWidget*) _tmp43_, GTK_ALIGN_CENTER); _tmp44_ = state_label; gtk_widget_set_valign ((GtkWidget*) _tmp44_, GTK_ALIGN_CENTER); _tmp45_ = buttons_hbox; _tmp46_ = state_label; gtk_box_pack_start (_tmp45_, (GtkWidget*) _tmp46_, FALSE, TRUE, (guint) 0); _tmp47_ = buttons_hbox; _tmp48_ = prev_button; gtk_box_pack_start (_tmp47_, (GtkWidget*) _tmp48_, FALSE, FALSE, (guint) 0); _tmp49_ = buttons_hbox; _tmp50_ = next_button; gtk_box_pack_start (_tmp49_, (GtkWidget*) _tmp50_, FALSE, FALSE, (guint) 0); _tmp51_ = buttons_hbox; _tmp52_ = title_label; gtk_box_pack_start (_tmp51_, (GtkWidget*) _tmp52_, FALSE, FALSE, (guint) 0); _tmp53_ = _data1_->warning_button; if (_tmp53_ != NULL) { GtkBox* _tmp54_; GtkButton* _tmp55_; _tmp54_ = buttons_hbox; _tmp55_ = _data1_->warning_button; gtk_box_pack_start (_tmp54_, (GtkWidget*) _tmp55_, FALSE, FALSE, (guint) 0); } _tmp56_ = buttons_hbox; _tmp57_ = menu_button; gtk_box_pack_end (_tmp56_, (GtkWidget*) _tmp57_, FALSE, FALSE, (guint) 0); _tmp58_ = self->priv->m_vbox; _tmp59_ = buttons_hbox; gtk_box_pack_start (_tmp58_, (GtkWidget*) _tmp59_, FALSE, FALSE, (guint) 0); _tmp60_ = buttons_hbox; gtk_widget_show_all ((GtkWidget*) _tmp60_); _g_object_unref0 (state_label); _g_object_unref0 (buttons_hbox); _g_object_unref0 (title_label); _pango_attr_list_unref0 (attrs); _g_object_unref0 (text); _g_object_unref0 (menu_button); _g_object_unref0 (menu); _g_object_unref0 (prev_button); _g_object_unref0 (next_button); block1_data_unref (_data1_); _data1_ = NULL; } static void __lambda18_ (IBusEmojier* self, guint i, guint n) { self->priv->m_unicode_percent = ((gdouble) i) / n; } static void ___lambda18__ibus_emojier_load_progress_object_deserialize_unicode (IBusEmojierLoadProgressObject* _sender, guint done, guint total, gpointer self) { __lambda18_ ((IBusEmojier*) self, done, total); } static gboolean __lambda19_ (IBusEmojier* self) { GtkProgressBar* _tmp0_; GtkLabel* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; GtkProgressBar* _tmp4_; GtkLabel* _tmp5_; gboolean result = FALSE; self->priv->m_unicode_progress_id = (guint) 0; _tmp0_ = self->priv->m_unicode_progress_bar; gtk_progress_bar_set_fraction (_tmp0_, self->priv->m_unicode_percent); _tmp1_ = self->priv->m_unicode_percent_label; _tmp2_ = g_strdup_printf ("%.0f%%\n", self->priv->m_unicode_percent * 100); _tmp3_ = _tmp2_; gtk_label_set_text (_tmp1_, _tmp3_); _g_free0 (_tmp3_); _tmp4_ = self->priv->m_unicode_progress_bar; gtk_widget_show ((GtkWidget*) _tmp4_); _tmp5_ = self->priv->m_unicode_percent_label; gtk_widget_show ((GtkWidget*) _tmp5_); if (ibus_emojier_m_loaded_unicode) { ibus_emojier_show_candidate_panel (self); } result = !ibus_emojier_m_loaded_unicode; return result; } static gboolean ___lambda19__gsource_func (gpointer self) { gboolean result; result = __lambda19_ ((IBusEmojier*) self); return result; } static void ibus_emojier_show_unicode_progress_bar (IBusEmojier* self) { GtkProgressBar* _tmp0_; GtkProgressBar* _tmp1_; GtkProgressBar* _tmp2_; GtkProgressBar* _tmp3_; GtkBox* _tmp4_; GtkProgressBar* _tmp5_; GtkProgressBar* _tmp6_; GtkBox* hbox = NULL; GtkBox* _tmp7_; GtkBox* _tmp8_; GtkBox* _tmp9_; GtkBox* _tmp10_; GtkBox* _tmp11_; GtkLabel* label = NULL; GtkLabel* _tmp12_; GtkBox* _tmp13_; GtkLabel* _tmp14_; GtkLabel* _tmp15_; GtkBox* _tmp16_; GtkLabel* _tmp17_; GtkBox* _tmp18_; IBusEmojierLoadProgressObject* _tmp19_; g_return_if_fail (self != NULL); _tmp0_ = (GtkProgressBar*) gtk_progress_bar_new (); g_object_ref_sink (_tmp0_); _g_object_unref0 (self->priv->m_unicode_progress_bar); self->priv->m_unicode_progress_bar = _tmp0_; _tmp1_ = self->priv->m_unicode_progress_bar; gtk_progress_bar_set_ellipsize (_tmp1_, PANGO_ELLIPSIZE_MIDDLE); _tmp2_ = self->priv->m_unicode_progress_bar; gtk_widget_set_halign ((GtkWidget*) _tmp2_, GTK_ALIGN_CENTER); _tmp3_ = self->priv->m_unicode_progress_bar; gtk_widget_set_valign ((GtkWidget*) _tmp3_, GTK_ALIGN_CENTER); _tmp4_ = self->priv->m_vbox; _tmp5_ = self->priv->m_unicode_progress_bar; gtk_container_add ((GtkContainer*) _tmp4_, (GtkWidget*) _tmp5_); _tmp6_ = self->priv->m_unicode_progress_bar; gtk_widget_show ((GtkWidget*) _tmp6_); _tmp7_ = (GtkBox*) gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 5); g_object_ref_sink (_tmp7_); hbox = _tmp7_; _tmp8_ = hbox; gtk_widget_set_halign ((GtkWidget*) _tmp8_, GTK_ALIGN_CENTER); _tmp9_ = hbox; gtk_widget_set_valign ((GtkWidget*) _tmp9_, GTK_ALIGN_CENTER); _tmp10_ = self->priv->m_vbox; _tmp11_ = hbox; gtk_container_add ((GtkContainer*) _tmp10_, (GtkWidget*) _tmp11_); _tmp12_ = (GtkLabel*) gtk_label_new (_ ("Loading a Unicode dictionary:")); g_object_ref_sink (_tmp12_); label = _tmp12_; _tmp13_ = hbox; _tmp14_ = label; gtk_box_pack_start (_tmp13_, (GtkWidget*) _tmp14_, FALSE, TRUE, (guint) 0); _tmp15_ = (GtkLabel*) gtk_label_new (""); g_object_ref_sink (_tmp15_); _g_object_unref0 (self->priv->m_unicode_percent_label); self->priv->m_unicode_percent_label = _tmp15_; _tmp16_ = hbox; _tmp17_ = self->priv->m_unicode_percent_label; gtk_box_pack_start (_tmp16_, (GtkWidget*) _tmp17_, FALSE, TRUE, (guint) 0); _tmp18_ = hbox; gtk_widget_show_all ((GtkWidget*) _tmp18_); _tmp19_ = ibus_emojier_m_unicode_progress_object; g_signal_connect_object (_tmp19_, "deserialize-unicode", (GCallback) ___lambda18__ibus_emojier_load_progress_object_deserialize_unicode, self, 0); if (self->priv->m_unicode_progress_id > ((guint) 0)) { g_source_remove (self->priv->m_unicode_progress_id); } self->priv->m_unicode_progress_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ___lambda19__gsource_func, g_object_ref (self), g_object_unref); _g_object_unref0 (label); _g_object_unref0 (hbox); } static guint64 uint64_parse (const gchar* str, guint _base) { guint64 result = 0ULL; g_return_val_if_fail (str != NULL, 0ULL); result = g_ascii_strtoull (str, NULL, _base); return result; } static gchar* ibus_emojier_check_unicode_point (const gchar* annotation) { gchar* unicode_point = NULL; GString* buff = NULL; GString* _tmp0_; GString* retval = NULL; GString* _tmp1_; gunichar code = 0U; GString* _tmp11_; const gchar* _tmp12_; GString* _tmp13_; gchar* _tmp14_; gchar* _tmp15_; GString* _tmp16_; const gchar* _tmp17_; gchar* _tmp18_; const gchar* _tmp19_; gchar* result = NULL; g_return_val_if_fail (annotation != NULL, NULL); unicode_point = NULL; _tmp0_ = g_string_new ("0x"); buff = _tmp0_; _tmp1_ = g_string_new (""); retval = _tmp1_; { gint i = 0; i = 0; { gboolean _tmp2_ = FALSE; _tmp2_ = TRUE; while (TRUE) { gunichar ch = 0U; GString* _tmp10_; if (!_tmp2_) { gint _tmp3_; _tmp3_ = i; i = _tmp3_ + 1; } _tmp2_ = FALSE; if (!(i < g_utf8_strlen (annotation, (gssize) -1))) { break; } ch = string_get_char (annotation, (glong) i); if (ch == ((gunichar) 0)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } if (g_unichar_isspace (ch)) { gunichar code = 0U; GString* _tmp4_; const gchar* _tmp5_; GString* _tmp6_; GString* _tmp7_; gchar* _tmp8_; gchar* _tmp9_; _tmp4_ = buff; _tmp5_ = _tmp4_->str; code = (gunichar) uint64_parse (_tmp5_, (guint) 0); _tmp6_ = buff; g_string_assign (_tmp6_, "0x"); if (!g_unichar_validate (code)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } _tmp7_ = retval; _tmp8_ = g_unichar_to_string (code); _tmp9_ = _tmp8_; g_string_append (_tmp7_, _tmp9_); _g_free0 (_tmp9_); continue; } if (!g_unichar_isxdigit (ch)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } _tmp10_ = buff; g_string_append_unichar (_tmp10_, ch); } } } _tmp11_ = buff; _tmp12_ = _tmp11_->str; code = (gunichar) uint64_parse (_tmp12_, (guint) 0); if (!g_unichar_validate (code)) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } _tmp13_ = retval; _tmp14_ = g_unichar_to_string (code); _tmp15_ = _tmp14_; g_string_append (_tmp13_, _tmp15_); _g_free0 (_tmp15_); _tmp16_ = retval; _tmp17_ = _tmp16_->str; _tmp18_ = g_strdup (_tmp17_); _g_free0 (unicode_point); unicode_point = _tmp18_; _tmp19_ = unicode_point; if (_tmp19_ == NULL) { result = NULL; _g_string_free0 (retval); _g_string_free0 (buff); _g_free0 (unicode_point); return result; } result = unicode_point; _g_string_free0 (retval); _g_string_free0 (buff); return result; } static GSList* ibus_emojier_lookup_emojis_from_annotation (const gchar* annotation) { GSList* total_emojis = NULL; GSList* sub_emojis = NULL; GSList* sub_exact_unicodes = NULL; GSList* sub_unicodes = NULL; gint length = 0; gint _tmp0_; gint _tmp1_; gboolean _tmp2_ = FALSE; GHashTable* _tmp35_; gconstpointer _tmp36_; GSList* _tmp37_; GSList* result = NULL; g_return_val_if_fail (annotation != NULL, NULL); total_emojis = NULL; sub_emojis = NULL; sub_exact_unicodes = NULL; sub_unicodes = NULL; _tmp0_ = strlen (annotation); _tmp1_ = _tmp0_; length = _tmp1_; if (ibus_emojier_m_has_partial_match) { _tmp2_ = ((guint) length) >= ibus_emojier_m_partial_match_length; } else { _tmp2_ = FALSE; } if (_tmp2_) { GSList* sorted_emojis = NULL; GHashTable* _tmp3_; GList* _tmp4_; GSList* _tmp22_; sorted_emojis = NULL; _tmp3_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp4_ = g_hash_table_get_keys (_tmp3_); { GList* key_collection = NULL; GList* key_it = NULL; key_collection = _tmp4_; for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { const gchar* key = NULL; key = (const gchar*) key_it->data; { const gchar* _tmp5_; gint _tmp6_; gint _tmp7_; gboolean matched = FALSE; GHashTable* _tmp11_; const gchar* _tmp12_; gconstpointer _tmp13_; GSList* _tmp14_; _tmp5_ = key; _tmp6_ = strlen (_tmp5_); _tmp7_ = _tmp6_; if (_tmp7_ < length) { continue; } matched = FALSE; switch (ibus_emojier_m_partial_match_condition) { case 0: { const gchar* _tmp8_; _tmp8_ = key; if (g_str_has_prefix (_tmp8_, annotation)) { matched = TRUE; } break; } case 1: { const gchar* _tmp9_; _tmp9_ = key; if (g_str_has_suffix (_tmp9_, annotation)) { matched = TRUE; } break; } case 2: { const gchar* _tmp10_; _tmp10_ = key; if (string_index_of (_tmp10_, annotation, 0) >= 0) { matched = TRUE; } break; } default: { break; } } if (!matched) { continue; } _tmp11_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp12_ = key; _tmp13_ = g_hash_table_lookup (_tmp11_, _tmp12_); sub_emojis = (GSList*) _tmp13_; _tmp14_ = sub_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp14_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { GSList* _tmp15_; const gchar* _tmp16_; GCompareFunc _tmp17_; GSList* _tmp18_; _tmp15_ = total_emojis; _tmp16_ = emoji; _tmp17_ = ((GCompareFunc) g_strcmp0); _tmp18_ = g_slist_find_custom (_tmp15_, _tmp16_, _tmp17_); if (_tmp18_ == NULL) { const gchar* _tmp19_; gchar* _tmp20_; GCompareFunc _tmp21_; _tmp19_ = emoji; _tmp20_ = g_strdup (_tmp19_); _tmp21_ = ((GCompareFunc) g_strcmp0); sorted_emojis = g_slist_insert_sorted (sorted_emojis, _tmp20_, _tmp21_); } } } } } } (key_collection == NULL) ? NULL : (key_collection = (g_list_free (key_collection), NULL)); } _tmp22_ = sorted_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp22_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { gchar* _tmp23_; gchar* emoji = NULL; _tmp23_ = g_strdup ((const gchar*) emoji_it->data); emoji = _tmp23_; { GSList* _tmp24_; const gchar* _tmp25_; GCompareFunc _tmp26_; GSList* _tmp27_; _tmp24_ = total_emojis; _tmp25_ = emoji; _tmp26_ = ((GCompareFunc) g_strcmp0); _tmp27_ = g_slist_find_custom (_tmp24_, _tmp25_, _tmp26_); if (_tmp27_ == NULL) { const gchar* _tmp28_; gchar* _tmp29_; _tmp28_ = emoji; _tmp29_ = g_strdup (_tmp28_); total_emojis = g_slist_append (total_emojis, _tmp29_); } _g_free0 (emoji); } } } (sorted_emojis == NULL) ? NULL : (sorted_emojis = (_g_slist_free__g_free0_ (sorted_emojis), NULL)); } else { GHashTable* _tmp30_; gconstpointer _tmp31_; GSList* _tmp32_; _tmp30_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp31_ = g_hash_table_lookup (_tmp30_, annotation); sub_emojis = (GSList*) _tmp31_; _tmp32_ = sub_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp32_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { const gchar* _tmp33_; gchar* _tmp34_; _tmp33_ = emoji; _tmp34_ = g_strdup (_tmp33_); total_emojis = g_slist_append (total_emojis, _tmp34_); } } } } _tmp35_ = ibus_emojier_m_name_to_unicodes_dict; _tmp36_ = g_hash_table_lookup (_tmp35_, annotation); sub_exact_unicodes = (GSList*) _tmp36_; _tmp37_ = sub_exact_unicodes; { GSList* code_collection = NULL; GSList* code_it = NULL; code_collection = _tmp37_; for (code_it = code_collection; code_it != NULL; code_it = code_it->next) { gunichar code = 0U; code = (gunichar) ((gintptr) code_it->data); { gchar* ch = NULL; gchar* _tmp38_; GSList* _tmp39_; const gchar* _tmp40_; GCompareFunc _tmp41_; GSList* _tmp42_; _tmp38_ = g_unichar_to_string (code); ch = _tmp38_; _tmp39_ = total_emojis; _tmp40_ = ch; _tmp41_ = ((GCompareFunc) g_strcmp0); _tmp42_ = g_slist_find_custom (_tmp39_, _tmp40_, _tmp41_); if (_tmp42_ == NULL) { const gchar* _tmp43_; gchar* _tmp44_; _tmp43_ = ch; _tmp44_ = g_strdup (_tmp43_); total_emojis = g_slist_append (total_emojis, _tmp44_); } _g_free0 (ch); } } } if (((guint) length) >= ibus_emojier_m_partial_match_length) { GSList* sorted_unicodes = NULL; GHashTable* _tmp45_; GList* _tmp46_; GSList* _tmp60_; sorted_unicodes = NULL; _tmp45_ = ibus_emojier_m_name_to_unicodes_dict; _tmp46_ = g_hash_table_get_keys (_tmp45_); { GList* key_collection = NULL; GList* key_it = NULL; key_collection = _tmp46_; for (key_it = key_collection; key_it != NULL; key_it = key_it->next) { const gchar* key = NULL; key = (const gchar*) key_it->data; { gboolean matched = FALSE; const gchar* _tmp47_; GHashTable* _tmp48_; const gchar* _tmp49_; gconstpointer _tmp50_; GSList* _tmp51_; matched = FALSE; _tmp47_ = key; if (string_index_of (_tmp47_, annotation, 0) >= 0) { matched = TRUE; } if (!matched) { continue; } _tmp48_ = ibus_emojier_m_name_to_unicodes_dict; _tmp49_ = key; _tmp50_ = g_hash_table_lookup (_tmp48_, _tmp49_); sub_unicodes = (GSList*) _tmp50_; _tmp51_ = sub_unicodes; { GSList* code_collection = NULL; GSList* code_it = NULL; code_collection = _tmp51_; for (code_it = code_collection; code_it != NULL; code_it = code_it->next) { gunichar code = 0U; code = (gunichar) ((gintptr) code_it->data); { gchar* ch = NULL; gchar* _tmp52_; GSList* _tmp53_; const gchar* _tmp54_; GCompareFunc _tmp55_; GSList* _tmp56_; _tmp52_ = g_unichar_to_string (code); ch = _tmp52_; _tmp53_ = sorted_unicodes; _tmp54_ = ch; _tmp55_ = ((GCompareFunc) g_strcmp0); _tmp56_ = g_slist_find_custom (_tmp53_, _tmp54_, _tmp55_); if (_tmp56_ == NULL) { const gchar* _tmp57_; gchar* _tmp58_; GCompareFunc _tmp59_; _tmp57_ = ch; _tmp58_ = g_strdup (_tmp57_); _tmp59_ = ((GCompareFunc) g_strcmp0); sorted_unicodes = g_slist_insert_sorted (sorted_unicodes, _tmp58_, _tmp59_); } _g_free0 (ch); } } } } } (key_collection == NULL) ? NULL : (key_collection = (g_list_free (key_collection), NULL)); } _tmp60_ = sorted_unicodes; { GSList* ch_collection = NULL; GSList* ch_it = NULL; ch_collection = _tmp60_; for (ch_it = ch_collection; ch_it != NULL; ch_it = ch_it->next) { gchar* _tmp61_; gchar* ch = NULL; _tmp61_ = g_strdup ((const gchar*) ch_it->data); ch = _tmp61_; { GSList* _tmp62_; const gchar* _tmp63_; GCompareFunc _tmp64_; GSList* _tmp65_; _tmp62_ = total_emojis; _tmp63_ = ch; _tmp64_ = ((GCompareFunc) g_strcmp0); _tmp65_ = g_slist_find_custom (_tmp62_, _tmp63_, _tmp64_); if (_tmp65_ == NULL) { const gchar* _tmp66_; gchar* _tmp67_; _tmp66_ = ch; _tmp67_ = g_strdup (_tmp66_); total_emojis = g_slist_append (total_emojis, _tmp67_); } _g_free0 (ch); } } } (sorted_unicodes == NULL) ? NULL : (sorted_unicodes = (_g_slist_free__g_free0_ (sorted_unicodes), NULL)); } result = total_emojis; return result; } static void ibus_emojier_update_candidate_window (IBusEmojier* self) { gchar* annotation = NULL; const gchar* _tmp0_; gchar* _tmp1_; const gchar* _tmp2_; gint _tmp3_; gint _tmp4_; IBusLookupTable* _tmp5_; const gchar* _tmp6_; gint _tmp7_; gint _tmp8_; gchar* unicode_point = NULL; const gchar* _tmp9_; gchar* _tmp10_; GSList* total_emojis = NULL; const gchar* _tmp11_; GSList* _tmp18_; GSList* _tmp21_; gboolean _tmp26_ = FALSE; GSList* _tmp27_; const gchar* _tmp29_; GSList* _tmp34_; gboolean _tmp39_ = FALSE; IBusLookupTable* _tmp40_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_annotation; _tmp1_ = g_strdup (_tmp0_); annotation = _tmp1_; _tmp2_ = annotation; _tmp3_ = strlen (_tmp2_); _tmp4_ = _tmp3_; if (_tmp4_ == 0) { _g_free0 (self->priv->m_backward); self->priv->m_backward = NULL; _g_free0 (annotation); return; } _tmp5_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp5_); self->priv->m_category_active_index = -1; _tmp6_ = annotation; _tmp7_ = strlen (_tmp6_); _tmp8_ = _tmp7_; if (_tmp8_ > ibus_emojier_m_emoji_max_seq_len) { _g_free0 (annotation); return; } _tmp9_ = annotation; _tmp10_ = ibus_emojier_check_unicode_point (_tmp9_); unicode_point = _tmp10_; total_emojis = NULL; _tmp11_ = annotation; if (g_ascii_strcasecmp (_tmp11_, "history") == 0) { { gint i = 0; i = 0; { gboolean _tmp12_ = FALSE; _tmp12_ = TRUE; while (TRUE) { gchar** _tmp14_; gint _tmp14__length1; gchar** _tmp15_; gint _tmp15__length1; const gchar* _tmp16_; gchar* _tmp17_; if (!_tmp12_) { gint _tmp13_; _tmp13_ = i; i = _tmp13_ + 1; } _tmp12_ = FALSE; _tmp14_ = ibus_emojier_m_favorites; _tmp14__length1 = ibus_emojier_m_favorites_length1; if (!(i < _tmp14__length1)) { break; } _tmp15_ = ibus_emojier_m_favorites; _tmp15__length1 = ibus_emojier_m_favorites_length1; _tmp16_ = _tmp15_[i]; _tmp17_ = g_strdup (_tmp16_); total_emojis = g_slist_append (total_emojis, _tmp17_); } } } } _tmp18_ = total_emojis; if (_tmp18_ == NULL) { const gchar* _tmp19_; GSList* _tmp20_; _tmp19_ = annotation; _tmp20_ = ibus_emojier_lookup_emojis_from_annotation (_tmp19_); (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); total_emojis = _tmp20_; } _tmp21_ = total_emojis; if (_tmp21_ == NULL) { const gchar* _tmp22_; gchar* _tmp23_; const gchar* _tmp24_; GSList* _tmp25_; _tmp22_ = annotation; _tmp23_ = g_utf8_strdown (_tmp22_, (gssize) -1); _g_free0 (annotation); annotation = _tmp23_; _tmp24_ = annotation; _tmp25_ = ibus_emojier_lookup_emojis_from_annotation (_tmp24_); (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); total_emojis = _tmp25_; } _tmp27_ = total_emojis; if (_tmp27_ == NULL) { const gchar* _tmp28_; _tmp28_ = unicode_point; _tmp26_ = _tmp28_ == NULL; } else { _tmp26_ = FALSE; } if (_tmp26_) { (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); _g_free0 (unicode_point); _g_free0 (annotation); return; } _tmp29_ = unicode_point; if (_tmp29_ != NULL) { IBusText* text = NULL; const gchar* _tmp30_; IBusText* _tmp31_; IBusLookupTable* _tmp32_; IBusText* _tmp33_; _tmp30_ = unicode_point; _tmp31_ = ibus_text_new_from_string (_tmp30_); g_object_ref_sink (_tmp31_); text = _tmp31_; _tmp32_ = self->priv->m_lookup_table; _tmp33_ = text; ibus_lookup_table_append_candidate (_tmp32_, _tmp33_); _g_object_unref0 (text); } _tmp34_ = total_emojis; { GSList* emoji_collection = NULL; GSList* emoji_it = NULL; emoji_collection = _tmp34_; for (emoji_it = emoji_collection; emoji_it != NULL; emoji_it = emoji_it->next) { const gchar* emoji = NULL; emoji = (const gchar*) emoji_it->data; { IBusText* text = NULL; const gchar* _tmp35_; IBusText* _tmp36_; IBusLookupTable* _tmp37_; IBusText* _tmp38_; _tmp35_ = emoji; _tmp36_ = ibus_text_new_from_string (_tmp35_); g_object_ref_sink (_tmp36_); text = _tmp36_; _tmp37_ = self->priv->m_lookup_table; _tmp38_ = text; ibus_lookup_table_append_candidate (_tmp37_, _tmp38_); _g_object_unref0 (text); } } } _tmp40_ = self->priv->m_lookup_table; if (ibus_lookup_table_get_number_of_candidates (_tmp40_) > ((guint) 0)) { _tmp39_ = TRUE; } else { _tmp39_ = FALSE; } self->priv->m_candidate_panel_is_visible = _tmp39_; self->priv->m_candidate_panel_mode = TRUE; (total_emojis == NULL) ? NULL : (total_emojis = (_g_slist_free__g_free0_ (total_emojis), NULL)); _g_free0 (unicode_point); _g_free0 (annotation); } static gint __lambda11_ (const gchar* a, const gchar* b) { gboolean _tmp0_ = FALSE; GCompareFunc _tmp2_; gint result = 0; g_return_val_if_fail (a != NULL, 0); g_return_val_if_fail (b != NULL, 0); if (g_strcmp0 (a, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) == 0) { _tmp0_ = g_strcmp0 (b, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) != 0; } else { _tmp0_ = FALSE; } if (_tmp0_) { result = 1; return result; } else { gboolean _tmp1_ = FALSE; if (g_strcmp0 (a, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) != 0) { _tmp1_ = g_strcmp0 (b, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) == 0; } else { _tmp1_ = FALSE; } if (_tmp1_) { result = -1; return result; } } _tmp2_ = ((GCompareFunc) g_strcmp0); result = _tmp2_ (_ (a), _ (b)); return result; } static gint ___lambda11__gcompare_func (gconstpointer a, gconstpointer b) { gint result; result = __lambda11_ ((const gchar*) a, (const gchar*) b); return result; } static void ibus_emojier_update_category_list (IBusEmojier* self) { IBusLookupTable* _tmp0_; IBusText* text = NULL; gchar** _tmp1_; gint _tmp1__length1; GList* categories = NULL; GHashTable* _tmp5_; GList* _tmp6_; GList* _tmp7_; GSList* _tmp13_; g_return_if_fail (self != NULL); ibus_emojier_reset_window_mode (self); _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp0_); _tmp1_ = ibus_emojier_m_favorites; _tmp1__length1 = ibus_emojier_m_favorites_length1; if (_tmp1__length1 > 0) { IBusText* _tmp2_; IBusLookupTable* _tmp3_; IBusText* _tmp4_; _tmp2_ = ibus_text_new_from_string (IBUS_EMOJIER_EMOJI_CATEGORY_FAVORITES); g_object_ref_sink (_tmp2_); _g_object_unref0 (text); text = _tmp2_; _tmp3_ = self->priv->m_lookup_table; _tmp4_ = text; ibus_lookup_table_append_candidate (_tmp3_, _tmp4_); } _tmp5_ = ibus_emojier_m_category_to_emojis_dict; _tmp6_ = g_hash_table_get_keys (_tmp5_); categories = _tmp6_; categories = g_list_sort (categories, ___lambda11__gcompare_func); _tmp7_ = categories; { GList* category_collection = NULL; GList* category_it = NULL; category_collection = _tmp7_; for (category_it = category_collection; category_it != NULL; category_it = category_it->next) { const gchar* category = NULL; category = (const gchar*) category_it->data; { const gchar* _tmp8_; const gchar* _tmp9_; IBusText* _tmp10_; IBusLookupTable* _tmp11_; IBusText* _tmp12_; _tmp8_ = category; if (g_strcmp0 (_tmp8_, IBUS_EMOJIER_EMOJI_CATEGORY_OTHERS) == 0) { continue; } _tmp9_ = category; _tmp10_ = ibus_text_new_from_string (_tmp9_); g_object_ref_sink (_tmp10_); _g_object_unref0 (text); text = _tmp10_; _tmp11_ = self->priv->m_lookup_table; _tmp12_ = text; ibus_lookup_table_append_candidate (_tmp11_, _tmp12_); } } } _tmp13_ = ibus_emojier_m_unicode_block_list; if (g_slist_length (_tmp13_) > ((guint) 0)) { IBusText* _tmp14_; IBusLookupTable* _tmp15_; IBusText* _tmp16_; _tmp14_ = ibus_text_new_from_string (IBUS_EMOJIER_EMOJI_CATEGORY_UNICODE); g_object_ref_sink (_tmp14_); _g_object_unref0 (text); text = _tmp14_; _tmp15_ = self->priv->m_lookup_table; _tmp16_ = text; ibus_lookup_table_append_candidate (_tmp15_, _tmp16_); } (categories == NULL) ? NULL : (categories = (g_list_free (categories), NULL)); _g_object_unref0 (text); } static void ibus_emojier_update_unicode_blocks (IBusEmojier* self) { IBusLookupTable* _tmp0_; GSList* _tmp1_; g_return_if_fail (self != NULL); ibus_emojier_reset_window_mode (self); _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_clear (_tmp0_); ibus_emojier_m_show_unicode = TRUE; _tmp1_ = ibus_emojier_m_unicode_block_list; { GSList* block_collection = NULL; GSList* block_it = NULL; block_collection = _tmp1_; for (block_it = block_collection; block_it != NULL; block_it = block_it->next) { IBusUnicodeBlock* block = NULL; block = (IBusUnicodeBlock*) block_it->data; { gchar* name = NULL; IBusUnicodeBlock* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; IBusText* text = NULL; const gchar* _tmp5_; IBusText* _tmp6_; IBusLookupTable* _tmp7_; IBusText* _tmp8_; _tmp2_ = block; _tmp3_ = ibus_unicode_block_get_name (_tmp2_); _tmp4_ = g_strdup (_tmp3_); name = _tmp4_; _tmp5_ = name; _tmp6_ = ibus_text_new_from_string (_tmp5_); g_object_ref_sink (_tmp6_); text = _tmp6_; _tmp7_ = self->priv->m_lookup_table; _tmp8_ = text; ibus_lookup_table_append_candidate (_tmp7_, _tmp8_); _g_object_unref0 (text); _g_free0 (name); } } } } static void ibus_emojier_show_code_point_description (IBusEmojier* self, const gchar* text) { IBusEmojierEPaddedLabelBox* widget_code = NULL; gchar* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; IBusEmojierEPaddedLabelBox* _tmp4_; IBusEmojierEPaddedLabelBox* _tmp5_; GtkBox* _tmp6_; IBusEmojierEPaddedLabelBox* _tmp7_; IBusEmojierEPaddedLabelBox* _tmp8_; GHashTable* _tmp9_; gconstpointer _tmp10_; g_return_if_fail (self != NULL); g_return_if_fail (text != NULL); _tmp0_ = ibus_emojier_utf8_code_point (text); _tmp1_ = _tmp0_; _tmp2_ = g_strdup_printf (_ ("Code point: %s"), _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = ibus_emojier_epadded_label_box_new (_tmp3_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp4_); _tmp5_ = _tmp4_; _g_free0 (_tmp3_); _g_free0 (_tmp1_); widget_code = _tmp5_; _tmp6_ = self->priv->m_vbox; _tmp7_ = widget_code; gtk_container_add ((GtkContainer*) _tmp6_, (GtkWidget*) _tmp7_); _tmp8_ = widget_code; gtk_widget_show_all ((GtkWidget*) _tmp8_); _tmp9_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp10_ = g_hash_table_lookup (_tmp9_, text); if (((GSList*) _tmp10_) != NULL) { IBusEmojierEPaddedLabelBox* widget_has_variant = NULL; IBusEmojierEPaddedLabelBox* _tmp11_; GtkBox* _tmp12_; IBusEmojierEPaddedLabelBox* _tmp13_; IBusEmojierEPaddedLabelBox* _tmp14_; _tmp11_ = ibus_emojier_epadded_label_box_new (_ ("Has emoji variants"), GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp11_); widget_has_variant = _tmp11_; _tmp12_ = self->priv->m_vbox; _tmp13_ = widget_has_variant; gtk_container_add ((GtkContainer*) _tmp12_, (GtkWidget*) _tmp13_); _tmp14_ = widget_has_variant; gtk_widget_show_all ((GtkWidget*) _tmp14_); _g_object_unref0 (widget_has_variant); } _g_object_unref0 (widget_code); } static gboolean ___lambda10_ (IBusEmojier* self, GtkWidget* w, GdkEventButton* e) { gboolean _tmp0_ = FALSE; gboolean result = FALSE; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); if (self->priv->m_backward_index >= 0) { const gchar* _tmp1_; _tmp1_ = self->priv->m_backward; _tmp0_ = _tmp1_ != NULL; } else { _tmp0_ = FALSE; } if (_tmp0_) { const gchar* _tmp2_; _tmp2_ = self->priv->m_backward; ibus_emojier_show_emoji_for_category (self, _tmp2_); ibus_emojier_show_candidate_panel (self); } else { ibus_emojier_hide_candidate_panel (self); gtk_widget_show_all ((GtkWidget*) self); } result = TRUE; return result; } static gboolean ____lambda10__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = ___lambda10_ ((IBusEmojier*) self, _sender, event); return result; } 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_)) { IBusEmojier* self; self = _data2_->self; _g_object_unref0 (self); g_slice_free (Block2Data, _data2_); } } static gboolean _____lambda12_ (Block2Data* _data2_, GtkWidget* w, GdkEventButton* e) { IBusEmojier* self; GdkModifierType _tmp0_; gboolean result = FALSE; self = _data2_->self; g_return_val_if_fail (w != NULL, FALSE); g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = e->state; g_signal_emit (self, ibus_emojier_signals[IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL], 0, _data2_->index, e->button, (guint) _tmp0_); result = TRUE; return result; } static gboolean ______lambda12__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) { gboolean result; result = _____lambda12_ (self, _sender, event); return result; } static GdkEventMotion* _vala_GdkEventMotion_copy (GdkEventMotion* self) { return g_boxed_copy (gdk_event_get_type (), self); } static gpointer __vala_GdkEventMotion_copy0 (gpointer self) { return self ? _vala_GdkEventMotion_copy (self) : NULL; } static void _vala_GdkEventMotion_free (GdkEventMotion* self) { g_boxed_free (gdk_event_get_type (), self); } static gboolean __lambda14_ (IBusEmojier* self) { gboolean result = FALSE; ibus_emojier_show_candidate_panel (self); result = FALSE; return result; } static gboolean ___lambda14__gsource_func (gpointer self) { gboolean result; result = __lambda14_ ((IBusEmojier*) self); return result; } static gboolean _____lambda13_ (Block2Data* _data2_, GdkEventMotion* e) { IBusEmojier* self; IBusLookupTable* _tmp0_; GdkEventMotion* pe = NULL; GdkEventMotion* _tmp1_; gboolean _tmp2_ = FALSE; GdkEventMotion* _tmp3_; GdkEventMotion* _tmp5_; GdkEventMotion* _tmp6_; IBusLookupTable* _tmp7_; gboolean _tmp8_ = FALSE; gboolean result = FALSE; self = _data2_->self; g_return_val_if_fail (e != NULL, FALSE); if (!self->priv->m_enter_notify_enable) { result = FALSE; return result; } _tmp0_ = self->priv->m_lookup_table; if (ibus_lookup_table_get_cursor_pos (_tmp0_) == _data2_->index) { result = FALSE; return result; } _tmp1_ = __vala_GdkEventMotion_copy0 (e); pe = _tmp1_; _tmp3_ = pe; if (ibus_emojier_m_mouse_x == _tmp3_->x_root) { GdkEventMotion* _tmp4_; _tmp4_ = pe; _tmp2_ = ibus_emojier_m_mouse_y == _tmp4_->y_root; } else { _tmp2_ = FALSE; } if (_tmp2_) { result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } _tmp5_ = pe; ibus_emojier_m_mouse_x = _tmp5_->x_root; _tmp6_ = pe; ibus_emojier_m_mouse_y = _tmp6_->y_root; _tmp7_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp7_, _data2_->index); if (self->priv->m_entry_notify_show_id > ((guint) 0)) { GMainContext* _tmp9_; GSource* _tmp10_; _tmp9_ = g_main_context_default (); _tmp10_ = g_main_context_find_source_by_id (_tmp9_, self->priv->m_entry_notify_show_id); _tmp8_ = _tmp10_ != NULL; } else { _tmp8_ = FALSE; } if (_tmp8_) { g_source_remove (self->priv->m_entry_notify_show_id); } self->priv->m_entry_notify_show_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ___lambda14__gsource_func, g_object_ref (self), g_object_unref); result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } static gboolean ______lambda13__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self) { gboolean result; result = _____lambda13_ (self, event); return result; } static void _vala_array_add2 (GtkLabel** * array, gint* length, gint* 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 ibus_emojier_show_candidate_panel (IBusEmojier* self) { guint page_size = 0U; IBusLookupTable* _tmp0_; guint ncandidates = 0U; IBusLookupTable* _tmp1_; guint cursor = 0U; IBusLookupTable* _tmp2_; guint page_start_pos = 0U; guint page_end_pos = 0U; GtkButton* backward_button = NULL; const gchar* _tmp3_; IBusEmojierEGrid* grid = NULL; IBusEmojierEGrid* _tmp12_; gint n = 0; g_return_if_fail (self != NULL); ibus_emojier_remove_all_children (self); ibus_emojier_set_fixed_size (self); if (ibus_emojier_m_emoji_font_changed) { ibus_emojier_set_css_data (self); ibus_emojier_m_emoji_font_changed = FALSE; } _tmp0_ = self->priv->m_lookup_table; page_size = ibus_lookup_table_get_page_size (_tmp0_); _tmp1_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp1_); _tmp2_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp2_); page_start_pos = (cursor / page_size) * page_size; page_end_pos = MIN (page_start_pos + page_size, ncandidates); backward_button = NULL; _tmp3_ = self->priv->m_backward; if (_tmp3_ != NULL) { gchar* backward_desc = NULL; const gchar* _tmp4_; gchar* _tmp5_; IBusEmojierEPaddedLabelBox* label = NULL; const gchar* _tmp6_; IBusEmojierEPaddedLabelBox* _tmp7_; GtkButton* _tmp8_; GtkButton* _tmp9_; IBusEmojierEPaddedLabelBox* _tmp10_; GtkButton* _tmp11_; _tmp4_ = self->priv->m_backward; _tmp5_ = g_strdup (_ (_tmp4_)); backward_desc = _tmp5_; _tmp6_ = backward_desc; _tmp7_ = ibus_emojier_epadded_label_box_new (_tmp6_, GTK_ALIGN_CENTER, IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD, NULL); g_object_ref_sink (_tmp7_); label = _tmp7_; _tmp8_ = (GtkButton*) gtk_button_new (); g_object_ref_sink (_tmp8_); _g_object_unref0 (backward_button); backward_button = _tmp8_; _tmp9_ = backward_button; _tmp10_ = label; gtk_container_add ((GtkContainer*) _tmp9_, (GtkWidget*) _tmp10_); _tmp11_ = backward_button; g_signal_connect_object ((GtkWidget*) _tmp11_, "button-press-event", (GCallback) ____lambda10__gtk_widget_button_press_event, self, 0); _g_object_unref0 (label); _g_free0 (backward_desc); } _tmp12_ = ibus_emojier_egrid_new (); g_object_ref_sink (_tmp12_); grid = _tmp12_; n = 0; { guint i = 0U; i = page_start_pos; { gboolean _tmp13_ = FALSE; _tmp13_ = TRUE; while (TRUE) { Block2Data* _data2_; gchar* text = NULL; IBusLookupTable* _tmp15_; IBusText* _tmp16_; const gchar* _tmp17_; gchar* _tmp18_; gboolean has_variant = FALSE; GHashTable* _tmp19_; const gchar* _tmp20_; gconstpointer _tmp21_; GtkLabel* label = NULL; const gchar* _tmp33_; GtkLabel* _tmp46_; GtkLabel* _tmp47_; GtkEventBox* candidate_ebox = NULL; GtkEventBox* _tmp48_; GtkEventBox* _tmp49_; GtkEventBox* _tmp50_; GtkLabel* _tmp51_; GtkEventBox* _tmp52_; GtkEventBox* _tmp53_; IBusEmojierEGrid* _tmp54_; GtkEventBox* _tmp55_; gint _tmp56_; GtkLabel** _tmp57_; gint _tmp57__length1; GtkLabel* _tmp58_; GtkLabel* _tmp59_; _data2_ = g_slice_new0 (Block2Data); _data2_->_ref_count_ = 1; _data2_->self = g_object_ref (self); if (!_tmp13_) { guint _tmp14_; _tmp14_ = i; i = _tmp14_ + 1; } _tmp13_ = FALSE; if (!(i < page_end_pos)) { block2_data_unref (_data2_); _data2_ = NULL; break; } _tmp15_ = self->priv->m_lookup_table; _tmp16_ = ibus_lookup_table_get_candidate (_tmp15_, i); _tmp17_ = _tmp16_->text; _tmp18_ = g_strdup (_tmp17_); text = _tmp18_; _tmp19_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp20_ = text; _tmp21_ = g_hash_table_lookup (_tmp19_, _tmp20_); has_variant = ((GSList*) _tmp21_) != NULL; if (i == cursor) { const gchar* _tmp22_; IBusEmojierESelectedLabel* _tmp23_; GtkLabel* _tmp24_; _tmp22_ = text; _tmp23_ = ibus_emojier_eselected_label_new (_tmp22_); _tmp24_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp23_, gtk_label_get_type ()) ? ((GtkLabel*) _tmp23_) : NULL; if (_tmp24_ == NULL) { _g_object_unref0 (_tmp23_); } if (_tmp24_ != NULL) { g_object_ref_sink (_tmp24_); } _g_object_unref0 (label); label = _tmp24_; } else { gboolean _tmp25_ = FALSE; gboolean _tmp26_ = FALSE; if (ibus_emojier_m_show_emoji_variant) { _tmp26_ = has_variant; } else { _tmp26_ = FALSE; } if (_tmp26_) { _tmp25_ = self->priv->m_backward_index < 0; } else { _tmp25_ = FALSE; } if (_tmp25_) { const gchar* _tmp27_; IBusEmojierEGoldLabel* _tmp28_; GtkLabel* _tmp29_; _tmp27_ = text; _tmp28_ = ibus_emojier_egold_label_new (_tmp27_); _tmp29_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp28_, gtk_label_get_type ()) ? ((GtkLabel*) _tmp28_) : NULL; if (_tmp29_ == NULL) { _g_object_unref0 (_tmp28_); } if (_tmp29_ != NULL) { g_object_ref_sink (_tmp29_); } _g_object_unref0 (label); label = _tmp29_; } else { const gchar* _tmp30_; IBusEmojierEWhiteLabel* _tmp31_; GtkLabel* _tmp32_; _tmp30_ = text; _tmp31_ = ibus_emojier_ewhite_label_new (_tmp30_); _tmp32_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp31_, gtk_label_get_type ()) ? ((GtkLabel*) _tmp31_) : NULL; if (_tmp32_ == NULL) { _g_object_unref0 (_tmp31_); } if (_tmp32_ != NULL) { g_object_ref_sink (_tmp32_); } _g_object_unref0 (label); label = _tmp32_; } } _tmp33_ = text; if (g_utf8_strlen (_tmp33_, (gssize) -1) > 2) { gchar* font_family = NULL; const gchar* _tmp34_; gchar* _tmp35_; gint font_size = 0; gchar* emoji_font = NULL; const gchar* _tmp36_; gchar* _tmp37_; gchar* markup = NULL; const gchar* _tmp38_; const gchar* _tmp39_; gchar* _tmp40_; gchar* _tmp41_; gchar* _tmp42_; gchar* _tmp43_; GtkLabel* _tmp44_; const gchar* _tmp45_; _tmp34_ = ibus_emojier_m_emoji_font_family; _tmp35_ = g_strdup (_tmp34_); font_family = _tmp35_; font_size = ibus_emojier_m_emoji_font_size - 2; _tmp36_ = font_family; _tmp37_ = g_strdup_printf ("%s %d", _tmp36_, font_size); emoji_font = _tmp37_; _tmp38_ = emoji_font; _tmp39_ = text; _tmp40_ = ibus_emojier_utf8_entity (_tmp39_); _tmp41_ = _tmp40_; _tmp42_ = g_strdup_printf ("%s", _tmp38_, _tmp41_); _tmp43_ = _tmp42_; _g_free0 (_tmp41_); markup = _tmp43_; _tmp44_ = label; _tmp45_ = markup; gtk_label_set_markup (_tmp44_, _tmp45_); _g_free0 (markup); _g_free0 (emoji_font); _g_free0 (font_family); } _tmp46_ = label; gtk_widget_set_halign ((GtkWidget*) _tmp46_, GTK_ALIGN_FILL); _tmp47_ = label; gtk_widget_set_valign ((GtkWidget*) _tmp47_, GTK_ALIGN_FILL); _tmp48_ = (GtkEventBox*) gtk_event_box_new (); g_object_ref_sink (_tmp48_); candidate_ebox = _tmp48_; _tmp49_ = candidate_ebox; gtk_widget_add_events ((GtkWidget*) _tmp49_, (gint) GDK_POINTER_MOTION_MASK); _tmp50_ = candidate_ebox; _tmp51_ = label; gtk_container_add ((GtkContainer*) _tmp50_, (GtkWidget*) _tmp51_); _data2_->index = i; _tmp52_ = candidate_ebox; g_signal_connect_data ((GtkWidget*) _tmp52_, "button-press-event", (GCallback) ______lambda12__gtk_widget_button_press_event, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); _tmp53_ = candidate_ebox; g_signal_connect_data ((GtkWidget*) _tmp53_, "motion-notify-event", (GCallback) ______lambda13__gtk_widget_motion_notify_event, block2_data_ref (_data2_), (GClosureNotify) block2_data_unref, 0); _tmp54_ = grid; _tmp55_ = candidate_ebox; gtk_grid_attach ((GtkGrid*) _tmp54_, (GtkWidget*) _tmp55_, n % ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE), n / ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE), 1, 1); _tmp56_ = n; n = _tmp56_ + 1; _tmp57_ = self->priv->m_candidates; _tmp57__length1 = self->priv->m_candidates_length1; _tmp58_ = label; _tmp59_ = _g_object_ref0 (_tmp58_); _vala_array_add2 (&self->priv->m_candidates, &self->priv->m_candidates_length1, &self->priv->_m_candidates_size_, _tmp59_); _g_object_unref0 (candidate_ebox); _g_object_unref0 (label); _g_free0 (text); block2_data_unref (_data2_); _data2_ = NULL; } } } self->priv->m_candidate_panel_is_visible = TRUE; if (!self->priv->m_is_up_side_down) { GtkButton* _tmp60_; ibus_emojier_show_arrow_buttons (self); _tmp60_ = backward_button; if (_tmp60_ != NULL) { GtkBox* _tmp61_; GtkButton* _tmp62_; GtkButton* _tmp63_; _tmp61_ = self->priv->m_vbox; _tmp62_ = backward_button; gtk_container_add ((GtkContainer*) _tmp61_, (GtkWidget*) _tmp62_); _tmp63_ = backward_button; gtk_widget_show_all ((GtkWidget*) _tmp63_); } if (n > 0) { GtkBox* _tmp64_; IBusEmojierEGrid* _tmp65_; IBusEmojierEGrid* _tmp66_; _tmp64_ = self->priv->m_vbox; _tmp65_ = grid; gtk_container_add ((GtkContainer*) _tmp64_, (GtkWidget*) _tmp65_); _tmp66_ = grid; gtk_widget_show_all ((GtkWidget*) _tmp66_); ibus_emojier_show_description (self); } if (!ibus_emojier_m_loaded_unicode) { ibus_emojier_show_unicode_progress_bar (self); } } else { GtkButton* _tmp70_; if (!ibus_emojier_m_loaded_unicode) { ibus_emojier_show_unicode_progress_bar (self); } if (n > 0) { GtkBox* _tmp67_; IBusEmojierEGrid* _tmp68_; IBusEmojierEGrid* _tmp69_; ibus_emojier_show_description (self); _tmp67_ = self->priv->m_vbox; _tmp68_ = grid; gtk_container_add ((GtkContainer*) _tmp67_, (GtkWidget*) _tmp68_); _tmp69_ = grid; gtk_widget_show_all ((GtkWidget*) _tmp69_); } _tmp70_ = backward_button; if (_tmp70_ != NULL) { GtkBox* _tmp71_; GtkButton* _tmp72_; GtkButton* _tmp73_; _tmp71_ = self->priv->m_vbox; _tmp72_ = backward_button; gtk_container_add ((GtkContainer*) _tmp71_, (GtkWidget*) _tmp72_); _tmp73_ = backward_button; gtk_widget_show_all ((GtkWidget*) _tmp73_); } ibus_emojier_show_arrow_buttons (self); } _g_object_unref0 (grid); _g_object_unref0 (backward_button); } static void ibus_emojier_show_description (IBusEmojier* self) { guint cursor = 0U; IBusLookupTable* _tmp0_; gchar* text = NULL; IBusLookupTable* _tmp1_; IBusText* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; IBusEmojiData* data = NULL; GHashTable* _tmp5_; const gchar* _tmp6_; gconstpointer _tmp7_; IBusEmojiData* _tmp8_; const gchar* _tmp11_; IBusEmojierEPaddedLabelBox* widget = NULL; gchar* _tmp18_; gchar* _tmp19_; IBusEmojierEPaddedLabelBox* _tmp20_; IBusEmojierEPaddedLabelBox* _tmp21_; GtkBox* _tmp22_; IBusEmojierEPaddedLabelBox* _tmp23_; IBusEmojierEPaddedLabelBox* _tmp24_; const gchar* _tmp25_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp0_); _tmp1_ = self->priv->m_lookup_table; _tmp2_ = ibus_lookup_table_get_candidate (_tmp1_, cursor); _tmp3_ = _tmp2_->text; _tmp4_ = g_strdup (_tmp3_); text = _tmp4_; _tmp5_ = ibus_emojier_m_emoji_to_data_dict; _tmp6_ = text; _tmp7_ = g_hash_table_lookup (_tmp5_, _tmp6_); data = (IBusEmojiData*) _tmp7_; _tmp8_ = data; if (_tmp8_ != NULL) { IBusEmojiData* _tmp9_; const gchar* _tmp10_; _tmp9_ = data; _tmp10_ = text; ibus_emojier_show_emoji_description (self, _tmp9_, _tmp10_); _g_free0 (text); return; } _tmp11_ = text; if (g_utf8_strlen (_tmp11_, (gssize) -1) <= 1) { gunichar code = 0U; const gchar* _tmp12_; IBusUnicodeData* udata = NULL; GHashTable* _tmp13_; gconstpointer _tmp14_; IBusUnicodeData* _tmp15_; _tmp12_ = text; code = string_get_char (_tmp12_, (glong) 0); _tmp13_ = ibus_emojier_m_unicode_to_data_dict; _tmp14_ = g_hash_table_lookup (_tmp13_, (gpointer) ((gintptr) code)); udata = (IBusUnicodeData*) _tmp14_; _tmp15_ = udata; if (_tmp15_ != NULL) { IBusUnicodeData* _tmp16_; const gchar* _tmp17_; _tmp16_ = udata; _tmp17_ = text; ibus_emojier_show_unicode_description (self, _tmp16_, _tmp17_); _g_free0 (text); return; } } _tmp18_ = g_strdup_printf (_ ("Description: %s"), _ ("None")); _tmp19_ = _tmp18_; _tmp20_ = ibus_emojier_epadded_label_box_new (_tmp19_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp20_); _tmp21_ = _tmp20_; _g_free0 (_tmp19_); widget = _tmp21_; _tmp22_ = self->priv->m_vbox; _tmp23_ = widget; gtk_container_add ((GtkContainer*) _tmp22_, (GtkWidget*) _tmp23_); _tmp24_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp24_); _tmp25_ = text; ibus_emojier_show_code_point_description (self, _tmp25_); _g_object_unref0 (widget); _g_free0 (text); } static void ibus_emojier_show_emoji_description (IBusEmojier* self, IBusEmojiData* data, const gchar* text) { const gchar* description = NULL; const gchar* _tmp0_; GSList* annotations = NULL; GSList* _tmp9_; GSList* _tmp10_; GString* buff = NULL; GString* _tmp11_; gint i = 0; GSList* _tmp12_; GString* _tmp27_; const gchar* _tmp28_; g_return_if_fail (self != NULL); g_return_if_fail (data != NULL); g_return_if_fail (text != NULL); _tmp0_ = ibus_emoji_data_get_description (data); description = _tmp0_; { IBusEmojierEPaddedLabelBox* widget = NULL; const gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; IBusEmojierEPaddedLabelBox* _tmp4_; IBusEmojierEPaddedLabelBox* _tmp5_; GtkBox* _tmp6_; IBusEmojierEPaddedLabelBox* _tmp7_; IBusEmojierEPaddedLabelBox* _tmp8_; _tmp1_ = description; _tmp2_ = g_strdup_printf (_ ("Description: %s"), _tmp1_); _tmp3_ = _tmp2_; _tmp4_ = ibus_emojier_epadded_label_box_new (_tmp3_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp4_); _tmp5_ = _tmp4_; _g_free0 (_tmp3_); widget = _tmp5_; _tmp6_ = self->priv->m_vbox; _tmp7_ = widget; gtk_container_add ((GtkContainer*) _tmp6_, (GtkWidget*) _tmp7_); _tmp8_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp8_); _g_object_unref0 (widget); } _tmp9_ = ibus_emoji_data_get_annotations (data); _tmp10_ = g_slist_copy_deep (_tmp9_, _g_strdup_gcopy_func, NULL); annotations = _tmp10_; _tmp11_ = g_string_new (""); buff = _tmp11_; i = 0; _tmp12_ = annotations; { GSList* annotation_collection = NULL; GSList* annotation_it = NULL; annotation_collection = _tmp12_; for (annotation_it = annotation_collection; annotation_it != NULL; annotation_it = annotation_it->next) { const gchar* annotation = NULL; annotation = (const gchar*) annotation_it->data; { gint _tmp13_; GString* _tmp18_; const gchar* _tmp19_; _tmp13_ = i; i = _tmp13_ + 1; if (_tmp13_ == 0) { GString* _tmp14_; const gchar* _tmp15_; _tmp14_ = buff; _tmp15_ = annotation; g_string_append_printf (_tmp14_, _ ("Annotations: %s"), _tmp15_); } else { GString* _tmp16_; const gchar* _tmp17_; _tmp16_ = buff; _tmp17_ = annotation; g_string_append_printf (_tmp16_, " | %s", _tmp17_); } _tmp18_ = buff; _tmp19_ = _tmp18_->str; if (g_utf8_strlen (_tmp19_, (gssize) -1) > 30) { IBusEmojierEPaddedLabelBox* widget = NULL; GString* _tmp20_; const gchar* _tmp21_; IBusEmojierEPaddedLabelBox* _tmp22_; GtkBox* _tmp23_; IBusEmojierEPaddedLabelBox* _tmp24_; IBusEmojierEPaddedLabelBox* _tmp25_; GString* _tmp26_; _tmp20_ = buff; _tmp21_ = _tmp20_->str; _tmp22_ = ibus_emojier_epadded_label_box_new (_tmp21_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp22_); widget = _tmp22_; _tmp23_ = self->priv->m_vbox; _tmp24_ = widget; gtk_container_add ((GtkContainer*) _tmp23_, (GtkWidget*) _tmp24_); _tmp25_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp25_); _tmp26_ = buff; g_string_erase (_tmp26_, (gssize) 0, (gssize) -1); _g_object_unref0 (widget); } } } } _tmp27_ = buff; _tmp28_ = _tmp27_->str; if (g_strcmp0 (_tmp28_, "") != 0) { IBusEmojierEPaddedLabelBox* widget = NULL; GString* _tmp29_; const gchar* _tmp30_; IBusEmojierEPaddedLabelBox* _tmp31_; GtkBox* _tmp32_; IBusEmojierEPaddedLabelBox* _tmp33_; IBusEmojierEPaddedLabelBox* _tmp34_; _tmp29_ = buff; _tmp30_ = _tmp29_->str; _tmp31_ = ibus_emojier_epadded_label_box_new (_tmp30_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp31_); widget = _tmp31_; _tmp32_ = self->priv->m_vbox; _tmp33_ = widget; gtk_container_add ((GtkContainer*) _tmp32_, (GtkWidget*) _tmp33_); _tmp34_ = widget; gtk_widget_show_all ((GtkWidget*) _tmp34_); _g_object_unref0 (widget); } ibus_emojier_show_code_point_description (self, text); _g_string_free0 (buff); (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); } static void ibus_emojier_show_unicode_description (IBusEmojier* self, IBusUnicodeData* data, const gchar* text) { const gchar* name = NULL; const gchar* _tmp0_; const gchar* alias = NULL; const gchar* _tmp6_; g_return_if_fail (self != NULL); g_return_if_fail (data != NULL); g_return_if_fail (text != NULL); _tmp0_ = ibus_unicode_data_get_name (data); name = _tmp0_; { IBusEmojierEPaddedLabelBox* widget = NULL; gchar* _tmp1_; gchar* _tmp2_; IBusEmojierEPaddedLabelBox* _tmp3_; IBusEmojierEPaddedLabelBox* _tmp4_; GtkBox* _tmp5_; _tmp1_ = g_strdup_printf (_ ("Name: %s"), name); _tmp2_ = _tmp1_; _tmp3_ = ibus_emojier_epadded_label_box_new (_tmp2_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp3_); _tmp4_ = _tmp3_; _g_free0 (_tmp2_); widget = _tmp4_; _tmp5_ = self->priv->m_vbox; gtk_container_add ((GtkContainer*) _tmp5_, (GtkWidget*) widget); gtk_widget_show_all ((GtkWidget*) widget); _g_object_unref0 (widget); } _tmp6_ = ibus_unicode_data_get_alias (data); alias = _tmp6_; { IBusEmojierEPaddedLabelBox* widget = NULL; gchar* _tmp7_; gchar* _tmp8_; IBusEmojierEPaddedLabelBox* _tmp9_; IBusEmojierEPaddedLabelBox* _tmp10_; GtkBox* _tmp11_; _tmp7_ = g_strdup_printf (_ ("Alias: %s"), alias); _tmp8_ = _tmp7_; _tmp9_ = ibus_emojier_epadded_label_box_new (_tmp8_, GTK_ALIGN_START, IBUS_EMOJIER_TRAVEL_DIRECTION_NONE, NULL); g_object_ref_sink (_tmp9_); _tmp10_ = _tmp9_; _g_free0 (_tmp8_); widget = _tmp10_; _tmp11_ = self->priv->m_vbox; gtk_container_add ((GtkContainer*) _tmp11_, (GtkWidget*) widget); gtk_widget_show_all ((GtkWidget*) widget); _g_object_unref0 (widget); } ibus_emojier_show_code_point_description (self, text); } static void ibus_emojier_hide_candidate_panel (IBusEmojier* self) { gchar* _tmp0_; g_return_if_fail (self != NULL); gtk_widget_hide ((GtkWidget*) self); self->priv->m_enter_notify_enable = TRUE; _tmp0_ = g_strdup (""); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp0_; ibus_emojier_remove_all_children (self); if (ibus_emojier_m_show_unicode) { ibus_emojier_update_unicode_blocks (self); } else { ibus_emojier_update_category_list (self); } } static gboolean __lambda24_ (IBusEmojier* self) { gboolean result = FALSE; self->priv->m_enter_notify_enable = TRUE; result = FALSE; return result; } static gboolean ___lambda24__gsource_func (gpointer self) { gboolean result; result = __lambda24_ ((IBusEmojier*) self); return result; } static void ibus_emojier_enter_notify_disable_with_timer (IBusEmojier* self) { g_return_if_fail (self != NULL); self->priv->m_enter_notify_enable = FALSE; if (self->priv->m_entry_notify_disable_id > ((guint) 0)) { g_source_remove (self->priv->m_entry_notify_disable_id); } self->priv->m_entry_notify_show_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ___lambda24__gsource_func, g_object_ref (self), g_object_unref); } static void ibus_emojier_candidate_panel_cursor_down (IBusEmojier* self) { guint ncandidates = 0U; IBusLookupTable* _tmp0_; guint cursor = 0U; IBusLookupTable* _tmp1_; g_return_if_fail (self != NULL); ibus_emojier_enter_notify_disable_with_timer (self); _tmp0_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp0_); _tmp1_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp1_); if ((cursor + IBUS_EMOJIER_EMOJI_GRID_PAGE) < ncandidates) { IBusLookupTable* _tmp2_; _tmp2_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp2_, cursor + IBUS_EMOJIER_EMOJI_GRID_PAGE); } else { if ((cursor % IBUS_EMOJIER_EMOJI_GRID_PAGE) < ncandidates) { IBusLookupTable* _tmp3_; _tmp3_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp3_, cursor % IBUS_EMOJIER_EMOJI_GRID_PAGE); } else { IBusLookupTable* _tmp4_; _tmp4_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp4_, (guint) 0); } } } static void ibus_emojier_candidate_panel_cursor_up (IBusEmojier* self) { gint ncandidates = 0; IBusLookupTable* _tmp0_; gint cursor = 0; IBusLookupTable* _tmp1_; gint highest_pos = 0; g_return_if_fail (self != NULL); ibus_emojier_enter_notify_disable_with_timer (self); _tmp0_ = self->priv->m_lookup_table; ncandidates = (gint) ibus_lookup_table_get_number_of_candidates (_tmp0_); _tmp1_ = self->priv->m_lookup_table; cursor = (gint) ibus_lookup_table_get_cursor_pos (_tmp1_); highest_pos = (((ncandidates - 1) / ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)) * ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)) + (cursor % ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)); if ((cursor - ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE)) >= 0) { IBusLookupTable* _tmp2_; _tmp2_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp2_, (guint) (cursor - ((gint) IBUS_EMOJIER_EMOJI_GRID_PAGE))); } else { if (highest_pos < ncandidates) { IBusLookupTable* _tmp3_; _tmp3_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp3_, (guint) highest_pos); } else { IBusLookupTable* _tmp4_; _tmp4_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp4_, (guint) 0); } } } static gint ibus_emojier_get_page_num (IBusEmojier* self) { GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp0_; GtkListBoxRow* _tmp1_; GtkListBoxRow* _tmp2_; GtkAllocation alloc = {0}; GtkAllocation _tmp3_ = {0}; GtkListBoxRow* _tmp4_; GtkAllocation _tmp5_ = {0}; GtkAdjustment* adjustment = NULL; IBusEmojierEScrolledWindow* _tmp6_; GtkAdjustment* _tmp7_; GtkAdjustment* _tmp8_; gint page_size = 0; GtkAdjustment* _tmp9_; gint page_num = 0; GtkAllocation _tmp10_; gint _tmp11_ = 0; GtkAllocation _tmp12_; gint result = 0; g_return_val_if_fail (self != NULL, 0); if (self->priv->m_category_active_index < 0) { self->priv->m_category_active_index = 0; } _tmp0_ = self->priv->m_list_box; _tmp1_ = gtk_list_box_get_row_at_index ((GtkListBox*) _tmp0_, self->priv->m_category_active_index); _tmp2_ = _g_object_ref0 (_tmp1_); row = _tmp2_; _tmp3_.x = 0; _tmp3_.y = 0; _tmp3_.width = 0; _tmp3_.height = 0; alloc = _tmp3_; _tmp4_ = row; gtk_widget_get_allocation ((GtkWidget*) _tmp4_, &_tmp5_); alloc = _tmp5_; _tmp6_ = self->priv->m_scrolled_window; _tmp7_ = gtk_scrolled_window_get_vadjustment ((GtkScrolledWindow*) _tmp6_); _tmp8_ = _g_object_ref0 (_tmp7_); adjustment = _tmp8_; _tmp9_ = adjustment; page_size = (gint) gtk_adjustment_get_page_size (_tmp9_); _tmp10_ = alloc; page_num = page_size / _tmp10_.height; _tmp12_ = alloc; if ((page_size % _tmp12_.height) > 0) { _tmp11_ = 1; } else { _tmp11_ = 0; } page_num += _tmp11_; result = page_num; _g_object_unref0 (adjustment); _g_object_unref0 (row); return result; } static gboolean ibus_emojier_category_list_cursor_move (IBusEmojier* self, guint keyval) { IBusEmojierEListBox* _tmp0_; GList* list = NULL; IBusEmojierEListBox* _tmp1_; GList* _tmp2_; gint length = 0; GList* _tmp3_; GtkListBoxRow* row = NULL; IBusEmojierEListBox* _tmp4_; GtkListBoxRow* _tmp5_; GtkListBoxRow* _tmp6_; GtkListBoxRow* _tmp7_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_list_box; g_return_val_if_fail (_tmp0_ != NULL, FALSE); _tmp1_ = self->priv->m_list_box; _tmp2_ = gtk_container_get_children ((GtkContainer*) _tmp1_); list = _tmp2_; _tmp3_ = list; length = (gint) g_list_length (_tmp3_); if (length == 0) { result = FALSE; (list == NULL) ? NULL : (list = (g_list_free (list), NULL)); return result; } switch (keyval) { case GDK_KEY_Down: { self->priv->m_category_active_index = self->priv->m_category_active_index + 1; if (self->priv->m_category_active_index == length) { self->priv->m_category_active_index = 0; } break; } case GDK_KEY_Up: { self->priv->m_category_active_index = self->priv->m_category_active_index - 1; if (self->priv->m_category_active_index < 0) { self->priv->m_category_active_index = length - 1; } break; } case GDK_KEY_Home: { self->priv->m_category_active_index = 0; break; } case GDK_KEY_End: { self->priv->m_category_active_index = length - 1; break; } case GDK_KEY_Page_Down: { gint page_num = 0; page_num = ibus_emojier_get_page_num (self); if ((self->priv->m_category_active_index + 1) == length) { self->priv->m_category_active_index = 0; } else { if ((self->priv->m_category_active_index + page_num) >= length) { self->priv->m_category_active_index = length - 1; } else { self->priv->m_category_active_index = self->priv->m_category_active_index + page_num; } } break; } case GDK_KEY_Page_Up: { gint page_num = 0; page_num = ibus_emojier_get_page_num (self); if (self->priv->m_category_active_index == 0) { self->priv->m_category_active_index = length - 1; } else { if ((self->priv->m_category_active_index - page_num) < 0) { self->priv->m_category_active_index = 0; } else { self->priv->m_category_active_index = self->priv->m_category_active_index - page_num; } } break; } default: break; } _tmp4_ = self->priv->m_list_box; _tmp5_ = gtk_list_box_get_selected_row ((GtkListBox*) _tmp4_); _tmp6_ = _g_object_ref0 (_tmp5_); row = _tmp6_; _tmp7_ = row; if (_tmp7_ != NULL) { IBusEmojierEListBox* _tmp8_; GtkListBoxRow* _tmp9_; _tmp8_ = self->priv->m_list_box; _tmp9_ = row; gtk_list_box_unselect_row ((GtkListBox*) _tmp8_, _tmp9_); } ibus_emojier_clamp_page (self); result = TRUE; _g_object_unref0 (row); (list == NULL) ? NULL : (list = (g_list_free (list), NULL)); return result; } gboolean ibus_emojier_has_variants (IBusEmojier* self, guint index, gboolean need_commit_signal) { IBusLookupTable* _tmp0_; gchar* text = NULL; IBusLookupTable* _tmp1_; IBusText* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; GSList* emojis = NULL; GHashTable* _tmp5_; const gchar* _tmp6_; gconstpointer _tmp7_; gboolean _tmp8_ = FALSE; gboolean _tmp9_ = FALSE; const gchar* _tmp12_; gchar* _tmp13_; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); _tmp0_ = self->priv->m_lookup_table; if (index >= ibus_lookup_table_get_number_of_candidates (_tmp0_)) { result = FALSE; return result; } _tmp1_ = self->priv->m_lookup_table; _tmp2_ = ibus_lookup_table_get_candidate (_tmp1_, index); _tmp3_ = _tmp2_->text; _tmp4_ = g_strdup (_tmp3_); text = _tmp4_; _tmp5_ = ibus_emojier_m_emoji_to_emoji_variants_dict; _tmp6_ = text; _tmp7_ = g_hash_table_lookup (_tmp5_, _tmp6_); emojis = (GSList*) _tmp7_; if (ibus_emojier_m_show_emoji_variant) { GSList* _tmp10_; _tmp10_ = emojis; _tmp9_ = _tmp10_ != NULL; } else { _tmp9_ = FALSE; } if (_tmp9_) { _tmp8_ = self->priv->m_backward_index < 0; } else { _tmp8_ = FALSE; } if (_tmp8_) { GSList* _tmp11_; _tmp11_ = emojis; ibus_emojier_show_emoji_variants (self, _tmp11_); result = TRUE; _g_free0 (text); return result; } _tmp12_ = text; _tmp13_ = g_strdup (_tmp12_); _g_free0 (self->priv->m_result); self->priv->m_result = _tmp13_; if (need_commit_signal) { const gchar* _tmp14_; _tmp14_ = text; g_signal_emit (self, ibus_emojier_signals[IBUS_EMOJIER_COMMIT_TEXT_SIGNAL], 0, _tmp14_); } result = FALSE; _g_free0 (text); return result; } gboolean ibus_emojier_key_press_cursor_horizontal (IBusEmojier* self, guint keyval, guint modifiers) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (keyval == GDK_KEY_Left) { _tmp0_ = TRUE; } else { _tmp0_ = keyval == GDK_KEY_Right; } _vala_assert (_tmp0_, "keyval == Gdk.Key.Left || keyval == Gdk.Key.Right"); if (self->priv->m_candidate_panel_mode) { IBusLookupTable* _tmp2_; _tmp2_ = self->priv->m_lookup_table; _tmp1_ = ibus_lookup_table_get_number_of_candidates (_tmp2_) > ((guint) 0); } else { _tmp1_ = FALSE; } if (_tmp1_) { ibus_emojier_enter_notify_disable_with_timer (self); if (keyval == GDK_KEY_Left) { IBusLookupTable* _tmp3_; _tmp3_ = self->priv->m_lookup_table; ibus_lookup_table_cursor_up (_tmp3_); } else { if (keyval == GDK_KEY_Right) { IBusLookupTable* _tmp4_; _tmp4_ = self->priv->m_lookup_table; ibus_lookup_table_cursor_down (_tmp4_); } } } else { if (keyval == GDK_KEY_Left) { keyval = GDK_KEY_Up; } else { if (keyval == GDK_KEY_Right) { keyval = GDK_KEY_Down; } } result = ibus_emojier_category_list_cursor_move (self, keyval); return result; } result = TRUE; return result; } gboolean ibus_emojier_key_press_cursor_vertical (IBusEmojier* self, guint keyval, guint modifiers) { gboolean _tmp0_ = FALSE; gboolean _tmp1_ = FALSE; gboolean _tmp2_ = FALSE; gboolean _tmp3_ = FALSE; gboolean _tmp4_ = FALSE; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (keyval == GDK_KEY_Down) { _tmp2_ = TRUE; } else { _tmp2_ = keyval == GDK_KEY_Up; } if (_tmp2_) { _tmp1_ = TRUE; } else { _tmp1_ = keyval == GDK_KEY_Page_Down; } if (_tmp1_) { _tmp0_ = TRUE; } else { _tmp0_ = keyval == GDK_KEY_Page_Up; } _vala_assert (_tmp0_, "keyval == Gdk.Key.Down || keyval == Gdk.Key.Up || keyval == Gdk.Key.Page_Down || keyval == Gdk.Key.Page_Up"); if ((modifiers & GDK_SHIFT_MASK) != ((guint) 0)) { if (keyval == GDK_KEY_Down) { keyval = GDK_KEY_Page_Down; } else { if (keyval == GDK_KEY_Up) { keyval = GDK_KEY_Page_Up; } } } if (self->priv->m_candidate_panel_is_visible) { _tmp4_ = TRUE; } else { const gchar* _tmp5_; gint _tmp6_; gint _tmp7_; _tmp5_ = self->priv->m_annotation; _tmp6_ = strlen (_tmp5_); _tmp7_ = _tmp6_; _tmp4_ = _tmp7_ > 0; } if (_tmp4_) { IBusLookupTable* _tmp8_; _tmp8_ = self->priv->m_lookup_table; _tmp3_ = ibus_lookup_table_get_number_of_candidates (_tmp8_) > ((guint) 0); } else { _tmp3_ = FALSE; } if (_tmp3_) { switch (keyval) { case GDK_KEY_Down: { ibus_emojier_candidate_panel_cursor_down (self); break; } case GDK_KEY_Up: { ibus_emojier_candidate_panel_cursor_up (self); break; } case GDK_KEY_Page_Down: { IBusLookupTable* _tmp9_; ibus_emojier_enter_notify_disable_with_timer (self); _tmp9_ = self->priv->m_lookup_table; ibus_lookup_table_page_down (_tmp9_); break; } case GDK_KEY_Page_Up: { IBusLookupTable* _tmp10_; ibus_emojier_enter_notify_disable_with_timer (self); _tmp10_ = self->priv->m_lookup_table; ibus_lookup_table_page_up (_tmp10_); break; } default: break; } } else { result = ibus_emojier_category_list_cursor_move (self, keyval); return result; } result = TRUE; return result; } gboolean ibus_emojier_key_press_cursor_home_end (IBusEmojier* self, guint keyval, guint modifiers) { gboolean _tmp0_ = FALSE; guint ncandidates = 0U; IBusLookupTable* _tmp1_; gboolean _tmp2_ = FALSE; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (keyval == GDK_KEY_Home) { _tmp0_ = TRUE; } else { _tmp0_ = keyval == GDK_KEY_End; } _vala_assert (_tmp0_, "keyval == Gdk.Key.Home || keyval == Gdk.Key.End"); _tmp1_ = self->priv->m_lookup_table; ncandidates = ibus_lookup_table_get_number_of_candidates (_tmp1_); if (self->priv->m_candidate_panel_mode) { _tmp2_ = ncandidates > ((guint) 0); } else { _tmp2_ = FALSE; } if (_tmp2_) { ibus_emojier_enter_notify_disable_with_timer (self); if (keyval == GDK_KEY_Home) { IBusLookupTable* _tmp3_; _tmp3_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp3_, (guint) 0); } else { if (keyval == GDK_KEY_End) { IBusLookupTable* _tmp4_; _tmp4_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp4_, ncandidates - 1); } } result = TRUE; return result; } result = ibus_emojier_category_list_cursor_move (self, keyval); return result; } gboolean ibus_emojier_key_press_escape (IBusEmojier* self) { gboolean _tmp5_ = FALSE; gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (ibus_emojier_m_show_unicode) { if (!self->priv->m_candidate_panel_is_visible) { ibus_emojier_m_show_unicode = FALSE; self->priv->m_category_active_index = -1; } ibus_emojier_hide_candidate_panel (self); result = TRUE; return result; } else { gboolean _tmp0_ = FALSE; if (self->priv->m_backward_index >= 0) { const gchar* _tmp1_; _tmp1_ = self->priv->m_backward; _tmp0_ = _tmp1_ != NULL; } else { _tmp0_ = FALSE; } if (_tmp0_) { const gchar* _tmp2_; _tmp2_ = self->priv->m_backward; ibus_emojier_show_emoji_for_category (self, _tmp2_); result = TRUE; return result; } else { gboolean _tmp3_ = FALSE; if (self->priv->m_candidate_panel_is_visible) { const gchar* _tmp4_; _tmp4_ = self->priv->m_backward; _tmp3_ = _tmp4_ != NULL; } else { _tmp3_ = FALSE; } if (_tmp3_) { ibus_emojier_hide_candidate_panel (self); result = TRUE; return result; } } } gtk_widget_hide ((GtkWidget*) self); if (self->priv->m_candidate_panel_mode) { IBusLookupTable* _tmp6_; _tmp6_ = self->priv->m_lookup_table; _tmp5_ = ibus_lookup_table_get_number_of_candidates (_tmp6_) > ((guint) 0); } else { _tmp5_ = FALSE; } if (_tmp5_) { ibus_emojier_remove_all_children (self); } g_signal_emit (self, ibus_emojier_signals[IBUS_EMOJIER_CANCEL_SIGNAL], 0); result = FALSE; return result; } gboolean ibus_emojier_key_press_enter (IBusEmojier* self, gboolean need_commit_signal) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); if (self->priv->m_candidate_panel_is_visible) { guint index = 0U; IBusLookupTable* _tmp0_; _tmp0_ = self->priv->m_lookup_table; index = ibus_lookup_table_get_cursor_pos (_tmp0_); result = ibus_emojier_has_variants (self, index, need_commit_signal); return result; } else { if (self->priv->m_category_active_index >= 0) { GtkListBoxRow* gtkrow = NULL; IBusEmojierEListBox* _tmp1_; GtkListBoxRow* _tmp2_; GtkListBoxRow* _tmp3_; IBusEmojierEBoxRow* row = NULL; GtkListBoxRow* _tmp4_; IBusEmojierEBoxRow* _tmp5_; _tmp1_ = self->priv->m_list_box; _tmp2_ = gtk_list_box_get_selected_row ((GtkListBox*) _tmp1_); _tmp3_ = _g_object_ref0 (_tmp2_); gtkrow = _tmp3_; _tmp4_ = gtkrow; _tmp5_ = _g_object_ref0 (IBUS_EMOJIER_IS_EBOX_ROW (_tmp4_) ? ((IBusEmojierEBoxRow*) _tmp4_) : NULL); row = _tmp5_; if (ibus_emojier_m_show_unicode) { IBusEmojierEBoxRow* _tmp6_; const gchar* _tmp7_; const gchar* _tmp8_; _tmp6_ = row; _tmp7_ = ibus_emojier_ebox_row_get_text (_tmp6_); _tmp8_ = _tmp7_; ibus_emojier_show_unicode_for_block (self, _tmp8_); } else { IBusEmojierEBoxRow* _tmp9_; const gchar* _tmp10_; const gchar* _tmp11_; _tmp9_ = row; _tmp10_ = ibus_emojier_ebox_row_get_text (_tmp9_); _tmp11_ = _tmp10_; ibus_emojier_show_emoji_for_category (self, _tmp11_); } _g_object_unref0 (row); _g_object_unref0 (gtkrow); } } result = TRUE; return result; } static void ibus_emojier_get_monitor_geometry (IBusEmojier* self, GdkRectangle* result) { GdkRectangle monitor_area = {0}; GdkRectangle _tmp0_ = {0}; GdkMonitor* monitor = NULL; GdkDisplay* _tmp1_; GdkRectangle _tmp2_; GdkRectangle _tmp3_; GdkMonitor* _tmp4_; GdkMonitor* _tmp5_; GdkRectangle _tmp6_ = {0}; g_return_if_fail (self != NULL); _tmp0_.x = 0; monitor_area = _tmp0_; _tmp1_ = gdk_display_get_default (); _tmp2_ = self->priv->m_cursor_location; _tmp3_ = self->priv->m_cursor_location; _tmp4_ = gdk_display_get_monitor_at_point (_tmp1_, _tmp2_.x, _tmp3_.y); _tmp5_ = _g_object_ref0 (_tmp4_); monitor = _tmp5_; gdk_monitor_get_geometry (monitor, &_tmp6_); monitor_area = _tmp6_; *result = monitor_area; _g_object_unref0 (monitor); return; } static gboolean ___lambda9_ (IBusEmojier* self) { gboolean result = FALSE; self->priv->m_redraw_window_id = (guint) 0; gtk_widget_show_all ((GtkWidget*) self); result = FALSE; return result; } static gboolean ____lambda9__gsource_func (gpointer self) { gboolean result; result = ___lambda9_ ((IBusEmojier*) self); return result; } static void ibus_emojier_adjust_window_position (IBusEmojier* self) { GdkPoint cursor_right_bottom = {0}; GdkRectangle _tmp0_; GdkRectangle _tmp1_; GdkRectangle _tmp2_; GdkRectangle _tmp3_; GdkPoint _tmp4_ = {0}; GtkAllocation allocation = {0}; GtkAllocation _tmp5_ = {0}; GdkPoint window_right_bottom = {0}; GdkPoint _tmp6_; GtkAllocation _tmp7_; GdkPoint _tmp8_; GtkAllocation _tmp9_; GdkPoint _tmp10_ = {0}; GdkRectangle monitor_area = {0}; GdkRectangle _tmp11_ = {0}; gint monitor_right = 0; GdkRectangle _tmp12_; GdkRectangle _tmp13_; gint monitor_bottom = 0; GdkRectangle _tmp14_; GdkRectangle _tmp15_; gint x = 0; gint y = 0; GdkPoint _tmp16_; gboolean changed = FALSE; IBusLookupTable* _tmp19_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_cursor_location; _tmp1_ = self->priv->m_cursor_location; _tmp2_ = self->priv->m_cursor_location; _tmp3_ = self->priv->m_cursor_location; _tmp4_.x = _tmp0_.x + _tmp1_.width; _tmp4_.y = _tmp2_.y + _tmp3_.height; cursor_right_bottom = _tmp4_; gtk_widget_get_allocation ((GtkWidget*) self, &_tmp5_); allocation = _tmp5_; _tmp6_ = cursor_right_bottom; _tmp7_ = allocation; _tmp8_ = cursor_right_bottom; _tmp9_ = allocation; _tmp10_.x = _tmp6_.x + _tmp7_.width; _tmp10_.y = _tmp8_.y + _tmp9_.height; window_right_bottom = _tmp10_; ibus_emojier_get_monitor_geometry (self, &_tmp11_); monitor_area = _tmp11_; _tmp12_ = monitor_area; _tmp13_ = monitor_area; monitor_right = _tmp12_.x + _tmp13_.width; _tmp14_ = monitor_area; _tmp15_ = monitor_area; monitor_bottom = _tmp14_.y + _tmp15_.height; _tmp16_ = window_right_bottom; if (_tmp16_.x > monitor_right) { GtkAllocation _tmp17_; _tmp17_ = allocation; x = monitor_right - _tmp17_.width; } else { GdkPoint _tmp18_; _tmp18_ = cursor_right_bottom; x = _tmp18_.x; } if (x < 0) { x = 0; } changed = FALSE; _tmp19_ = self->priv->m_lookup_table; if (ibus_lookup_table_get_cursor_pos (_tmp19_) != ((guint) 1)) { if (self->priv->m_is_up_side_down) { GdkRectangle _tmp20_; GtkAllocation _tmp21_; _tmp20_ = self->priv->m_cursor_location; _tmp21_ = allocation; y = _tmp20_.y - _tmp21_.height; } else { GdkPoint _tmp22_; _tmp22_ = cursor_right_bottom; y = _tmp22_.y; } } else { GdkPoint _tmp23_; _tmp23_ = window_right_bottom; if (_tmp23_.y > monitor_bottom) { GdkRectangle _tmp24_; GtkAllocation _tmp25_; const gchar* _tmp26_; _tmp24_ = self->priv->m_cursor_location; _tmp25_ = allocation; y = _tmp24_.y - _tmp25_.height; _tmp26_ = self->priv->m_input_context_path; if (g_strcmp0 (_tmp26_, "") == 0) { changed = self->priv->m_is_up_side_down == FALSE; self->priv->m_is_up_side_down = TRUE; } else { changed = self->priv->m_is_up_side_down == TRUE; self->priv->m_is_up_side_down = FALSE; } } else { GdkPoint _tmp27_; _tmp27_ = cursor_right_bottom; y = _tmp27_.y; changed = self->priv->m_is_up_side_down == TRUE; self->priv->m_is_up_side_down = FALSE; } } if (y < 0) { y = 0; } gtk_window_move ((GtkWindow*) self, x, y); if (changed) { if (self->priv->m_redraw_window_id > ((guint) 0)) { g_source_remove (self->priv->m_redraw_window_id); } self->priv->m_redraw_window_id = g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ____lambda9__gsource_func, g_object_ref (self), g_object_unref); } } static void ibus_emojier_check_action_variant_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter) { GVariant* _tmp0_; GVariant* _tmp1_; GVariant* _tmp2_; GVariant* _tmp3_; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); _tmp0_ = g_action_get_state ((GAction*) action); _tmp1_ = _tmp0_; ibus_emojier_m_show_emoji_variant = !g_variant_get_boolean (_tmp1_); _g_variant_unref0 (_tmp1_); _tmp2_ = g_variant_new_boolean (ibus_emojier_m_show_emoji_variant); g_variant_ref_sink (_tmp2_); _tmp3_ = _tmp2_; g_simple_action_set_state (action, _tmp3_); _g_variant_unref0 (_tmp3_); if (self->priv->m_candidate_panel_is_visible) { gtk_widget_queue_draw ((GtkWidget*) self); } } static void ibus_emojier_action_close_cb (IBusEmojier* self, GSimpleAction* action, GVariant* parameter) { g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); g_signal_emit (self, ibus_emojier_signals[IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL], 0, (guint) 0, IBUS_EMOJIER_BUTTON_CLOSE_BUTTON, (guint) 0); } void ibus_emojier_update_favorite_emoji_dict (void) { gboolean _tmp0_ = FALSE; GHashTable* _tmp1_; _tmp1_ = ibus_emojier_m_emoji_to_data_dict; if (_tmp1_ == NULL) { _tmp0_ = TRUE; } else { GHashTable* _tmp2_; _tmp2_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp0_ = _tmp2_ == NULL; } if (_tmp0_) { return; } { gint i = 0; i = 0; { gboolean _tmp3_ = FALSE; _tmp3_ = TRUE; while (TRUE) { gchar** _tmp5_; gint _tmp5__length1; gchar* favorite = NULL; gchar** _tmp6_; gint _tmp6__length1; const gchar* _tmp7_; gchar* _tmp8_; gchar* annotation = NULL; gchar* _tmp9_; gchar** _tmp10_; gint _tmp10__length1; const gchar* _tmp14_; IBusEmojiData* data = NULL; GHashTable* _tmp15_; const gchar* _tmp16_; gconstpointer _tmp17_; IBusEmojiData* _tmp18_; GSList* emojis = NULL; GHashTable* _tmp49_; const gchar* _tmp50_; gconstpointer _tmp51_; GSList* _tmp52_; const gchar* _tmp53_; GCompareFunc _tmp54_; GSList* _tmp55_; if (!_tmp3_) { gint _tmp4_; _tmp4_ = i; i = _tmp4_ + 1; } _tmp3_ = FALSE; _tmp5_ = ibus_emojier_m_favorites; _tmp5__length1 = ibus_emojier_m_favorites_length1; if (!(i < _tmp5__length1)) { break; } _tmp6_ = ibus_emojier_m_favorites; _tmp6__length1 = ibus_emojier_m_favorites_length1; _tmp7_ = _tmp6_[i]; _tmp8_ = g_strdup (_tmp7_); favorite = _tmp8_; _tmp9_ = g_strdup (""); annotation = _tmp9_; _tmp10_ = ibus_emojier_m_favorite_annotations; _tmp10__length1 = ibus_emojier_m_favorite_annotations_length1; if (i < _tmp10__length1) { gchar** _tmp11_; gint _tmp11__length1; const gchar* _tmp12_; gchar* _tmp13_; _tmp11_ = ibus_emojier_m_favorite_annotations; _tmp11__length1 = ibus_emojier_m_favorite_annotations_length1; _tmp12_ = _tmp11_[i]; _tmp13_ = g_strdup (_tmp12_); _g_free0 (annotation); annotation = _tmp13_; } _tmp14_ = annotation; if (g_strcmp0 (_tmp14_, "") == 0) { _g_free0 (annotation); _g_free0 (favorite); continue; } _tmp15_ = ibus_emojier_m_emoji_to_data_dict; _tmp16_ = favorite; _tmp17_ = g_hash_table_lookup (_tmp15_, _tmp16_); data = (IBusEmojiData*) _tmp17_; _tmp18_ = data; if (_tmp18_ == NULL) { GSList* new_annotations = NULL; const gchar* _tmp19_; gchar* _tmp20_; IBusEmojiData* new_data = NULL; const gchar* _tmp21_; gchar* _tmp22_; gchar* _tmp23_; GSList* _tmp24_; const gchar* _tmp25_; gchar* _tmp26_; gchar* _tmp27_; GObject* _tmp28_; GObject* _tmp29_; IBusEmojiData* _tmp30_; IBusEmojiData* _tmp31_; GHashTable* _tmp32_; const gchar* _tmp33_; gchar* _tmp34_; IBusEmojiData* _tmp35_; IBusEmojiData* _tmp36_; new_annotations = NULL; _tmp19_ = annotation; _tmp20_ = g_strdup (_tmp19_); new_annotations = g_slist_append (new_annotations, _tmp20_); _tmp21_ = favorite; _tmp22_ = g_strdup (_tmp21_); _tmp23_ = _tmp22_; _tmp24_ = new_annotations; _tmp25_ = annotation; _tmp26_ = g_strdup (_tmp25_); _tmp27_ = _tmp26_; _tmp28_ = g_object_new (ibus_emoji_data_get_type (), "emoji", _tmp23_, "annotations", _tmp24_, "description", _tmp27_, NULL); _tmp29_ = G_IS_INITIALLY_UNOWNED (_tmp28_) ? g_object_ref_sink (_tmp28_) : _tmp28_; _tmp30_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, ibus_emoji_data_get_type ()) ? ((IBusEmojiData*) _tmp29_) : NULL; if (_tmp30_ == NULL) { _g_object_unref0 (_tmp29_); } _tmp31_ = _tmp30_; _g_free0 (_tmp27_); _g_free0 (_tmp23_); new_data = _tmp31_; _tmp32_ = ibus_emojier_m_emoji_to_data_dict; _tmp33_ = favorite; _tmp34_ = g_strdup (_tmp33_); _tmp35_ = new_data; _tmp36_ = _g_object_ref0 (_tmp35_); g_hash_table_insert (_tmp32_, _tmp34_, _tmp36_); _g_object_unref0 (new_data); (new_annotations == NULL) ? NULL : (new_annotations = (_g_slist_free__g_free0_ (new_annotations), NULL)); } else { GSList* annotations = NULL; IBusEmojiData* _tmp37_; GSList* _tmp38_; GSList* _tmp39_; GSList* _tmp40_; const gchar* _tmp41_; GCompareFunc _tmp42_; GSList* _tmp43_; _tmp37_ = data; _tmp38_ = ibus_emoji_data_get_annotations (_tmp37_); _tmp39_ = g_slist_copy_deep (_tmp38_, _g_strdup_gcopy_func, NULL); annotations = _tmp39_; _tmp40_ = annotations; _tmp41_ = annotation; _tmp42_ = ((GCompareFunc) g_strcmp0); _tmp43_ = g_slist_find_custom (_tmp40_, _tmp41_, _tmp42_); if (_tmp43_ == NULL) { const gchar* _tmp44_; gchar* _tmp45_; IBusEmojiData* _tmp46_; GSList* _tmp47_; GSList* _tmp48_; _tmp44_ = annotation; _tmp45_ = g_strdup (_tmp44_); annotations = g_slist_append (annotations, _tmp45_); _tmp46_ = data; _tmp47_ = annotations; _tmp48_ = g_slist_copy_deep (_tmp47_, _g_strdup_gcopy_func, NULL); ibus_emoji_data_set_annotations (_tmp46_, _tmp48_); } (annotations == NULL) ? NULL : (annotations = (_g_slist_free__g_free0_ (annotations), NULL)); } _tmp49_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp50_ = annotation; _tmp51_ = g_hash_table_lookup (_tmp49_, _tmp50_); emojis = (GSList*) _tmp51_; _tmp52_ = emojis; _tmp53_ = favorite; _tmp54_ = ((GCompareFunc) g_strcmp0); _tmp55_ = g_slist_find_custom (_tmp52_, _tmp53_, _tmp54_); if (_tmp55_ == NULL) { const gchar* _tmp56_; gchar* _tmp57_; GHashTable* _tmp58_; const gchar* _tmp59_; gchar* _tmp60_; GSList* _tmp61_; GSList* _tmp62_; _tmp56_ = favorite; _tmp57_ = g_strdup (_tmp56_); emojis = g_slist_append (emojis, _tmp57_); _tmp58_ = ibus_emojier_m_annotation_to_emojis_dict; _tmp59_ = annotation; _tmp60_ = g_strdup (_tmp59_); _tmp61_ = emojis; _tmp62_ = g_slist_copy_deep (_tmp61_, _g_strdup_gcopy_func, NULL); g_hash_table_replace (_tmp58_, _tmp60_, _tmp62_); } _g_free0 (annotation); _g_free0 (favorite); } } } } void ibus_emojier_set_annotation (IBusEmojier* self, const gchar* annotation) { gchar* _tmp0_; gint _tmp1_; gint _tmp2_; g_return_if_fail (self != NULL); g_return_if_fail (annotation != NULL); _tmp0_ = g_strdup (annotation); _g_free0 (self->priv->m_annotation); self->priv->m_annotation = _tmp0_; ibus_emojier_remove_all_children (self); _tmp1_ = strlen (annotation); _tmp2_ = _tmp1_; if (_tmp2_ > 0) { ibus_emojier_update_candidate_window (self); } else { if (ibus_emojier_m_show_unicode) { ibus_emojier_update_unicode_blocks (self); } else { ibus_emojier_update_category_list (self); } } } IBusLookupTable* ibus_emojier_get_one_dimension_lookup_table (IBusEmojier* self) { IBusLookupTable* lookup_table = NULL; IBusLookupTable* _tmp0_; guint i = 0U; IBusLookupTable* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = ibus_lookup_table_new (IBUS_EMOJIER_EMOJI_GRID_PAGE, (guint) 0, TRUE, TRUE); g_object_ref_sink (_tmp0_); lookup_table = _tmp0_; i = (guint) 0; { gboolean _tmp1_ = FALSE; _tmp1_ = TRUE; while (TRUE) { IBusLookupTable* _tmp3_; IBusText* text = NULL; IBusText* _tmp4_; IBusText* _tmp5_; IBusLookupTable* _tmp6_; IBusText* _tmp7_; IBusLookupTable* _tmp8_; IBusText* _tmp9_; if (!_tmp1_) { guint _tmp2_; _tmp2_ = i; i = _tmp2_ + 1; } _tmp1_ = FALSE; _tmp3_ = self->priv->m_lookup_table; if (!(i < ibus_lookup_table_get_number_of_candidates (_tmp3_))) { break; } _tmp4_ = ibus_text_new_from_string (""); g_object_ref_sink (_tmp4_); text = _tmp4_; _tmp5_ = text; _tmp6_ = self->priv->m_lookup_table; _tmp7_ = ibus_lookup_table_get_candidate (_tmp6_, i); IBUS_SERIALIZABLE_GET_CLASS ((IBusSerializable*) _tmp5_)->copy ((IBusSerializable*) _tmp5_, (IBusSerializable*) _tmp7_); _tmp8_ = lookup_table; _tmp9_ = text; ibus_lookup_table_append_candidate (_tmp8_, _tmp9_); _g_object_unref0 (text); } } if (i > ((guint) 0)) { IBusLookupTable* _tmp10_; IBusLookupTable* _tmp11_; _tmp10_ = lookup_table; _tmp11_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp10_, ibus_lookup_table_get_cursor_pos (_tmp11_)); } result = lookup_table; return result; } guint ibus_emojier_get_number_of_candidates (IBusEmojier* self) { IBusLookupTable* _tmp0_; guint result = 0U; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = self->priv->m_lookup_table; result = ibus_lookup_table_get_number_of_candidates (_tmp0_); return result; } guint ibus_emojier_get_cursor_pos (IBusEmojier* self) { IBusLookupTable* _tmp0_; guint result = 0U; g_return_val_if_fail (self != NULL, 0U); _tmp0_ = self->priv->m_lookup_table; result = ibus_lookup_table_get_cursor_pos (_tmp0_); return result; } void ibus_emojier_set_cursor_pos (IBusEmojier* self, guint cursor_pos) { IBusLookupTable* _tmp0_; g_return_if_fail (self != NULL); _tmp0_ = self->priv->m_lookup_table; ibus_lookup_table_set_cursor_pos (_tmp0_, cursor_pos); } gchar* ibus_emojier_get_current_candidate (IBusEmojier* self) { guint cursor = 0U; IBusLookupTable* _tmp1_; IBusLookupTable* _tmp2_; IBusText* _tmp3_; const gchar* _tmp4_; gchar* _tmp5_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); if (!self->priv->m_candidate_panel_mode) { gchar* _tmp0_; _tmp0_ = g_strdup (""); result = _tmp0_; return result; } _tmp1_ = self->priv->m_lookup_table; cursor = ibus_lookup_table_get_cursor_pos (_tmp1_); _tmp2_ = self->priv->m_lookup_table; _tmp3_ = ibus_lookup_table_get_candidate (_tmp2_, cursor); _tmp4_ = _tmp3_->text; _tmp5_ = g_strdup (_tmp4_); result = _tmp5_; return result; } IBusText* ibus_emojier_get_title_text (IBusEmojier* self) { gchar* language = NULL; const gchar* _tmp0_; gchar* _tmp1_; gchar* _tmp2_; gchar* _tmp3_; gchar* _tmp4_; guint ncandidates = 0U; gchar* main_title = NULL; gchar* _tmp5_; IBusText* text = NULL; const gchar* _tmp7_; const gchar* _tmp8_; gchar* _tmp9_; gchar* _tmp10_; IBusText* _tmp11_; IBusText* _tmp12_; gint char_count = 0; IBusText* _tmp13_; const gchar* _tmp14_; gint start_index = 0; const gchar* title = NULL; IBusText* _tmp15_; const gchar* _tmp16_; IBusText* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = ibus_emojier_m_current_lang_id; _tmp1_ = ibus_get_language_name (_tmp0_); _tmp2_ = _tmp1_; _tmp3_ = g_strdup (_ (_tmp2_)); _tmp4_ = _tmp3_; _g_free0 (_tmp2_); language = _tmp4_; ncandidates = ibus_emojier_get_number_of_candidates (self); _tmp5_ = g_strdup (_ ("Emoji Choice")); main_title = _tmp5_; if (ibus_emojier_m_show_unicode) { gchar* _tmp6_; _tmp6_ = g_strdup (_ ("Unicode Choice")); _g_free0 (main_title); main_title = _tmp6_; } _tmp7_ = main_title; _tmp8_ = language; _tmp9_ = g_strdup_printf ("%s (%s) (%u / %u)", _tmp7_, _tmp8_, ibus_emojier_get_cursor_pos (self) + 1, ncandidates); _tmp10_ = _tmp9_; _tmp11_ = ibus_text_new_from_string (_tmp10_); g_object_ref_sink (_tmp11_); _tmp12_ = _tmp11_; _g_free0 (_tmp10_); text = _tmp12_; _tmp13_ = text; _tmp14_ = _tmp13_->text; char_count = g_utf8_strlen (_tmp14_, (gssize) -1); start_index = -1; _tmp15_ = text; _tmp16_ = _tmp15_->text; title = _tmp16_; { gint i = 0; i = 0; { gboolean _tmp17_ = FALSE; _tmp17_ = TRUE; while (TRUE) { const gchar* _tmp19_; const gchar* _tmp20_; const gchar* _tmp21_; const gchar* _tmp22_; if (!_tmp17_) { gint _tmp18_; _tmp18_ = i; i = _tmp18_ + 1; } _tmp17_ = FALSE; if (!(i < char_count)) { break; } _tmp19_ = title; _tmp20_ = language; if (g_str_has_prefix (_tmp19_, _tmp20_)) { start_index = i; break; } _tmp21_ = title; _tmp22_ = g_utf8_next_char (_tmp21_); title = _tmp22_; } } } if (start_index >= 0) { IBusAttribute* attr = NULL; const gchar* _tmp23_; IBusAttribute* _tmp24_; IBusAttrList* attrs = NULL; IBusAttrList* _tmp25_; IBusAttrList* _tmp26_; IBusAttribute* _tmp27_; IBusText* _tmp28_; IBusAttrList* _tmp29_; _tmp23_ = language; _tmp24_ = ibus_attribute_new ((guint) IBUS_ATTR_TYPE_FOREGROUND, (guint) 0x808080, (guint) start_index, (guint) (start_index + g_utf8_strlen (_tmp23_, (gssize) -1))); g_object_ref_sink (_tmp24_); attr = _tmp24_; _tmp25_ = ibus_attr_list_new (); g_object_ref_sink (_tmp25_); attrs = _tmp25_; _tmp26_ = attrs; _tmp27_ = attr; ibus_attr_list_append (_tmp26_, _tmp27_); _tmp28_ = text; _tmp29_ = attrs; ibus_text_set_attributes (_tmp28_, _tmp29_); _g_object_unref0 (attrs); _g_object_unref0 (attr); } result = text; _g_free0 (main_title); _g_free0 (language); return result; } static void ibus_emojier_real_show_all (GtkWidget* base) { IBusEmojier * self; self = (IBusEmojier*) base; GTK_WIDGET_CLASS (ibus_emojier_parent_class)->show_all ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_application_window_get_type (), GtkApplicationWindow)); if (self->priv->m_candidate_panel_mode) { ibus_emojier_show_candidate_panel (self); } else { if (ibus_emojier_m_show_unicode) { ibus_emojier_show_unicode_blocks (self); } else { ibus_emojier_show_category_list (self); } } } static void ibus_emojier_real_hide (GtkWidget* base) { IBusEmojier * self; self = (IBusEmojier*) base; GTK_WIDGET_CLASS (ibus_emojier_parent_class)->hide ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_application_window_get_type (), GtkApplicationWindow)); self->priv->m_candidate_panel_is_visible = FALSE; if (self->priv->m_redraw_window_id > ((guint) 0)) { g_source_remove (self->priv->m_redraw_window_id); self->priv->m_redraw_window_id = (guint) 0; } if (self->priv->m_unicode_progress_id > ((guint) 0)) { g_source_remove (self->priv->m_unicode_progress_id); self->priv->m_unicode_progress_id = (guint) 0; } } static gboolean ibus_emojier_real_key_press_event (GtkWidget* base, GdkEventKey* event) { IBusEmojier * self; guint keyval = 0U; guint modifiers = 0U; GdkModifierType _tmp0_; gboolean result = FALSE; self = (IBusEmojier*) base; g_return_val_if_fail (event != NULL, FALSE); keyval = event->keyval; _tmp0_ = event->state; modifiers = (guint) _tmp0_; switch (keyval) { case GDK_KEY_Escape: { if (ibus_emojier_key_press_escape (self)) { gtk_widget_show_all ((GtkWidget*) self); } result = TRUE; return result; } case GDK_KEY_Return: case GDK_KEY_KP_Enter: { if (ibus_emojier_key_press_enter (self, TRUE)) { gtk_widget_show_all ((GtkWidget*) self); } else { gtk_widget_hide ((GtkWidget*) self); } result = TRUE; return result; } case GDK_KEY_space: case GDK_KEY_KP_Space: { if (self->priv->m_candidate_panel_is_visible) { IBusLookupTable* _tmp1_; ibus_emojier_enter_notify_disable_with_timer (self); _tmp1_ = self->priv->m_lookup_table; ibus_lookup_table_cursor_down (_tmp1_); ibus_emojier_show_candidate_panel (self); } else { ibus_emojier_category_list_cursor_move (self, GDK_KEY_Down); gtk_widget_show_all ((GtkWidget*) self); } result = TRUE; return result; } case GDK_KEY_Right: case GDK_KEY_KP_Right: { ibus_emojier_key_press_cursor_horizontal (self, GDK_KEY_Right, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Left: case GDK_KEY_KP_Left: { ibus_emojier_key_press_cursor_horizontal (self, GDK_KEY_Left, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Down: case GDK_KEY_KP_Down: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Down, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Up: case GDK_KEY_KP_Up: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Up, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Page_Down: case GDK_KEY_KP_Page_Down: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Page_Down, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Page_Up: case GDK_KEY_KP_Page_Up: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Page_Up, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_Home: case GDK_KEY_KP_Home: { ibus_emojier_key_press_cursor_home_end (self, GDK_KEY_Home, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_End: case GDK_KEY_KP_End: { ibus_emojier_key_press_cursor_home_end (self, GDK_KEY_End, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } default: break; } if ((modifiers & GDK_CONTROL_MASK) != ((guint) 0)) { switch (keyval) { case GDK_KEY_f: { ibus_emojier_key_press_cursor_horizontal (self, GDK_KEY_Right, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_b: { ibus_emojier_key_press_cursor_horizontal (self, GDK_KEY_Left, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_n: case GDK_KEY_N: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Down, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_p: case GDK_KEY_P: { ibus_emojier_key_press_cursor_vertical (self, GDK_KEY_Up, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_h: { ibus_emojier_key_press_cursor_home_end (self, GDK_KEY_Home, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_e: { ibus_emojier_key_press_cursor_home_end (self, GDK_KEY_End, modifiers); gtk_widget_show_all ((GtkWidget*) self); result = TRUE; return result; } case GDK_KEY_C: case GDK_KEY_c: { if ((modifiers & GDK_SHIFT_MASK) != ((guint) 0)) { if (self->priv->m_candidate_panel_is_visible) { guint index = 0U; IBusLookupTable* _tmp2_; gchar* text = NULL; IBusLookupTable* _tmp3_; IBusText* _tmp4_; const gchar* _tmp5_; gchar* _tmp6_; GtkClipboard* clipboard = NULL; GtkClipboard* _tmp7_; GtkClipboard* _tmp8_; GtkClipboard* _tmp9_; const gchar* _tmp10_; GtkClipboard* _tmp11_; _tmp2_ = self->priv->m_lookup_table; index = ibus_lookup_table_get_cursor_pos (_tmp2_); _tmp3_ = self->priv->m_lookup_table; _tmp4_ = ibus_lookup_table_get_candidate (_tmp3_, index); _tmp5_ = _tmp4_->text; _tmp6_ = g_strdup (_tmp5_); text = _tmp6_; _tmp7_ = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); _tmp8_ = _g_object_ref0 (_tmp7_); clipboard = _tmp8_; _tmp9_ = clipboard; _tmp10_ = text; gtk_clipboard_set_text (_tmp9_, _tmp10_, -1); _tmp11_ = clipboard; gtk_clipboard_store (_tmp11_); result = TRUE; _g_object_unref0 (clipboard); _g_free0 (text); return result; } } break; } default: break; } result = FALSE; return result; } result = TRUE; return result; } gboolean ibus_emojier_is_running (IBusEmojier* self) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); result = self->priv->m_is_running; return result; } gchar* ibus_emojier_get_input_context_path (IBusEmojier* self) { const gchar* _tmp0_; gchar* _tmp1_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_input_context_path; _tmp1_ = g_strdup (_tmp0_); result = _tmp1_; return result; } void ibus_emojier_set_input_context_path (IBusEmojier* self, const gchar* input_context_path) { gchar* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (input_context_path != NULL); _tmp0_ = g_strdup (input_context_path); _g_free0 (self->priv->m_input_context_path); self->priv->m_input_context_path = _tmp0_; if (g_strcmp0 (input_context_path, "") == 0) { gchar* _tmp1_; _tmp1_ = g_strdup (_ ("" "Failed to get the current text application. " "Please re-focus your application. E.g. Press Esc key " "several times to release the emoji typing mode, " "click your desktop and click your text application again.")); _g_free0 (ibus_emojier_m_warning_message); ibus_emojier_m_warning_message = _tmp1_; } else { gchar* _tmp2_; _tmp2_ = g_strdup (""); _g_free0 (ibus_emojier_m_warning_message); ibus_emojier_m_warning_message = _tmp2_; } } gchar* ibus_emojier_get_selected_string (IBusEmojier* self) { const gchar* _tmp0_; gchar* _tmp1_; gchar* result = NULL; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->m_result; _tmp1_ = g_strdup (_tmp0_); result = _tmp1_; return result; } static void ibus_emojier_reset_window_mode (IBusEmojier* self) { g_return_if_fail (self != NULL); self->priv->m_backward_index = -1; _g_free0 (self->priv->m_backward); self->priv->m_backward = NULL; self->priv->m_candidate_panel_is_visible = FALSE; self->priv->m_candidate_panel_mode = FALSE; } void ibus_emojier_reset (IBusEmojier* self) { gchar* _tmp0_; g_return_if_fail (self != NULL); ibus_emojier_reset_window_mode (self); _tmp0_ = g_strdup (""); _g_free0 (self->priv->m_input_context_path); self->priv->m_input_context_path = _tmp0_; _g_free0 (self->priv->m_result); self->priv->m_result = NULL; self->priv->m_category_active_index = -1; ibus_emojier_m_show_unicode = FALSE; } void ibus_emojier_present_centralize (IBusEmojier* self, GdkEvent* event) { GtkAllocation allocation = {0}; GtkAllocation _tmp0_ = {0}; GdkRectangle monitor_area = {0}; GdkRectangle work_area = {0}; GdkDisplay* display = NULL; GdkDisplay* _tmp1_; GdkDisplay* _tmp2_; GdkMonitor* monitor = NULL; GdkDisplay* _tmp3_; GdkWindow* _tmp4_; GdkMonitor* _tmp5_; GdkMonitor* _tmp6_; GdkMonitor* _tmp7_; GdkRectangle _tmp8_ = {0}; GdkMonitor* _tmp9_; GdkRectangle _tmp10_ = {0}; gint x = 0; GdkRectangle _tmp11_; GdkRectangle _tmp12_; GtkAllocation _tmp13_; gint y = 0; GdkRectangle _tmp14_; GdkRectangle _tmp15_; GtkAllocation _tmp16_; GdkRectangle _tmp17_; guint32 timestamp = 0U; g_return_if_fail (self != NULL); g_return_if_fail (event != NULL); gtk_widget_get_allocation ((GtkWidget*) self, &_tmp0_); allocation = _tmp0_; _tmp1_ = gdk_display_get_default (); _tmp2_ = _g_object_ref0 (_tmp1_); display = _tmp2_; _tmp3_ = display; _tmp4_ = gtk_widget_get_window ((GtkWidget*) self); _tmp5_ = gdk_display_get_monitor_at_window (_tmp3_, _tmp4_); _tmp6_ = _g_object_ref0 (_tmp5_); monitor = _tmp6_; _tmp7_ = monitor; gdk_monitor_get_geometry (_tmp7_, &_tmp8_); monitor_area = _tmp8_; _tmp9_ = monitor; gdk_monitor_get_workarea (_tmp9_, &_tmp10_); work_area = _tmp10_; _tmp11_ = monitor_area; _tmp12_ = monitor_area; _tmp13_ = allocation; x = ((_tmp11_.x + _tmp12_.width) - _tmp13_.width) / 2; _tmp14_ = monitor_area; _tmp15_ = monitor_area; _tmp16_ = allocation; y = ((_tmp14_.y + _tmp15_.height) - _tmp16_.height) / 2; _tmp17_ = work_area; if (_tmp17_.y < y) { GdkRectangle _tmp18_; _tmp18_ = work_area; y = _tmp18_.y; } gtk_window_move ((GtkWindow*) self, x, y); timestamp = gdk_event_get_time (event); gtk_window_present_with_time ((GtkWindow*) self, timestamp); _g_object_unref0 (monitor); _g_object_unref0 (display); } 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 ibus_emojier_set_cursor_location (IBusEmojier* self, gint x, gint y, gint width, gint height) { GdkRectangle location = {0}; GdkRectangle _tmp0_ = {0}; GdkRectangle _tmp1_; GdkRectangle _tmp2_; GdkRectangle _tmp3_; g_return_if_fail (self != NULL); memset (&_tmp0_, 0, sizeof (GdkRectangle)); _tmp0_.x = x; _tmp0_.y = y; _tmp0_.width = width; _tmp0_.height = height; location = _tmp0_; _tmp1_ = self->priv->m_cursor_location; _tmp2_ = location; if (_cairo_rectangle_int_equal (&_tmp1_, &_tmp2_) == TRUE) { return; } _tmp3_ = location; self->priv->m_cursor_location = _tmp3_; } gboolean ibus_emojier_is_candidate_panel_mode (IBusEmojier* self) { gboolean result = FALSE; g_return_val_if_fail (self != NULL, FALSE); result = self->priv->m_candidate_panel_mode; return result; } gboolean ibus_emojier_has_loaded_emoji_dict (void) { GHashTable* _tmp0_; GList* keys = NULL; GHashTable* _tmp1_; GList* _tmp2_; GList* _tmp3_; gboolean result = FALSE; _tmp0_ = ibus_emojier_m_emoji_to_data_dict; if (_tmp0_ == NULL) { result = FALSE; return result; } _tmp1_ = ibus_emojier_m_emoji_to_data_dict; _tmp2_ = g_hash_table_get_keys (_tmp1_); keys = _tmp2_; _tmp3_ = keys; if (g_list_length (_tmp3_) == ((guint) 0)) { result = FALSE; (keys == NULL) ? NULL : (keys = (g_list_free (keys), NULL)); return result; } result = TRUE; (keys == NULL) ? NULL : (keys = (g_list_free (keys), NULL)); return result; } void ibus_emojier_set_annotation_lang (const gchar* lang) { gboolean _tmp0_ = FALSE; const gchar* _tmp1_; gchar* _tmp2_; if (lang == NULL) { _tmp0_ = TRUE; } else { _tmp0_ = g_strcmp0 (lang, "") == 0; } if (_tmp0_) { lang = "en"; } _tmp1_ = ibus_emojier_m_current_lang_id; if (g_strcmp0 (_tmp1_, lang) == 0) { return; } _tmp2_ = g_strdup (lang); _g_free0 (ibus_emojier_m_current_lang_id); ibus_emojier_m_current_lang_id = _tmp2_; ibus_emojier_reload_emoji_dict (); } gchar* ibus_emojier_get_annotation_lang (void) { const gchar* _tmp0_; gchar* _tmp1_; gchar* result = NULL; _tmp0_ = ibus_emojier_m_current_lang_id; _tmp1_ = g_strdup (_tmp0_); result = _tmp1_; return result; } static void _vala_PangoFontDescription_free (PangoFontDescription* self) { g_boxed_free (pango_font_description_get_type (), self); } void ibus_emojier_set_emoji_font (const gchar* emoji_font) { gboolean _tmp0_ = FALSE; PangoFontDescription* font_desc = NULL; PangoFontDescription* _tmp1_; gchar* font_family = NULL; PangoFontDescription* _tmp2_; const gchar* _tmp3_; gchar* _tmp4_; const gchar* _tmp5_; gint font_size = 0; PangoFontDescription* _tmp8_; if (emoji_font != NULL) { _tmp0_ = g_strcmp0 (emoji_font, "") != 0; } else { _tmp0_ = FALSE; } g_return_if_fail (_tmp0_); _tmp1_ = pango_font_description_from_string (emoji_font); font_desc = _tmp1_; _tmp2_ = font_desc; _tmp3_ = pango_font_description_get_family (_tmp2_); _tmp4_ = g_strdup (_tmp3_); font_family = _tmp4_; _tmp5_ = font_family; if (_tmp5_ != NULL) { const gchar* _tmp6_; gchar* _tmp7_; _tmp6_ = font_family; _tmp7_ = g_strdup (_tmp6_); _g_free0 (ibus_emojier_m_emoji_font_family); ibus_emojier_m_emoji_font_family = _tmp7_; ibus_emojier_m_emoji_font_changed = TRUE; } _tmp8_ = font_desc; font_size = pango_font_description_get_size (_tmp8_) / PANGO_SCALE; if (font_size != 0) { ibus_emojier_m_emoji_font_size = font_size; ibus_emojier_m_emoji_font_changed = TRUE; } _g_free0 (font_family); __vala_PangoFontDescription_free0 (font_desc); } void ibus_emojier_set_partial_match (gboolean has_partial_match) { ibus_emojier_m_has_partial_match = has_partial_match; } void ibus_emojier_set_partial_match_length (gint length) { if (length < 1) { return; } ibus_emojier_m_partial_match_length = (guint) length; } void ibus_emojier_set_partial_match_condition (gint condition) { if (condition < 0) { return; } ibus_emojier_m_partial_match_condition = (guint) condition; } static void _vala_array_add3 (gchar** * array, gint* length, gint* 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, gint* length, gint* 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 ibus_emojier_set_favorites (gchar** unowned_favorites, gint unowned_favorites_length1, gchar** unowned_favorite_annotations, gint unowned_favorite_annotations_length1) { gchar** _tmp0_; gchar** _tmp1_; _tmp0_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorites = (_vala_array_free (ibus_emojier_m_favorites, ibus_emojier_m_favorites_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorites = _tmp0_; ibus_emojier_m_favorites_length1 = 0; _ibus_emojier_m_favorites_size_ = ibus_emojier_m_favorites_length1; _tmp1_ = g_new0 (gchar*, 0 + 1); ibus_emojier_m_favorite_annotations = (_vala_array_free (ibus_emojier_m_favorite_annotations, ibus_emojier_m_favorite_annotations_length1, (GDestroyNotify) g_free), NULL); ibus_emojier_m_favorite_annotations = _tmp1_; ibus_emojier_m_favorite_annotations_length1 = 0; _ibus_emojier_m_favorite_annotations_size_ = ibus_emojier_m_favorite_annotations_length1; { gint i = 0; i = 0; { gboolean _tmp2_ = FALSE; _tmp2_ = TRUE; while (TRUE) { gchar* favorite = NULL; const gchar* _tmp4_; gchar* _tmp5_; const gchar* _tmp6_; gchar** _tmp7_; gint _tmp7__length1; const gchar* _tmp8_; gchar* _tmp9_; if (!_tmp2_) { gint _tmp3_; _tmp3_ = i; i = _tmp3_ + 1; } _tmp2_ = FALSE; if (!(i < unowned_favorites_length1)) { break; } _tmp4_ = unowned_favorites[i]; _tmp5_ = g_strdup (_tmp4_); favorite = _tmp5_; _tmp6_ = favorite; g_return_if_fail (_tmp6_ != NULL); _tmp7_ = ibus_emojier_m_favorites; _tmp7__length1 = ibus_emojier_m_favorites_length1; _tmp8_ = favorite; _tmp9_ = g_strdup (_tmp8_); _vala_array_add3 (&ibus_emojier_m_favorites, &ibus_emojier_m_favorites_length1, &_ibus_emojier_m_favorites_size_, _tmp9_); _g_free0 (favorite); } } } { gint i = 0; i = 0; { gboolean _tmp10_ = FALSE; _tmp10_ = TRUE; while (TRUE) { gchar* favorite_annotation = NULL; const gchar* _tmp12_; gchar* _tmp13_; const gchar* _tmp14_; gchar** _tmp15_; gint _tmp15__length1; const gchar* _tmp16_; gchar* _tmp17_; if (!_tmp10_) { gint _tmp11_; _tmp11_ = i; i = _tmp11_ + 1; } _tmp10_ = FALSE; if (!(i < unowned_favorite_annotations_length1)) { break; } _tmp12_ = unowned_favorite_annotations[i]; _tmp13_ = g_strdup (_tmp12_); favorite_annotation = _tmp13_; _tmp14_ = favorite_annotation; g_return_if_fail (_tmp14_ != NULL); _tmp15_ = ibus_emojier_m_favorite_annotations; _tmp15__length1 = ibus_emojier_m_favorite_annotations_length1; _tmp16_ = favorite_annotation; _tmp17_ = g_strdup (_tmp16_); _vala_array_add4 (&ibus_emojier_m_favorite_annotations, &ibus_emojier_m_favorite_annotations_length1, &_ibus_emojier_m_favorite_annotations_size_, _tmp17_); _g_free0 (favorite_annotation); } } } ibus_emojier_update_favorite_emoji_dict (); } static GObject* ibus_emojier_get_load_progress_object (void) { IBusEmojierLoadProgressObject* _tmp0_; IBusEmojierLoadProgressObject* _tmp2_; GObject* _tmp3_; GObject* result = NULL; _tmp0_ = ibus_emojier_m_unicode_progress_object; if (_tmp0_ == NULL) { IBusEmojierLoadProgressObject* _tmp1_; _tmp1_ = ibus_emojier_load_progress_object_new (); _g_object_unref0 (ibus_emojier_m_unicode_progress_object); ibus_emojier_m_unicode_progress_object = _tmp1_; } _tmp2_ = ibus_emojier_m_unicode_progress_object; _tmp3_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, G_TYPE_OBJECT) ? ((GObject*) _tmp2_) : NULL); result = _tmp3_; return result; } void ibus_emojier_load_unicode_dict (void) { GSList* _tmp0_; GHashTable* _tmp1_; _tmp0_ = ibus_emojier_m_unicode_block_list; if (g_slist_length (_tmp0_) == ((guint) 0)) { ibus_emojier_make_unicode_block_dict (); } _tmp1_ = ibus_emojier_m_name_to_unicodes_dict; if (g_hash_table_size (_tmp1_) == ((guint) 0)) { GObject* _tmp2_; GObject* _tmp3_; _tmp2_ = ibus_emojier_get_load_progress_object (); _tmp3_ = _tmp2_; ibus_emojier_make_unicode_name_dict (_tmp3_); _g_object_unref0 (_tmp3_); } } 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 gboolean __lambda5_ (IBusEmojierEListBox* self, GdkEventMotion* e) { GdkEventMotion* pe = NULL; GdkEventMotion* _tmp0_; gboolean _tmp1_ = FALSE; GdkEventMotion* _tmp2_; GdkEventMotion* _tmp4_; GdkEventMotion* _tmp5_; GtkListBoxRow* row = NULL; GtkListBoxRow* _tmp6_; GtkListBoxRow* _tmp7_; GtkListBoxRow* _tmp8_; gboolean result = FALSE; g_return_val_if_fail (e != NULL, FALSE); _tmp0_ = __vala_GdkEventMotion_copy0 (e); pe = _tmp0_; _tmp2_ = pe; if (ibus_emojier_m_mouse_x == _tmp2_->x_root) { GdkEventMotion* _tmp3_; _tmp3_ = pe; _tmp1_ = ibus_emojier_m_mouse_y == _tmp3_->y_root; } else { _tmp1_ = FALSE; } if (_tmp1_) { result = FALSE; __vala_GdkEventMotion_free0 (pe); return result; } _tmp4_ = pe; ibus_emojier_m_mouse_x = _tmp4_->x_root; _tmp5_ = pe; ibus_emojier_m_mouse_y = _tmp5_->y_root; _tmp6_ = gtk_list_box_get_row_at_y ((GtkListBox*) self, (gint) e->y); _tmp7_ = _g_object_ref0 (_tmp6_); row = _tmp7_; _tmp8_ = row; if (_tmp8_ != NULL) { GtkListBoxRow* _tmp9_; _tmp9_ = row; gtk_list_box_select_row ((GtkListBox*) self, _tmp9_); } result = FALSE; _g_object_unref0 (row); __vala_GdkEventMotion_free0 (pe); return result; } static gboolean ___lambda5__gtk_widget_motion_notify_event (GtkWidget* _sender, GdkEventMotion* event, gpointer self) { gboolean result; result = __lambda5_ ((IBusEmojierEListBox*) self, event); return result; } static gboolean __lambda6_ (IBusEmojierEListBox* self, GdkEventCrossing* e) { gboolean result = FALSE; g_return_val_if_fail (e != NULL, FALSE); result = TRUE; return result; } static gboolean ___lambda6__gtk_widget_enter_notify_event (GtkWidget* _sender, GdkEventCrossing* event, gpointer self) { gboolean result; result = __lambda6_ ((IBusEmojierEListBox*) self, event); return result; } static IBusEmojierEListBox* ibus_emojier_elist_box_construct (GType object_type) { IBusEmojierEListBox * self = NULL; self = (IBusEmojierEListBox*) g_object_new (object_type, "vexpand", TRUE, "halign", GTK_ALIGN_FILL, "valign", GTK_ALIGN_FILL, NULL); g_signal_connect_object ((GtkWidget*) self, "motion-notify-event", (GCallback) ___lambda5__gtk_widget_motion_notify_event, self, 0); g_signal_connect_object ((GtkWidget*) self, "enter-notify-event", (GCallback) ___lambda6__gtk_widget_enter_notify_event, self, 0); return self; } static IBusEmojierEListBox* ibus_emojier_elist_box_new (void) { return ibus_emojier_elist_box_construct (IBUS_EMOJIER_TYPE_ELIST_BOX); } static void ibus_emojier_elist_box_class_init (IBusEmojierEListBoxClass * klass, gpointer klass_data) { ibus_emojier_elist_box_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_elist_box_instance_init (IBusEmojierEListBox * self, gpointer klass) { } static GType ibus_emojier_elist_box_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEListBoxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_elist_box_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEListBox), 0, (GInstanceInitFunc) ibus_emojier_elist_box_instance_init, NULL }; GType ibus_emojier_elist_box_type_id; ibus_emojier_elist_box_type_id = g_type_register_static (gtk_list_box_get_type (), "IBusEmojierEListBox", &g_define_type_info, 0); return ibus_emojier_elist_box_type_id; } static GType ibus_emojier_elist_box_get_type (void) { static volatile gsize ibus_emojier_elist_box_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_elist_box_type_id__volatile)) { GType ibus_emojier_elist_box_type_id; ibus_emojier_elist_box_type_id = ibus_emojier_elist_box_get_type_once (); g_once_init_leave (&ibus_emojier_elist_box_type_id__volatile, ibus_emojier_elist_box_type_id); } return ibus_emojier_elist_box_type_id__volatile; } static inline gpointer ibus_emojier_ebox_row_get_instance_private (IBusEmojierEBoxRow* self) { return G_STRUCT_MEMBER_P (self, IBusEmojierEBoxRow_private_offset); } static IBusEmojierEBoxRow* ibus_emojier_ebox_row_construct (GType object_type, const gchar* text) { IBusEmojierEBoxRow * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEBoxRow*) g_object_new (object_type, NULL); ibus_emojier_ebox_row_set_text (self, text); return self; } static IBusEmojierEBoxRow* ibus_emojier_ebox_row_new (const gchar* text) { return ibus_emojier_ebox_row_construct (IBUS_EMOJIER_TYPE_EBOX_ROW, text); } static const gchar* ibus_emojier_ebox_row_get_text (IBusEmojierEBoxRow* self) { const gchar* result; const gchar* _tmp0_; g_return_val_if_fail (self != NULL, NULL); _tmp0_ = self->priv->_text; result = _tmp0_; return result; } static void ibus_emojier_ebox_row_set_text (IBusEmojierEBoxRow* self, const gchar* value) { g_return_if_fail (self != NULL); if (g_strcmp0 (value, ibus_emojier_ebox_row_get_text (self)) != 0) { gchar* _tmp0_; _tmp0_ = g_strdup (value); _g_free0 (self->priv->_text); self->priv->_text = _tmp0_; g_object_notify_by_pspec ((GObject *) self, ibus_emojier_ebox_row_properties[IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY]); } } static void ibus_emojier_ebox_row_class_init (IBusEmojierEBoxRowClass * klass, gpointer klass_data) { ibus_emojier_ebox_row_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &IBusEmojierEBoxRow_private_offset); G_OBJECT_CLASS (klass)->get_property = _vala_ibus_emojier_ebox_row_get_property; G_OBJECT_CLASS (klass)->set_property = _vala_ibus_emojier_ebox_row_set_property; G_OBJECT_CLASS (klass)->finalize = ibus_emojier_ebox_row_finalize; g_object_class_install_property (G_OBJECT_CLASS (klass), IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY, ibus_emojier_ebox_row_properties[IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY] = g_param_spec_string ("text", "text", "text", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE)); } static void ibus_emojier_ebox_row_instance_init (IBusEmojierEBoxRow * self, gpointer klass) { self->priv = ibus_emojier_ebox_row_get_instance_private (self); } static void ibus_emojier_ebox_row_finalize (GObject * obj) { IBusEmojierEBoxRow * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow); _g_free0 (self->priv->_text); G_OBJECT_CLASS (ibus_emojier_ebox_row_parent_class)->finalize (obj); } static GType ibus_emojier_ebox_row_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEBoxRowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_ebox_row_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEBoxRow), 0, (GInstanceInitFunc) ibus_emojier_ebox_row_instance_init, NULL }; GType ibus_emojier_ebox_row_type_id; ibus_emojier_ebox_row_type_id = g_type_register_static (gtk_list_box_row_get_type (), "IBusEmojierEBoxRow", &g_define_type_info, 0); IBusEmojierEBoxRow_private_offset = g_type_add_instance_private (ibus_emojier_ebox_row_type_id, sizeof (IBusEmojierEBoxRowPrivate)); return ibus_emojier_ebox_row_type_id; } static GType ibus_emojier_ebox_row_get_type (void) { static volatile gsize ibus_emojier_ebox_row_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_ebox_row_type_id__volatile)) { GType ibus_emojier_ebox_row_type_id; ibus_emojier_ebox_row_type_id = ibus_emojier_ebox_row_get_type_once (); g_once_init_leave (&ibus_emojier_ebox_row_type_id__volatile, ibus_emojier_ebox_row_type_id); } return ibus_emojier_ebox_row_type_id__volatile; } static void _vala_ibus_emojier_ebox_row_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { IBusEmojierEBoxRow * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow); switch (property_id) { case IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY: g_value_set_string (value, ibus_emojier_ebox_row_get_text (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void _vala_ibus_emojier_ebox_row_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) { IBusEmojierEBoxRow * self; self = G_TYPE_CHECK_INSTANCE_CAST (object, IBUS_EMOJIER_TYPE_EBOX_ROW, IBusEmojierEBoxRow); switch (property_id) { case IBUS_EMOJIER_EBOX_ROW_TEXT_PROPERTY: ibus_emojier_ebox_row_set_text (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_construct (GType object_type, GtkAdjustment* hadjustment, GtkAdjustment* vadjustment) { IBusEmojierEScrolledWindow * self = NULL; self = (IBusEmojierEScrolledWindow*) g_object_new (object_type, "hscrollbar-policy", GTK_POLICY_NEVER, "vscrollbar-policy", GTK_POLICY_NEVER, "shadow-type", GTK_SHADOW_IN, "margin-start", 6, "margin-end", 6, "margin-top", 6, "margin-bottom", 6, NULL); if (hadjustment != NULL) { gtk_scrolled_window_set_hadjustment ((GtkScrolledWindow*) self, hadjustment); } if (vadjustment != NULL) { gtk_scrolled_window_set_hadjustment ((GtkScrolledWindow*) self, vadjustment); } return self; } static IBusEmojierEScrolledWindow* ibus_emojier_escrolled_window_new (GtkAdjustment* hadjustment, GtkAdjustment* vadjustment) { return ibus_emojier_escrolled_window_construct (IBUS_EMOJIER_TYPE_ESCROLLED_WINDOW, hadjustment, vadjustment); } static void ibus_emojier_escrolled_window_class_init (IBusEmojierEScrolledWindowClass * klass, gpointer klass_data) { ibus_emojier_escrolled_window_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_escrolled_window_instance_init (IBusEmojierEScrolledWindow * self, gpointer klass) { } static GType ibus_emojier_escrolled_window_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEScrolledWindowClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_escrolled_window_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEScrolledWindow), 0, (GInstanceInitFunc) ibus_emojier_escrolled_window_instance_init, NULL }; GType ibus_emojier_escrolled_window_type_id; ibus_emojier_escrolled_window_type_id = g_type_register_static (gtk_scrolled_window_get_type (), "IBusEmojierEScrolledWindow", &g_define_type_info, 0); return ibus_emojier_escrolled_window_type_id; } static GType ibus_emojier_escrolled_window_get_type (void) { static volatile gsize ibus_emojier_escrolled_window_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_escrolled_window_type_id__volatile)) { GType ibus_emojier_escrolled_window_type_id; ibus_emojier_escrolled_window_type_id = ibus_emojier_escrolled_window_get_type_once (); g_once_init_leave (&ibus_emojier_escrolled_window_type_id__volatile, ibus_emojier_escrolled_window_type_id); } return ibus_emojier_escrolled_window_type_id__volatile; } static IBusEmojierEGrid* ibus_emojier_egrid_construct (GType object_type) { IBusEmojierEGrid * self = NULL; self = (IBusEmojierEGrid*) g_object_new (object_type, "row-homogeneous", FALSE, "vexpand", TRUE, "halign", GTK_ALIGN_FILL, "valign", GTK_ALIGN_FILL, "row-spacing", 5, "column-spacing", 5, "border-width", 2, NULL); return self; } static IBusEmojierEGrid* ibus_emojier_egrid_new (void) { return ibus_emojier_egrid_construct (IBUS_EMOJIER_TYPE_EGRID); } static void ibus_emojier_egrid_class_init (IBusEmojierEGridClass * klass, gpointer klass_data) { ibus_emojier_egrid_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_egrid_instance_init (IBusEmojierEGrid * self, gpointer klass) { } static GType ibus_emojier_egrid_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEGridClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_egrid_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEGrid), 0, (GInstanceInitFunc) ibus_emojier_egrid_instance_init, NULL }; GType ibus_emojier_egrid_type_id; ibus_emojier_egrid_type_id = g_type_register_static (gtk_grid_get_type (), "IBusEmojierEGrid", &g_define_type_info, 0); return ibus_emojier_egrid_type_id; } static GType ibus_emojier_egrid_get_type (void) { static volatile gsize ibus_emojier_egrid_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_egrid_type_id__volatile)) { GType ibus_emojier_egrid_type_id; ibus_emojier_egrid_type_id = ibus_emojier_egrid_get_type_once (); g_once_init_leave (&ibus_emojier_egrid_type_id__volatile, ibus_emojier_egrid_type_id); } return ibus_emojier_egrid_type_id__volatile; } static inline gpointer ibus_emojier_ewhite_label_get_instance_private (IBusEmojierEWhiteLabel* self) { return G_STRUCT_MEMBER_P (self, IBusEmojierEWhiteLabel_private_offset); } static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_construct (GType object_type, const gchar* text) { IBusEmojierEWhiteLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEWhiteLabel*) g_object_new (object_type, "name", "IBusEmojierWhiteLabel", NULL); gtk_label_set_label ((GtkLabel*) self, text); return self; } static IBusEmojierEWhiteLabel* ibus_emojier_ewhite_label_new (const gchar* text) { return ibus_emojier_ewhite_label_construct (IBUS_EMOJIER_TYPE_EWHITE_LABEL, text); } static void ibus_emojier_ewhite_label_real_get_preferred_width (GtkWidget* base, gint* minimum_width, gint* natural_width) { IBusEmojierEWhiteLabel * self; gint _vala_minimum_width = 0; gint _vala_natural_width = 0; gboolean _tmp0_ = FALSE; gchar* text = NULL; const gchar* _tmp3_; gchar* _tmp4_; gunichar ch = 0U; const gchar* _tmp5_; gboolean _tmp6_ = FALSE; const gchar* _tmp7_; gint _tmp8_; gint _tmp9_; gint _tmp10_ = 0; gint _tmp11_ = 0; gboolean _tmp12_ = FALSE; const gchar* _tmp13_; gint _tmp14_; gint _tmp15_; self = (IBusEmojierEWhiteLabel*) base; if (self->priv->m_minimum_height == 0) { _tmp0_ = self->priv->m_natural_height == 0; } else { _tmp0_ = FALSE; } if (_tmp0_) { gint _tmp1_ = 0; gint _tmp2_ = 0; GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_height ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp1_, &_tmp2_); self->priv->m_minimum_height = _tmp1_; self->priv->m_natural_height = _tmp2_; } _tmp3_ = gtk_label_get_label ((GtkLabel*) self); _tmp4_ = g_strdup (_tmp3_); text = _tmp4_; _tmp5_ = text; ch = string_get_char (_tmp5_, (glong) 0); _tmp7_ = text; _tmp8_ = strlen (_tmp7_); _tmp9_ = _tmp8_; if (_tmp9_ == 1) { _tmp6_ = ch == ((gunichar) '\t'); } else { _tmp6_ = FALSE; } if (_tmp6_) { _vala_minimum_width = self->priv->m_minimum_height; self->priv->m_minimum_width = _vala_minimum_width; _vala_natural_width = self->priv->m_natural_height; self->priv->m_natural_width = _vala_natural_width; _g_free0 (text); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } return; } GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_width ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp10_, &_tmp11_); _vala_minimum_width = _tmp10_; _vala_natural_width = _tmp11_; _tmp13_ = text; _tmp14_ = strlen (_tmp13_); _tmp15_ = _tmp14_; if (_tmp15_ == 1) { gboolean _tmp16_ = FALSE; if (ch == ((gunichar) '\n')) { _tmp16_ = TRUE; } else { _tmp16_ = ch == ((gunichar) '\r'); } _tmp12_ = _tmp16_; } else { _tmp12_ = FALSE; } if (_tmp12_) { _vala_minimum_width = _vala_minimum_width / 2; _vala_natural_width = _vala_natural_width / 2; self->priv->m_minimum_width = _vala_minimum_width; self->priv->m_natural_width = _vala_natural_width; _g_free0 (text); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } return; } if (_vala_minimum_width < self->priv->m_minimum_height) { _vala_minimum_width = self->priv->m_minimum_height; } if (_vala_natural_width < self->priv->m_natural_height) { _vala_natural_width = self->priv->m_natural_height; } self->priv->m_minimum_width = _vala_minimum_width; self->priv->m_natural_width = _vala_natural_width; _g_free0 (text); if (minimum_width) { *minimum_width = _vala_minimum_width; } if (natural_width) { *natural_width = _vala_natural_width; } } static void ibus_emojier_ewhite_label_real_get_preferred_height (GtkWidget* base, gint* minimum_height, gint* natural_height) { IBusEmojierEWhiteLabel * self; gint _vala_minimum_height = 0; gint _vala_natural_height = 0; gboolean _tmp0_ = FALSE; gchar* text = NULL; const gchar* _tmp3_; gchar* _tmp4_; gunichar ch = 0U; const gchar* _tmp5_; gboolean _tmp6_ = FALSE; const gchar* _tmp7_; gint _tmp8_; gint _tmp9_; gint _tmp10_ = 0; gint _tmp11_ = 0; gboolean _tmp12_ = FALSE; const gchar* _tmp13_; gint _tmp14_; gint _tmp15_; self = (IBusEmojierEWhiteLabel*) base; if (self->priv->m_minimum_width == 0) { _tmp0_ = self->priv->m_natural_width == 0; } else { _tmp0_ = FALSE; } if (_tmp0_) { gint _tmp1_ = 0; gint _tmp2_ = 0; GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_width ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp1_, &_tmp2_); self->priv->m_minimum_width = _tmp1_; self->priv->m_natural_width = _tmp2_; } _tmp3_ = gtk_label_get_label ((GtkLabel*) self); _tmp4_ = g_strdup (_tmp3_); text = _tmp4_; _tmp5_ = text; ch = string_get_char (_tmp5_, (glong) 0); _tmp7_ = text; _tmp8_ = strlen (_tmp7_); _tmp9_ = _tmp8_; if (_tmp9_ == 1) { _tmp6_ = ch == ((gunichar) '\v'); } else { _tmp6_ = FALSE; } if (_tmp6_) { _vala_minimum_height = self->priv->m_minimum_width; self->priv->m_minimum_height = _vala_minimum_height; _vala_natural_height = self->priv->m_natural_width; self->priv->m_natural_height = _vala_natural_height; _g_free0 (text); if (minimum_height) { *minimum_height = _vala_minimum_height; } if (natural_height) { *natural_height = _vala_natural_height; } return; } GTK_WIDGET_CLASS (ibus_emojier_ewhite_label_parent_class)->get_preferred_height ((GtkWidget*) G_TYPE_CHECK_INSTANCE_CAST (self, gtk_label_get_type (), GtkLabel), &_tmp10_, &_tmp11_); _vala_minimum_height = _tmp10_; _vala_natural_height = _tmp11_; _tmp13_ = text; _tmp14_ = strlen (_tmp13_); _tmp15_ = _tmp14_; if (_tmp15_ == 1) { gboolean _tmp16_ = FALSE; if (ch == ((gunichar) '\n')) { _tmp16_ = TRUE; } else { _tmp16_ = ch == ((gunichar) '\r'); } _tmp12_ = _tmp16_; } else { _tmp12_ = FALSE; } if (_tmp12_) { _vala_minimum_height = _vala_minimum_height / 2; _vala_natural_height = _vala_natural_height / 2; self->priv->m_minimum_height = _vala_minimum_height; self->priv->m_natural_height = _vala_natural_height; _g_free0 (text); if (minimum_height) { *minimum_height = _vala_minimum_height; } if (natural_height) { *natural_height = _vala_natural_height; } return; } self->priv->m_minimum_height = _vala_minimum_height; self->priv->m_natural_height = _vala_natural_height; _g_free0 (text); if (minimum_height) { *minimum_height = _vala_minimum_height; } if (natural_height) { *natural_height = _vala_natural_height; } } static void ibus_emojier_ewhite_label_class_init (IBusEmojierEWhiteLabelClass * klass, gpointer klass_data) { ibus_emojier_ewhite_label_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &IBusEmojierEWhiteLabel_private_offset); ((GtkWidgetClass *) klass)->get_preferred_width = (void (*) (GtkWidget*, gint*, gint*)) ibus_emojier_ewhite_label_real_get_preferred_width; ((GtkWidgetClass *) klass)->get_preferred_height = (void (*) (GtkWidget*, gint*, gint*)) ibus_emojier_ewhite_label_real_get_preferred_height; G_OBJECT_CLASS (klass)->finalize = ibus_emojier_ewhite_label_finalize; } static void ibus_emojier_ewhite_label_instance_init (IBusEmojierEWhiteLabel * self, gpointer klass) { self->priv = ibus_emojier_ewhite_label_get_instance_private (self); self->priv->m_minimum_width = 0; self->priv->m_natural_width = 0; self->priv->m_minimum_height = 0; self->priv->m_natural_height = 0; } static void ibus_emojier_ewhite_label_finalize (GObject * obj) { IBusEmojierEWhiteLabel * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, IBUS_EMOJIER_TYPE_EWHITE_LABEL, IBusEmojierEWhiteLabel); G_OBJECT_CLASS (ibus_emojier_ewhite_label_parent_class)->finalize (obj); } static GType ibus_emojier_ewhite_label_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEWhiteLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_ewhite_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEWhiteLabel), 0, (GInstanceInitFunc) ibus_emojier_ewhite_label_instance_init, NULL }; GType ibus_emojier_ewhite_label_type_id; ibus_emojier_ewhite_label_type_id = g_type_register_static (gtk_label_get_type (), "IBusEmojierEWhiteLabel", &g_define_type_info, 0); IBusEmojierEWhiteLabel_private_offset = g_type_add_instance_private (ibus_emojier_ewhite_label_type_id, sizeof (IBusEmojierEWhiteLabelPrivate)); return ibus_emojier_ewhite_label_type_id; } static GType ibus_emojier_ewhite_label_get_type (void) { static volatile gsize ibus_emojier_ewhite_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_ewhite_label_type_id__volatile)) { GType ibus_emojier_ewhite_label_type_id; ibus_emojier_ewhite_label_type_id = ibus_emojier_ewhite_label_get_type_once (); g_once_init_leave (&ibus_emojier_ewhite_label_type_id__volatile, ibus_emojier_ewhite_label_type_id); } return ibus_emojier_ewhite_label_type_id__volatile; } static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_construct (GType object_type, const gchar* text) { IBusEmojierESelectedLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierESelectedLabel*) g_object_new (object_type, "name", "IBusEmojierSelectedLabel", NULL); if (g_strcmp0 (text, "") != 0) { gtk_label_set_label ((GtkLabel*) self, text); } return self; } static IBusEmojierESelectedLabel* ibus_emojier_eselected_label_new (const gchar* text) { return ibus_emojier_eselected_label_construct (IBUS_EMOJIER_TYPE_ESELECTED_LABEL, text); } static void ibus_emojier_eselected_label_class_init (IBusEmojierESelectedLabelClass * klass, gpointer klass_data) { ibus_emojier_eselected_label_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_eselected_label_instance_init (IBusEmojierESelectedLabel * self, gpointer klass) { } static GType ibus_emojier_eselected_label_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierESelectedLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_eselected_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierESelectedLabel), 0, (GInstanceInitFunc) ibus_emojier_eselected_label_instance_init, NULL }; GType ibus_emojier_eselected_label_type_id; ibus_emojier_eselected_label_type_id = g_type_register_static (IBUS_EMOJIER_TYPE_EWHITE_LABEL, "IBusEmojierESelectedLabel", &g_define_type_info, 0); return ibus_emojier_eselected_label_type_id; } static GType ibus_emojier_eselected_label_get_type (void) { static volatile gsize ibus_emojier_eselected_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_eselected_label_type_id__volatile)) { GType ibus_emojier_eselected_label_type_id; ibus_emojier_eselected_label_type_id = ibus_emojier_eselected_label_get_type_once (); g_once_init_leave (&ibus_emojier_eselected_label_type_id__volatile, ibus_emojier_eselected_label_type_id); } return ibus_emojier_eselected_label_type_id__volatile; } static IBusEmojierEGoldLabel* ibus_emojier_egold_label_construct (GType object_type, const gchar* text) { IBusEmojierEGoldLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEGoldLabel*) g_object_new (object_type, "name", "IBusEmojierGoldLabel", NULL); if (g_strcmp0 (text, "") != 0) { gtk_label_set_label ((GtkLabel*) self, text); } return self; } static IBusEmojierEGoldLabel* ibus_emojier_egold_label_new (const gchar* text) { return ibus_emojier_egold_label_construct (IBUS_EMOJIER_TYPE_EGOLD_LABEL, text); } static void ibus_emojier_egold_label_class_init (IBusEmojierEGoldLabelClass * klass, gpointer klass_data) { ibus_emojier_egold_label_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_egold_label_instance_init (IBusEmojierEGoldLabel * self, gpointer klass) { } static GType ibus_emojier_egold_label_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEGoldLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_egold_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEGoldLabel), 0, (GInstanceInitFunc) ibus_emojier_egold_label_instance_init, NULL }; GType ibus_emojier_egold_label_type_id; ibus_emojier_egold_label_type_id = g_type_register_static (IBUS_EMOJIER_TYPE_EWHITE_LABEL, "IBusEmojierEGoldLabel", &g_define_type_info, 0); return ibus_emojier_egold_label_type_id; } static GType ibus_emojier_egold_label_get_type (void) { static volatile gsize ibus_emojier_egold_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_egold_label_type_id__volatile)) { GType ibus_emojier_egold_label_type_id; ibus_emojier_egold_label_type_id = ibus_emojier_egold_label_get_type_once (); g_once_init_leave (&ibus_emojier_egold_label_type_id__volatile, ibus_emojier_egold_label_type_id); } return ibus_emojier_egold_label_type_id__volatile; } static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_construct (GType object_type, const gchar* text, GtkAlign align) { IBusEmojierEPaddedLabel * self = NULL; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEPaddedLabel*) g_object_new (object_type, "name", "IBusEmojierPaddedLabel", "halign", align, "valign", GTK_ALIGN_CENTER, "margin-start", 20, "margin-end", 20, "margin-top", 6, "margin-bottom", 6, NULL); gtk_label_set_text ((GtkLabel*) self, text); return self; } static IBusEmojierEPaddedLabel* ibus_emojier_epadded_label_new (const gchar* text, GtkAlign align) { return ibus_emojier_epadded_label_construct (IBUS_EMOJIER_TYPE_EPADDED_LABEL, text, align); } static void ibus_emojier_epadded_label_class_init (IBusEmojierEPaddedLabelClass * klass, gpointer klass_data) { ibus_emojier_epadded_label_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_epadded_label_instance_init (IBusEmojierEPaddedLabel * self, gpointer klass) { } static GType ibus_emojier_epadded_label_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEPaddedLabelClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_epadded_label_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEPaddedLabel), 0, (GInstanceInitFunc) ibus_emojier_epadded_label_instance_init, NULL }; GType ibus_emojier_epadded_label_type_id; ibus_emojier_epadded_label_type_id = g_type_register_static (gtk_label_get_type (), "IBusEmojierEPaddedLabel", &g_define_type_info, 0); return ibus_emojier_epadded_label_type_id; } static GType ibus_emojier_epadded_label_get_type (void) { static volatile gsize ibus_emojier_epadded_label_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_epadded_label_type_id__volatile)) { GType ibus_emojier_epadded_label_type_id; ibus_emojier_epadded_label_type_id = ibus_emojier_epadded_label_get_type_once (); g_once_init_leave (&ibus_emojier_epadded_label_type_id__volatile, ibus_emojier_epadded_label_type_id); } return ibus_emojier_epadded_label_type_id__volatile; } static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_construct (GType object_type, const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption) { IBusEmojierEPaddedLabelBox * self = NULL; IBusEmojierEPaddedLabel* label = NULL; IBusEmojierEPaddedLabel* _tmp3_; IBusEmojierEPaddedLabel* _tmp4_; g_return_val_if_fail (text != NULL, NULL); self = (IBusEmojierEPaddedLabelBox*) g_object_new (object_type, "name", "IBusEmojierPaddedLabelBox", "orientation", GTK_ORIENTATION_HORIZONTAL, "spacing", 0, NULL); if (direction == IBUS_EMOJIER_TRAVEL_DIRECTION_BACKWARD) { IconWidget* icon = NULL; IconWidget* _tmp2_; if (gtk_widget_get_default_direction () == GTK_TEXT_DIR_RTL) { IconWidget* _tmp0_; _tmp0_ = icon_widget_new ("go-previous-rtl-symbolic", GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp0_); _g_object_unref0 (icon); icon = _tmp0_; } else { IconWidget* _tmp1_; _tmp1_ = icon_widget_new ("go-previous-symbolic", GTK_ICON_SIZE_MENU); g_object_ref_sink (_tmp1_); _g_object_unref0 (icon); icon = _tmp1_; } _tmp2_ = icon; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp2_, FALSE, TRUE, (guint) 0); _g_object_unref0 (icon); } _tmp3_ = ibus_emojier_epadded_label_new (text, align); g_object_ref_sink (_tmp3_); label = _tmp3_; _tmp4_ = label; gtk_box_pack_start ((GtkBox*) self, (GtkWidget*) _tmp4_, TRUE, TRUE, (guint) 0); if (caption != NULL) { IBusEmojierEPaddedLabel* label_r = NULL; IBusEmojierEPaddedLabel* _tmp5_; IBusEmojierEPaddedLabel* _tmp6_; _tmp5_ = ibus_emojier_epadded_label_new (caption, GTK_ALIGN_END); g_object_ref_sink (_tmp5_); label_r = _tmp5_; _tmp6_ = label_r; gtk_box_pack_end ((GtkBox*) self, (GtkWidget*) _tmp6_, TRUE, TRUE, (guint) 0); _g_object_unref0 (label_r); } _g_object_unref0 (label); return self; } static IBusEmojierEPaddedLabelBox* ibus_emojier_epadded_label_box_new (const gchar* text, GtkAlign align, IBusEmojierTravelDirection direction, const gchar* caption) { return ibus_emojier_epadded_label_box_construct (IBUS_EMOJIER_TYPE_EPADDED_LABEL_BOX, text, align, direction, caption); } static void ibus_emojier_epadded_label_box_class_init (IBusEmojierEPaddedLabelBoxClass * klass, gpointer klass_data) { ibus_emojier_epadded_label_box_parent_class = g_type_class_peek_parent (klass); } static void ibus_emojier_epadded_label_box_instance_init (IBusEmojierEPaddedLabelBox * self, gpointer klass) { } static GType ibus_emojier_epadded_label_box_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierEPaddedLabelBoxClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_epadded_label_box_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierEPaddedLabelBox), 0, (GInstanceInitFunc) ibus_emojier_epadded_label_box_instance_init, NULL }; GType ibus_emojier_epadded_label_box_type_id; ibus_emojier_epadded_label_box_type_id = g_type_register_static (gtk_box_get_type (), "IBusEmojierEPaddedLabelBox", &g_define_type_info, 0); return ibus_emojier_epadded_label_box_type_id; } static GType ibus_emojier_epadded_label_box_get_type (void) { static volatile gsize ibus_emojier_epadded_label_box_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_epadded_label_box_type_id__volatile)) { GType ibus_emojier_epadded_label_box_type_id; ibus_emojier_epadded_label_box_type_id = ibus_emojier_epadded_label_box_get_type_once (); g_once_init_leave (&ibus_emojier_epadded_label_box_type_id__volatile, ibus_emojier_epadded_label_box_type_id); } return ibus_emojier_epadded_label_box_type_id__volatile; } static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_construct (GType object_type) { IBusEmojierLoadProgressObject * self = NULL; self = (IBusEmojierLoadProgressObject*) g_object_new (object_type, NULL); return self; } static IBusEmojierLoadProgressObject* ibus_emojier_load_progress_object_new (void) { return ibus_emojier_load_progress_object_construct (IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT); } 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 ibus_emojier_load_progress_object_class_init (IBusEmojierLoadProgressObjectClass * klass, gpointer klass_data) { ibus_emojier_load_progress_object_parent_class = g_type_class_peek_parent (klass); ibus_emojier_load_progress_object_signals[IBUS_EMOJIER_LOAD_PROGRESS_OBJECT_DESERIALIZE_UNICODE_SIGNAL] = g_signal_new ("deserialize-unicode", IBUS_EMOJIER_TYPE_LOAD_PROGRESS_OBJECT, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_user_marshal_VOID__UINT_UINT, G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT); } static void ibus_emojier_load_progress_object_instance_init (IBusEmojierLoadProgressObject * self, gpointer klass) { } static GType ibus_emojier_load_progress_object_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierLoadProgressObjectClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_load_progress_object_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojierLoadProgressObject), 0, (GInstanceInitFunc) ibus_emojier_load_progress_object_instance_init, NULL }; GType ibus_emojier_load_progress_object_type_id; ibus_emojier_load_progress_object_type_id = g_type_register_static (G_TYPE_OBJECT, "IBusEmojierLoadProgressObject", &g_define_type_info, 0); return ibus_emojier_load_progress_object_type_id; } static GType ibus_emojier_load_progress_object_get_type (void) { static volatile gsize ibus_emojier_load_progress_object_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_load_progress_object_type_id__volatile)) { GType ibus_emojier_load_progress_object_type_id; ibus_emojier_load_progress_object_type_id = ibus_emojier_load_progress_object_get_type_once (); g_once_init_leave (&ibus_emojier_load_progress_object_type_id__volatile, ibus_emojier_load_progress_object_type_id); } return ibus_emojier_load_progress_object_type_id__volatile; } static void ibus_emojier_class_init (IBusEmojierClass * klass, gpointer klass_data) { gchar* _tmp0_; ibus_emojier_parent_class = g_type_class_peek_parent (klass); g_type_class_adjust_private_offset (klass, &IBusEmojier_private_offset); ((GtkWidgetClass *) klass)->show_all = (void (*) (GtkWidget*)) ibus_emojier_real_show_all; ((GtkWidgetClass *) klass)->hide = (void (*) (GtkWidget*)) ibus_emojier_real_hide; ((GtkWidgetClass *) klass)->key_press_event = (gboolean (*) (GtkWidget*, GdkEventKey*)) ibus_emojier_real_key_press_event; G_OBJECT_CLASS (klass)->finalize = ibus_emojier_finalize; ibus_emojier_signals[IBUS_EMOJIER_CANDIDATE_CLICKED_SIGNAL] = g_signal_new ("candidate-clicked", TYPE_IBUS_EMOJIER, 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); ibus_emojier_signals[IBUS_EMOJIER_COMMIT_TEXT_SIGNAL] = g_signal_new ("commit-text", TYPE_IBUS_EMOJIER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); ibus_emojier_signals[IBUS_EMOJIER_CANCEL_SIGNAL] = g_signal_new ("cancel", TYPE_IBUS_EMOJIER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); _tmp0_ = g_strdup (""); ibus_emojier_m_warning_message = _tmp0_; } static void ibus_emojier_instance_init (IBusEmojier * self, gpointer klass) { gchar* _tmp0_; gchar* _tmp1_; self->priv = ibus_emojier_get_instance_private (self); _tmp0_ = g_strdup (""); self->priv->m_annotation = _tmp0_; self->priv->m_backward_index = -1; self->priv->m_scrolled_window = NULL; self->priv->m_is_running = FALSE; _tmp1_ = g_strdup (""); self->priv->m_input_context_path = _tmp1_; self->priv->m_category_active_index = -1; self->priv->m_enter_notify_enable = TRUE; self->priv->m_is_up_side_down = FALSE; } static void ibus_emojier_finalize (GObject * obj) { IBusEmojier * self; self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_IBUS_EMOJIER, IBusEmojier); _themed_rgba_unref0 (self->priv->m_rgba); _g_object_unref0 (self->priv->m_vbox); _g_free0 (self->priv->m_annotation); _g_free0 (self->priv->m_backward); _g_object_unref0 (self->priv->m_scrolled_window); _g_object_unref0 (self->priv->m_list_box); _g_free0 (self->priv->m_input_context_path); _g_main_loop_unref0 (self->priv->m_loop); _g_free0 (self->priv->m_result); _g_object_unref0 (self->priv->m_lookup_table); self->priv->m_candidates = (_vala_array_free (self->priv->m_candidates, self->priv->m_candidates_length1, (GDestroyNotify) g_object_unref), NULL); _g_object_unref0 (self->priv->m_unicode_progress_bar); _g_object_unref0 (self->priv->m_unicode_percent_label); G_OBJECT_CLASS (ibus_emojier_parent_class)->finalize (obj); } static GType ibus_emojier_get_type_once (void) { static const GTypeInfo g_define_type_info = { sizeof (IBusEmojierClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) ibus_emojier_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (IBusEmojier), 0, (GInstanceInitFunc) ibus_emojier_instance_init, NULL }; GType ibus_emojier_type_id; ibus_emojier_type_id = g_type_register_static (gtk_application_window_get_type (), "IBusEmojier", &g_define_type_info, 0); IBusEmojier_private_offset = g_type_add_instance_private (ibus_emojier_type_id, sizeof (IBusEmojierPrivate)); return ibus_emojier_type_id; } GType ibus_emojier_get_type (void) { static volatile gsize ibus_emojier_type_id__volatile = 0; if (g_once_init_enter (&ibus_emojier_type_id__volatile)) { GType ibus_emojier_type_id; ibus_emojier_type_id = ibus_emojier_get_type_once (); g_once_init_leave (&ibus_emojier_type_id__volatile, ibus_emojier_type_id); } return ibus_emojier_type_id__volatile; } static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { gint 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) { gint length; length = 0; if (array) { while (((gpointer*) array)[length]) { length++; } } return length; } ibus-1.5.22/ui/gtk3/pango.vala0000644000000000000000000000567613623750431012712 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.22/ui/gtk3/candidatepanel.vala0000644000000000000000000003346713623750431014541 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2011-2015 Peng Huang * Copyright(c) 2015-2019 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()); Pango.AttrList attrs = get_pango_attr_list_from_ibus_text(text); m_aux_label.set_attributes(attrs); 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() { /* Do not call gtk_window_resize() in * GtkWidgetClass->get_preferred_width() * because the following warning is shown in GTK 3.20: * "Allocating size to GtkWindow %x without calling * gtk_widget_get_preferred_width/height(). How does the code * know the size to allocate?" * in gtk_widget_size_allocate_with_baseline() */ m_toplevel.resize(1, 1); 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(); } 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); m_preedit_label.set_margin_start(8); m_preedit_label.set_margin_end(8); 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); m_aux_label.set_margin_start(8); m_aux_label.set_margin_end(8); 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 Gdk.Rectangle get_monitor_geometry() { Gdk.Rectangle monitor_area = { 0, }; // Use get_monitor_geometry() instead of get_monitor_area(). // get_monitor_area() excludes docks, but the lookup window should be // shown over them. #if VALA_0_34 Gdk.Monitor monitor = Gdk.Display.get_default().get_monitor_at_point( m_cursor_location.x, m_cursor_location.y); monitor_area = monitor.get_geometry(); #else Gdk.Screen screen = Gdk.Screen.get_default(); int monitor_num = screen.get_monitor_at_point(m_cursor_location.x, m_cursor_location.y); screen.get_monitor_geometry(monitor_num, out monitor_area); #endif return monitor_area; } private void adjust_window_position_horizontal() { Gdk.Point cursor_right_bottom = { m_cursor_location.x, 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.Rectangle monitor_area = get_monitor_geometry(); int monitor_right = monitor_area.x + monitor_area.width; int monitor_bottom = monitor_area.y + monitor_area.height; int x, y; if (window_right_bottom.x > monitor_right) x = monitor_right - allocation.width; else x = cursor_right_bottom.x; if (x < 0) x = 0; if (window_right_bottom.y > monitor_bottom) 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.Rectangle monitor_area = get_monitor_geometry(); int monitor_right = monitor_area.x + monitor_area.width; int monitor_bottom = monitor_area.y + monitor_area.height; int x, y; if (!m_candidate_area.get_vertical()) { if (hwindow_right_bottom.x > monitor_right) x = monitor_right - allocation.width; else x = m_cursor_location.x; if (hwindow_right_bottom.y > monitor_bottom) y = m_cursor_location.y - allocation.height; else y = cursor_right_bottom.y; } else { if (vwindow_left_bottom.x > monitor_right) x = monitor_right - 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 > monitor_bottom) y = monitor_bottom - allocation.height; else y = m_cursor_location.y; } if (x < 0) x = 0; if (y < 0) y = 0; move(x, y); } } ibus-1.5.22/ui/gtk3/extension.vala0000644000000000000000000001166013623750431013610 00000000000000/* vim:set et sts=4 sw=4: * * ibus - The Input Bus * * Copyright(c) 2018 Peng Huang * Copyright(c) 2018 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 ExtensionGtk : Gtk.Application { private IBus.Bus m_bus; private PanelBinding m_panel; public ExtensionGtk(string[] args) { Object(application_id: "org.freedesktop.IBus.Panel.Extension.Gtk3", flags: ApplicationFlags.FLAGS_NONE); GLib.Intl.bindtextdomain(Config.GETTEXT_PACKAGE, Config.LOCALEDIR); GLib.Intl.bind_textdomain_codeset(Config.GETTEXT_PACKAGE, "UTF-8"); IBus.init(); Gtk.init(ref args); 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_EXTENSION_EMOJI, DBusSignalFlags.NONE, bus_name_acquired_cb); connection.signal_subscribe("org.freedesktop.DBus", "org.freedesktop.DBus", "NameLost", "/org/freedesktop/DBus", IBus.SERVICE_PANEL_EXTENSION_EMOJI, DBusSignalFlags.NONE, bus_name_lost_cb); var flags = IBus.BusNameFlag.ALLOW_REPLACEMENT | IBus.BusNameFlag.REPLACE_EXISTING; m_bus.request_name(IBus.SERVICE_PANEL_EXTENSION_EMOJI, flags); } 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 PanelBinding(m_bus, this); 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) { // "Destroy" dbus method was called before this callback is called. // "Destroy" dbus method -> ibus_service_destroy() // -> g_dbus_connection_unregister_object() // -> g_object_unref(m_panel) will be called later with an idle method, // which was assigned in the arguments of // g_dbus_connection_register_object() debug("signal_name = %s", signal_name); // unref m_panel m_panel.disconnect_signals(); 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 override void activate() { Gtk.main(); } public static int main(string[] args) { // https://bugzilla.redhat.com/show_bug.cgi?id=1226465#c20 // In /etc/xdg/plasma-workspace/env/gtk3_scrolling.sh // Plasma deskop sets this variable and prevents Super-space, // and Ctrl-Shift-e when ibus-ui-gtk3 runs after the // desktop is launched. GLib.Environment.unset_variable("GDK_CORE_DEVICE_EVENTS"); // Gdk.set_allowed_backends("x11") let present_with_time() failed on // launching the dialog secondly in Wayland. //Gdk.set_allowed_backends("x11"); ExtensionGtk extension = new ExtensionGtk(args); int status = extension.run(args); return status; } } ibus-1.5.22/missing0000755000000000000000000001533613623751263011051 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1996-2018 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=https://www.perl.org/ flex_URL=https://github.com/westes/flex gnu_software_URL=https://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 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: ibus-1.5.22/configure0000755000000000000000000255613113623751262011365 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for ibus 1.5.22. # # 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.22' PACKAGE_STRING='ibus 1.5.22' 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" gt_needs= ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS GDBUS_CODEGEN ISOCODES_PREFIX ISOCODES_LIBS ISOCODES_CFLAGS UCD_DIR ENABLE_UNICODE_DICT_FALSE ENABLE_UNICODE_DICT_TRUE EMOJI_ANNOTATION_DIR UNICODE_EMOJI_DIR ENABLE_EMOJI_DICT_FALSE ENABLE_EMOJI_DICT_TRUE ENABLE_INSTALL_TESTS_FALSE ENABLE_INSTALL_TESTS_TRUE ENABLE_XTEST_FALSE ENABLE_XTEST_TRUE XTEST_LIBS XTEST_CFLAGS 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 ENABLE_DAEMON_FALSE ENABLE_DAEMON_TRUE ENABLE_SETUP_FALSE ENABLE_SETUP_TRUE ENABLE_PYTHON_LIBRARY_FALSE ENABLE_PYTHON_LIBRARY_TRUE ENABLE_PYTHON2_FALSE ENABLE_PYTHON2_TRUE PYTHON2 pkgpyexecdir pyexecdir pkgpythondir pythondir PYTHON_PLATFORM PYTHON_EXEC_PREFIX PYTHON_PREFIX PYTHON_VERSION PYTHON 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 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_scanner_rules wayland_protocoldir wayland_scanner WAYLAND_SCANNER_LIBS WAYLAND_SCANNER_CFLAGS WAYLAND_PRTCLS_SUBDIR WAYLAND_LIBS WAYLAND_CFLAGS X11_PREFIX X11_LIBS X11_CFLAGS ENABLE_GDK3_WAYLAND_FALSE ENABLE_GDK3_WAYLAND_TRUE GTK3_LIBS GTK3_CFLAGS GTK2_LIBS GTK2_CFLAGS ENABLE_APPINDICATOR_FALSE ENABLE_APPINDICATOR_TRUE ENABLE_WAYLAND_FALSE ENABLE_WAYLAND_TRUE XIM_CLI_ARG 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 LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP LIBTOOL POSUB LTLIBINTL LIBINTL INTLLIBS LTLIBICONV LIBICONV INTL_MACOSX_LIBS host_os host_vendor host_cpu host build_os build_vendor build_cpu build XGETTEXT_EXTRA_OPTIONS MSGMERGE XGETTEXT_015 XGETTEXT GMSGFMT_015 MSGFMT_015 GMSGFMT MSGFMT GETTEXT_MACRO_VERSION USE_NLS SED VALAC DATE_DISPLAY 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__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 am__quote' ac_subst_files='wayland_scanner_rules' ac_user_opts=' enable_option_checking enable_silent_rules enable_maintainer_mode enable_dependency_tracking enable_nls with_gnu_ld enable_rpath with_libiconv_prefix with_libintl_prefix enable_static enable_shared with_pic enable_fast_install with_aix_soname with_sysroot enable_libtool_lock 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_memconf enable_dconf enable_schemas_compile enable_python2 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_install_tests enable_emoji_dict with_unicode_emoji_dir with_emoji_annotation_dir enable_unicode_dict with_ucd_dir with_socket_dir ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP LT_SYS_LIBRARY_PATH PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GLIB_CFLAGS GLIB_LIBS GLIB_GENMARSHAL GOBJECT_QUERY GLIB_MKENUMS GLIB_COMPILE_RESOURCES 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 WAYLAND_SCANNER_CFLAGS WAYLAND_SCANNER_LIBS GTKDOC_DEPS_CFLAGS GTKDOC_DEPS_LIBS DBUS_CFLAGS DBUS_LIBS DCONF_CFLAGS DCONF_LIBS GLIB_COMPILE_SCHEMAS PYTHON PYTHON_CFLAGS PYTHON_LIBS DBUS_PYTHON_CFLAGS DBUS_PYTHON_LIBS XTEST_CFLAGS XTEST_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.22 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.22:";; 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 --disable-nls do not use Native Language Support --disable-rpath do not hardcode runtime library paths --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-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-memconf Enable configure base on memory --disable-dconf Disable configure base on dconf --disable-schemas-compile Disable regeneration of gschemas.compiled on install --disable-python2 Do not install bindings/pygobject/gi and ibus for python2. '--disable-python2' bring '--disable-python-library'. --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 --enable-install-tests Enable to install tests --disable-emoji-dict Do not build Emoji dict files --disable-unicode-dict Do not build Unicode dict files Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib --without-libintl-prefix don't search for libintl in includedir and libdir --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --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-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") --with-unicode-emoji-dir=DIR Set the directory of Unicode Emoji. (default: "/usr/share/unicode/emoji") --with-emoji-annotation-dir=DIR Set the directory of CLDR annotation files. (default: "/usr/share/unicode/cldr/common/annotations") --with-ucd-dir=DIR Set the directory of UCD (Unicode Character Database) files. (default: "/usr/share/unicode/ucd") --with-socket-dir=DIR Set the default socket directory to connect ibus-daemon with D-Bus connections (default: "$XDG_CACHE_HOME/ibus"). The best practice of the socket directory would be unique per user not to modify by malicious users but XDG_RUNTIME_DIR is not integrated in BSD systems and the BSD's default is "/tmp". XDG_RUMTIME_DIR is not useful now because XDG_RUMTIME_DIR is available by login but not `su` command but ibus-daemon can be run with su. "$XDG_RUMTIME_DIR", "$XDG_CACHE_HOME", "$UID" are extracted by ibus-daemon. ibus-daemon also runs mkdir for the socket directory since BSD systems do not support abstract socket paths. The socket path on a NFS mount would not be a good idea likes "/home/$USER" because the directory is not sometimes accessible with the network condition. 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 LT_SYS_LIBRARY_PATH User-defined run-time library search path. 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 GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config GLIB_LIBS linker flags for GLIB, overriding pkg-config GLIB_GENMARSHAL value of glib_genmarshal for glib-2.0, overriding pkg-config GOBJECT_QUERY value of gobject_query for glib-2.0, overriding pkg-config GLIB_MKENUMS value of glib_mkenums for glib-2.0, overriding pkg-config GLIB_COMPILE_RESOURCES value of glib_compile_resources for gio-2.0, overriding pkg-config 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 WAYLAND_SCANNER_CFLAGS C compiler flags for WAYLAND_SCANNER, overriding pkg-config WAYLAND_SCANNER_LIBS linker flags for WAYLAND_SCANNER, 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 DCONF_CFLAGS C compiler flags for DCONF, overriding pkg-config DCONF_LIBS linker flags for DCONF, overriding pkg-config GLIB_COMPILE_SCHEMAS value of glib_compile_schemas for gio-2.0, 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 XTEST_CFLAGS C compiler flags for XTEST, overriding pkg-config XTEST_LIBS linker flags for XTEST, 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.22 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.22, 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 gt_needs="$gt_needs " # 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.46 # Init automake. am__api_version='1.16' 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.22' 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" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 $as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 $as_echo "${_am_result}" >&6; } # 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=22 IBUS_ABI_CURRENT=5 IBUS_ABI_REVISION=522 IBUS_ABI_AGE=0 IBUS_VERSION=1.5.22 IBUS_API_VERSION=1.0 IBUS_BINARY_VERSION=1.5.0.522 # 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:522:0" LT_CURRENT_MINUS_AGE=5 # Define GETTEXT_* variables. GETTEXT_PACKAGE=ibus10 cat >>confdefs.h <<_ACEOF #define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" _ACEOF ibus_save_prefix="$prefix" ibus_save_datarootdir="$datarootdir" ibus_save_datadir="$datadir" ibus_save_localedir="$localedir" test "x$prefix" = xNONE && prefix=$ac_default_prefix datarootdir=`eval echo "$datarootdir"` datadir=`eval echo "$datadir"` test "x$localedir" = xNONE && localedir="${datadir}/locale" ibus_localedir=`eval echo "$localedir"` localedir="$ibus_save_localedir" datadir="$ibus_save_datadir" datarootdir="$ibus_save_datarootdir" prefix="$ibus_save_prefix" cat >>confdefs.h <<_ACEOF #define LOCALEDIR "$ibus_localedir" _ACEOF # For dislpay date. DATE_DISPLAY="Fri Feb 21 2020" # 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 { $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 { $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; } GETTEXT_MACRO_VERSION=0.19 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # 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. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" ;; esac fi MSGFMT="$ac_cv_path_MSGFMT" if test "$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 case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # 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. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done 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 rm -f messages.po case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # 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. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&5 if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done done IFS="$ac_save_IFS" test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" ;; esac fi MSGMERGE="$ac_cv_path_MSGMERGE" if test "$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 test -n "$localedir" || localedir='${datadir}/locale' test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= ac_config_commands="$ac_config_commands po-directories" if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" # 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 # 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 # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. 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 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 ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_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 `"$acl_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 ${acl_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 "$acl_cv_prog_gnu_ld" >&6; } with_gnu_ld=$acl_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5 $as_echo_n "checking for shared library run path origin... " >&6; } if ${acl_cv_rpath+:} false; then : $as_echo_n "(cached) " >&6 else CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : else enable_rpath=yes fi acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 $as_echo_n "checking for 64-bit host... " >&6; } if ${gl_cv_solaris_64bit+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef _LP64 sixtyfour bits #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "sixtyfour bits" >/dev/null 2>&1; then : gl_cv_solaris_64bit=yes else gl_cv_solaris_64bit=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 $as_echo "$gl_cv_solaris_64bit" >&6; } if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libiconv-prefix was given. if test "${with_libiconv_prefix+set}" = set; then : withval=$with_libiconv_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBICONV= LTLIBICONV= INCICONV= LIBICONV_PREFIX= HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='iconv ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a" else LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'iconv'; then LIBICONV_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCICONV="${INCICONV}${INCICONV:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBICONV; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBICONV="${LIBICONV}${LIBICONV:+ }$dep" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep" ;; esac done fi else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5 $as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; } if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFPreferencesCopyAppValue(NULL, NULL) ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFPreferencesCopyAppValue=yes else gt_cv_func_CFPreferencesCopyAppValue=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5 $as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; } if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then $as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5 $as_echo_n "checking for CFLocaleCopyCurrent... " >&6; } if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { CFLocaleCopyCurrent(); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : gt_cv_func_CFLocaleCopyCurrent=yes else gt_cv_func_CFLocaleCopyCurrent=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$gt_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5 $as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; } if test $gt_cv_func_CFLocaleCopyCurrent = yes; then $as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi LIBINTL= LTLIBINTL= POSUB= case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5 $as_echo_n "checking for GNU gettext in libc... " >&6; } if eval \${$gt_func_gnugettext_libc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libc=yes" else eval "$gt_func_gnugettext_libc=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$gt_func_gnugettext_libc { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then am_save_CPPFLAGS="$CPPFLAGS" for element in $INCICONV; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 $as_echo_n "checking for iconv... " >&6; } if ${am_cv_func_iconv+:} false; then : $as_echo_n "(cached) " >&6 else am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : am_cv_lib_iconv=yes am_cv_func_iconv=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$am_save_LIBS" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 $as_echo_n "checking for working iconv... " >&6; } if ${am_cv_func_iconv_works+:} false; then : $as_echo_n "(cached) " >&6 else am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do if test "$cross_compiling" = yes; then : case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif int main () { int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : am_cv_func_iconv_works=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 $as_echo "$am_cv_func_iconv_works" >&6; } case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h fi if test "$am_cv_lib_iconv" = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5 $as_echo_n "checking how to link with libiconv... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5 $as_echo "$LIBICONV" >&6; } else CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi use_additional=yes acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" # Check whether --with-libintl-prefix was given. if test "${with_libintl_prefix+set}" = set; then : withval=$with_libintl_prefix; if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi fi LIBINTL= LTLIBINTL= INCINTL= LIBINTL_PREFIX= HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='intl ' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$value" else : fi else found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi if test "$acl_hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a" else LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir -l$name" fi fi additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = 'intl'; then LIBINTL_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INCINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then INCINTL="${INCINTL}${INCINTL:+ }-I$additional_includedir" fi fi fi fi fi if test -n "$found_la"; then save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIBINTL; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) LIBINTL="${LIBINTL}${LIBINTL:+ }$dep" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep" ;; esac done fi else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then for found_dir in $ltrpathdirs; do LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir" done fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if eval \${$gt_func_gnugettext_libintl+:} false; then : $as_echo_n "(cached) " >&6 else gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$gt_func_gnugettext_libintl=yes" else eval "$gt_func_gnugettext_libintl=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code int main () { bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS" fi eval ac_res=\$$gt_func_gnugettext_libintl { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else LIBINTL= LTLIBINTL= INCINTL= fi if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then $as_echo "#define ENABLE_NLS 1" >>confdefs.h else USE_NLS=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5 $as_echo_n "checking whether to use NLS... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5 $as_echo "$USE_NLS" >&6; } if test "$USE_NLS" = "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5 $as_echo_n "checking where the gettext function comes from... " >&6; } if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5 $as_echo "$gt_source" >&6; } fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5 $as_echo_n "checking how to link with libintl... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5 $as_echo "$LIBINTL" >&6; } for element in $INCINTL; do haveit= for x in $CPPFLAGS; do acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" eval x=\"$x\" exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element" fi done fi $as_echo "#define HAVE_GETTEXT 1" >>confdefs.h $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h fi POSUB=po fi INTLLIBS="$LIBINTL" # 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.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # 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 no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; 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 yes = "$with_gnu_ld"; 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 # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) 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 no != "$lt_cv_path_NM"; 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 -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) 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; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # 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" && \ test undefined != "$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 17 != "$i" # 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"} 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 yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; 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 # that 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. if ( 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 ;; 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 | 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* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; 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 ;; os2*) 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 one 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 0 -eq "$ac_status"; 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 0 -ne "$ac_status"; 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 no = "$lt_cv_ar_at_file"; 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 bitrig* | 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 ia64 = "$host_cpu"; 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 if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # 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"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$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"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/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, # D for any global variable and I for any imported 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};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,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 can'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* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$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 yes = "$pipe_works"; 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 yes = "$GCC"; 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; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_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 dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || 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 what ABI is being produced by ac_compile, and set mode # options accordingly. 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 what ABI is being produced by ac_compile, and set linker # options accordingly. 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 yes = "$lt_cv_prog_gnu_ld"; 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* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. 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 emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. 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*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; 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 yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. 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*|x86_64-*-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 yes != "$lt_cv_path_mainfest_tool"; 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 0 = "$_lt_result"; 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 0 = "$_lt_result" && $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 yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; 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 no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; 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 # 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 shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # 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 set != "${COLLECT_NAMES+set}"; 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 func_cc_basename $compiler cc_basename=$func_cc_basename_result # 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 yes = "$GCC"; 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" ## exclude from sc_useless_quotes_in_assignment # 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 yes = "$lt_cv_prog_compiler_rtti_exceptions"; 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 yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; 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' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; 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' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; 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 | 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' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; 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 that 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" ## exclude from sc_useless_quotes_in_assignment # 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 yes = "$lt_cv_prog_compiler_pic_works"; 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 yes = "$lt_cv_prog_compiler_static_works"; 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 no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; 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 no = "$hard_links"; 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 yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) 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 yes = "$with_gnu_ld"; 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 yes = "$lt_use_gnu_ld_interface"; 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 | $SED -e 's/(^)\+)\s\+//' 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 ia64 != "$host_cpu"; 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, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; 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 ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=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 linux-dietlibc = "$host_os"; 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 no = "$tmp_diet" 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' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-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 yes = "$supports_anon_versioning"; 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 tcc*) export_dynamic_flag_spec='-rdynamic' ;; 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 yes = "$supports_anon_versioning"; 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 cannot *** 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 no = "$ld_shlibs"; 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 yes = "$GCC" && 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 ia64 = "$host_cpu"; 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 GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. 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) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; 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 yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; 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 set = "${lt_cv_aix_libpath+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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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 set = "${lt_cv_aix_libpath+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 yes = "$with_gnu_ld"; 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 archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' 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,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $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 yes = "$lt_cv_ld_force_load"; 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*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; 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 yes = "$GCC"; 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 "x$output_objdir/$soname" = "x$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 "x$output_objdir/$soname" = "x$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 yes,no = "$GCC,$with_gnu_ld"; 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 no = "$with_gnu_ld"; 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 yes,no = "$GCC,$with_gnu_ld"; 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 yes = "$lt_cv_prog_compiler__b"; 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 no = "$with_gnu_ld"; 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 yes = "$GCC"; 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 yes = "$lt_cv_irix_exported_symbol"; 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 ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; 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* | bitrig*) 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__`"; 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 archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; 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 yes = "$GCC"; 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 yes = "$GCC"; 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 yes = "$GCC"; 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 sequent = "$host_vendor"; 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 yes = "$GCC"; 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 CANNOT 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 yes = "$GCC"; 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 sni = "$host_vendor"; 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 no = "$ld_shlibs" && 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 yes,yes = "$GCC,$enable_shared"; 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 yes = "$GCC"; 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` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac 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" elif test -n "$lt_multi_os_dir"; then 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 ia64 = "$host_cpu"; 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 # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # 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' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # 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' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac 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%'\''`; $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$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' 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 ;; 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=no 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 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; 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 yes = "$lt_cv_prog_gnu_ld"; 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 ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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" # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) 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* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi 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 shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec 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' ;; 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 yes = "$with_gnu_ld"; 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=sco 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 yes = "$with_gnu_ld"; 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 no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $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 yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; 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 relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; 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 ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) 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 no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && 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 yes = "$cross_compiling"; 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 -fvisibility=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 yes = "$lt_cv_dlopen_self"; 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 yes = "$cross_compiling"; 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 -fvisibility=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 what 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 no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac 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 yes = "$enable_shared" || 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: # Check header filess. for ac_header in sys/prctl.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/prctl.h" "ac_cv_header_sys_prctl_h" "$ac_includes_default" if test "x$ac_cv_header_sys_prctl_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_PRCTL_H 1 _ACEOF fi done # 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 min_glib_version=2.0.0 pkg_config_args="glib-2.0 >= $min_glib_version" 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 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5 $as_echo_n "checking for GLIB... " >&6; } if test -n "$GLIB_CFLAGS"; then pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_config_args\""; } >&5 ($PKG_CONFIG --exists --print-errors "$pkg_config_args") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "$pkg_config_args" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLIB_LIBS"; then pkg_cv_GLIB_LIBS="$GLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$pkg_config_args\""; } >&5 ($PKG_CONFIG --exists --print-errors "$pkg_config_args") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "$pkg_config_args" 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 GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$pkg_config_args" 2>&1` else GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$pkg_config_args" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 : elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } : else GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS GLIB_LIBS=$pkg_cv_GLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } : fi if test -n "$GLIB_GENMARSHAL"; then pkg_cv_GLIB_GENMARSHAL="$GLIB_GENMARSHAL" 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\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_GENMARSHAL=`$PKG_CONFIG --variable="glib_genmarshal" "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi GLIB_GENMARSHAL=$pkg_cv_GLIB_GENMARSHAL if test "x$GLIB_GENMARSHAL" = x""; then : fi if test -n "$GOBJECT_QUERY"; then pkg_cv_GOBJECT_QUERY="$GOBJECT_QUERY" 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\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GOBJECT_QUERY=`$PKG_CONFIG --variable="gobject_query" "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi GOBJECT_QUERY=$pkg_cv_GOBJECT_QUERY if test "x$GOBJECT_QUERY" = x""; then : fi if test -n "$GLIB_MKENUMS"; then pkg_cv_GLIB_MKENUMS="$GLIB_MKENUMS" 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\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_MKENUMS=`$PKG_CONFIG --variable="glib_mkenums" "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi GLIB_MKENUMS=$pkg_cv_GLIB_MKENUMS if test "x$GLIB_MKENUMS" = x""; then : fi if test -n "$GLIB_COMPILE_RESOURCES"; then pkg_cv_GLIB_COMPILE_RESOURCES="$GLIB_COMPILE_RESOURCES" 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\""; } >&5 ($PKG_CONFIG --exists --print-errors "gio-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable="glib_compile_resources" "gio-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi GLIB_COMPILE_RESOURCES=$pkg_cv_GLIB_COMPILE_RESOURCES if test "x$GLIB_COMPILE_RESOURCES" = x""; then : fi { $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_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 (void) { 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.46.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " glib-2.0 >= 2.46.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.46.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.46.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " glib-2.0 >= 2.46.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.46.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.46.0 " 2>&1` else GLIB2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " glib-2.0 >= 2.46.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.46.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.46.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gobject-2.0 >= 2.46.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.46.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.46.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gobject-2.0 >= 2.46.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.46.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.46.0 " 2>&1` else GOBJECT2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gobject-2.0 >= 2.46.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.46.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 gio-unix-2.0 >= 2.46.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gio-2.0 gio-unix-2.0 >= 2.46.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 gio-unix-2.0 >= 2.46.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 gio-unix-2.0 >= 2.46.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gio-2.0 gio-unix-2.0 >= 2.46.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 gio-unix-2.0 >= 2.46.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 gio-unix-2.0 >= 2.46.0 " 2>&1` else GIO2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gio-2.0 gio-unix-2.0 >= 2.46.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 gio-unix-2.0 >= 2.46.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.46.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gthread-2.0 >= 2.46.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.46.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.46.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gthread-2.0 >= 2.46.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.46.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.46.0 " 2>&1` else GTHREAD2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gthread-2.0 >= 2.46.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.46.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 if test x"$enable_xim" = x"yes"; then XIM_CLI_ARG=--xim 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 >= 3.12.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-3.0 >= 3.12.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 >= 3.12.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 >= 3.12.0 \""; } >&5 ($PKG_CONFIG --exists --print-errors " gtk+-3.0 >= 3.12.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 >= 3.12.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 >= 3.12.0 " 2>&1` else GTK3_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs " gtk+-3.0 >= 3.12.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 >= 3.12.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 if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gdk-wayland-3.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gdk-wayland-3.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then enable_gdk3_wayland=yes else enable_gdk3_wayland=no 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)" enable_gdk3_wayland=no fi if test x"$enable_gdk3_wayland" != x"yes"; then enable_gdk3_wayland="no (disabled, need to install gdk-wayland-3.0.pc)" fi if test x"$enable_gdk3_wayland" = x"yes"; then ENABLE_GDK3_WAYLAND_TRUE= ENABLE_GDK3_WAYLAND_FALSE='#' else ENABLE_GDK3_WAYLAND_TRUE='#' ENABLE_GDK3_WAYLAND_FALSE= 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 $PKG_CONFIG --exists x11; then X11_PREFIX="`$PKG_CONFIG --variable=prefix x11`" elif test x"$prefix" != xNONE; then X11_PREFIX="$prefix" else X11_PREFIX="$ac_default_prefix" 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 WAYLAND_PRTCLS_SUBDIR='wayland-protocols/unstable/input-method' 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 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WAYLAND_SCANNER" >&5 $as_echo_n "checking for WAYLAND_SCANNER... " >&6; } if test -n "$WAYLAND_SCANNER_CFLAGS"; then pkg_cv_WAYLAND_SCANNER_CFLAGS="$WAYLAND_SCANNER_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-scanner >= 1.14.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "wayland-scanner >= 1.14.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_WAYLAND_SCANNER_CFLAGS=`$PKG_CONFIG --cflags "wayland-scanner >= 1.14.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$WAYLAND_SCANNER_LIBS"; then pkg_cv_WAYLAND_SCANNER_LIBS="$WAYLAND_SCANNER_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-scanner >= 1.14.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "wayland-scanner >= 1.14.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_WAYLAND_SCANNER_LIBS=`$PKG_CONFIG --libs "wayland-scanner >= 1.14.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 WAYLAND_SCANNER_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "wayland-scanner >= 1.14.0" 2>&1` else WAYLAND_SCANNER_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "wayland-scanner >= 1.14.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$WAYLAND_SCANNER_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (wayland-scanner >= 1.14.0) were not met: $WAYLAND_SCANNER_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_SCANNER_CFLAGS and WAYLAND_SCANNER_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_SCANNER_CFLAGS and WAYLAND_SCANNER_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_SCANNER_CFLAGS=$pkg_cv_WAYLAND_SCANNER_CFLAGS WAYLAND_SCANNER_LIBS=$pkg_cv_WAYLAND_SCANNER_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi wayland_scanner=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner` wayland_scanner_rules=`$PKG_CONFIG --variable=pkgdatadir wayland-scanner`/wayland-scanner.mk wayland_protocoldir='$(datadir)/$(WAYLAND_PRTCLS_SUBDIR)' 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 --c-include=ibus.h" 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-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 : if test -n "$GLIB_COMPILE_SCHEMAS"; then pkg_cv_GLIB_COMPILE_SCHEMAS="$GLIB_COMPILE_SCHEMAS" 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\""; } >&5 ($PKG_CONFIG --exists --print-errors "gio-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_COMPILE_SCHEMAS=`$PKG_CONFIG --variable="glib_compile_schemas" "gio-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi GLIB_COMPILE_SCHEMAS=$pkg_cv_GLIB_COMPILE_SCHEMAS if test "x$GLIB_COMPILE_SCHEMAS" = x""; then : fi 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-python2 was given. if test "${enable_python2+set}" = set; then : enableval=$enable_python2; enable_python2=$enableval else enable_python2=yes 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 # 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.9 python3.8 python3.7 python3.6 python3.5 python3.4 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 if test x"$enable_python2" != x"yes"; then enable_python_library=no PYTHON2= enable_python2="no (disabled, use --enable-python2 to enable)" else # 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 fi if test x"$enable_python2" = x"yes"; then ENABLE_PYTHON2_TRUE= ENABLE_PYTHON2_FALSE='#' else ENABLE_PYTHON2_TRUE='#' ENABLE_PYTHON2_FALSE= 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 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)"` if test x"$enable_python2" = x"yes"; then py2overridesdir=`$PYTHON2 -c "import gi; print(gi._overridesdir)"` fi 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.*,terminator 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 # 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 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 pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XTEST" >&5 $as_echo_n "checking for XTEST... " >&6; } if test -n "$XTEST_CFLAGS"; then pkg_cv_XTEST_CFLAGS="$XTEST_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 xtst\""; } >&5 ($PKG_CONFIG --exists --print-errors "x11 xtst") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_XTEST_CFLAGS=`$PKG_CONFIG --cflags "x11 xtst" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$XTEST_LIBS"; then pkg_cv_XTEST_LIBS="$XTEST_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 xtst\""; } >&5 ($PKG_CONFIG --exists --print-errors "x11 xtst") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_XTEST_LIBS=`$PKG_CONFIG --libs "x11 xtst" 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 XTEST_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "x11 xtst" 2>&1` else XTEST_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "x11 xtst" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$XTEST_PKG_ERRORS" >&5 enable_xtest=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } enable_xtest=no else XTEST_CFLAGS=$pkg_cv_XTEST_CFLAGS XTEST_LIBS=$pkg_cv_XTEST_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } enable_xtest=yes fi if test x"$enable_xtest" = x"yes"; then ENABLE_XTEST_TRUE= ENABLE_XTEST_FALSE='#' else ENABLE_XTEST_TRUE='#' ENABLE_XTEST_FALSE= fi # --enable-install-tests # Check whether --enable-install-tests was given. if test "${enable_install_tests+set}" = set; then : enableval=$enable_install_tests; enable_install_tests=$enableval else enable_install_tests=no fi if test x"$enable_install_tests" = x"yes"; then ENABLE_INSTALL_TESTS_TRUE= ENABLE_INSTALL_TESTS_FALSE='#' else ENABLE_INSTALL_TESTS_TRUE='#' ENABLE_INSTALL_TESTS_FALSE= fi if test x"$enable_install_tests" = x"no"; then enable_install_tests="no (disabled, use --enable-install-tests to enable)" fi # --disable-emoji-dict option. # Check whether --enable-emoji-dict was given. if test "${enable_emoji_dict+set}" = set; then : enableval=$enable_emoji_dict; enable_emoji_dict=$enableval else enable_emoji_dict=yes fi if test x"$enable_emoji_dict" = x"yes"; then ENABLE_EMOJI_DICT_TRUE= ENABLE_EMOJI_DICT_FALSE='#' else ENABLE_EMOJI_DICT_TRUE='#' ENABLE_EMOJI_DICT_FALSE= fi # Check whether --with-unicode-emoji-dir was given. if test "${with_unicode_emoji_dir+set}" = set; then : withval=$with_unicode_emoji_dir; UNICODE_EMOJI_DIR=$with_unicode_emoji_dir else UNICODE_EMOJI_DIR="/usr/share/unicode/emoji" fi # Check whether --with-emoji-annotation-dir was given. if test "${with_emoji_annotation_dir+set}" = set; then : withval=$with_emoji_annotation_dir; EMOJI_ANNOTATION_DIR=$with_emoji_annotation_dir else EMOJI_ANNOTATION_DIR="/usr/share/unicode/cldr/common/annotations" fi if test x"$enable_emoji_dict" = x"yes"; then if test ! -f $UNICODE_EMOJI_DIR/emoji-test.txt ; then as_fn_error $? "Not found $UNICODE_EMOJI_DIR/emoji-test.txt. You can get \ the emoji files from http://www.unicode.org/Public/emoji/4.0/" "$LINENO" 5 else # POSIX SHELL has no ${FOO:0:1} head=`echo "$UNICODE_EMOJI_DIR" | cut -c1`; if test $head != "/" ; then UNICODE_EMOJI_DIR=`realpath "$UNICODE_EMOJI_DIR"` fi fi if test ! -f $EMOJI_ANNOTATION_DIR/en.xml ; then as_fn_error $? "Not found $EMOJI_ANNOTATION_DIR/en.xml. You can get \ https://github.com/fujiwarat/cldr-emoji-annotation" "$LINENO" 5 else head=`echo "$EMOJI_ANNOTATION_DIR" | cut -c1`; if test $head != "/" ; then EMOJI_ANNOTATION_DIR=`realpath "$EMOJI_ANNOTATION_DIR"` fi fi enable_emoji_dict="yes (enabled, use --disable-emoji-dict to disable)" fi # --disable-unicode-dict option. # Check whether --enable-unicode-dict was given. if test "${enable_unicode_dict+set}" = set; then : enableval=$enable_unicode_dict; enable_unicode_dict=$enableval else enable_unicode_dict=yes fi if test x"$enable_unicode_dict" = x"yes"; then ENABLE_UNICODE_DICT_TRUE= ENABLE_UNICODE_DICT_FALSE='#' else ENABLE_UNICODE_DICT_TRUE='#' ENABLE_UNICODE_DICT_FALSE= fi # Check whether --with-ucd-dir was given. if test "${with_ucd_dir+set}" = set; then : withval=$with_ucd_dir; UCD_DIR=$with_ucd_dir else UCD_DIR="/usr/share/unicode/ucd" fi if test x"$enable_unicode_dict" = x"yes"; then if test ! -f $UCD_DIR/NamesList.txt ; then as_fn_error $? "Not found $UCD_DIR/NamesList.txt. You can get \ the UCD files from https://www.unicode.org/Public/UNIDATA/" "$LINENO" 5 elif test ! -f $UCD_DIR/Blocks.txt ; then as_fn_error $? "Not found $UCD_DIR/Blocks.txt. You can get \ the UCD files from https://www.unicode.org/Public/UNIDATA/" "$LINENO" 5 else # POSIX SHELL has no ${FOO:0:1} head=`echo "$UCD_DIR" | cut -c1`; if test $head != "/" ; then UCD_DIR=`realpath "$UCD_DIR"` fi fi enable_unicode_dict="yes (enabled, use --disable-unicode-dict to disable)" fi # Check whether --with-socket-dir was given. if test "${with_socket_dir+set}" = set; then : withval=$with_socket_dir; IBUS_SOCKET_DIR=$with_socket_dir else case $host in *linux*) IBUS_SOCKET_DIR='unix:tmpdir=$XDG_CACHE_HOME/ibus';; *) IBUS_SOCKET_DIR='unix:tmpdir=/tmp';; esac fi cat >>confdefs.h <<_ACEOF #define IBUS_SOCKET_DIR "$IBUS_SOCKET_DIR" _ACEOF # 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` GDBUS_CODEGEN=`$PKG_CONFIG --variable gdbus_codegen gio-2.0` # 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 portal/Makefile engine/Makefile util/Makefile util/IMdkit/Makefile data/Makefile data/annotations/Makefile data/icons/Makefile data/its/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 bindings/Makefile bindings/pygobject/Makefile bindings/vala/Makefile conf/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 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_GDK3_WAYLAND_TRUE}" && test -z "${ENABLE_GDK3_WAYLAND_FALSE}"; then as_fn_error $? "conditional \"ENABLE_GDK3_WAYLAND\" 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_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_PYTHON2_TRUE}" && test -z "${ENABLE_PYTHON2_FALSE}"; then as_fn_error $? "conditional \"ENABLE_PYTHON2\" 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_XTEST_TRUE}" && test -z "${ENABLE_XTEST_FALSE}"; then as_fn_error $? "conditional \"ENABLE_XTEST\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_INSTALL_TESTS_TRUE}" && test -z "${ENABLE_INSTALL_TESTS_FALSE}"; then as_fn_error $? "conditional \"ENABLE_INSTALL_TESTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_EMOJI_DICT_TRUE}" && test -z "${ENABLE_EMOJI_DICT_FALSE}"; then as_fn_error $? "conditional \"ENABLE_EMOJI_DICT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${ENABLE_UNICODE_DICT_TRUE}" && test -z "${ENABLE_UNICODE_DICT_FALSE}"; then as_fn_error $? "conditional \"ENABLE_UNICODE_DICT\" 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.22, 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.22 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" MAKE="${MAKE-make}" # Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" # 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"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $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_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $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"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $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"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $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"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $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_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ 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\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) 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 \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that 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' 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" ;; "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;; "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" ;; "portal/Makefile") CONFIG_FILES="$CONFIG_FILES portal/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/annotations/Makefile") CONFIG_FILES="$CONFIG_FILES data/annotations/Makefile" ;; "data/icons/Makefile") CONFIG_FILES="$CONFIG_FILES data/icons/Makefile" ;; "data/its/Makefile") CONFIG_FILES="$CONFIG_FILES data/its/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" ;; "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/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" ;; *) 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 if $AWK 'BEGIN { getline <"/dev/null" }' /dev/null; then ac_cs_awk_getline=: ac_cs_awk_pipe_init= ac_cs_awk_read_file=' while ((getline aline < (F[key])) > 0) print(aline) close(F[key])' ac_cs_awk_pipe_fini= else ac_cs_awk_getline=false ac_cs_awk_pipe_init="print \"cat <<'|#_!!_#|' &&\"" ac_cs_awk_read_file=' print "|#_!!_#|" print "cat " F[key] " &&" '$ac_cs_awk_pipe_init # The final `:' finishes the AND list. ac_cs_awk_pipe_fini='END { print "|#_!!_#|"; print ":" }' fi 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 # Create commands to substitute file output variables. { echo "cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1" && echo 'cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&' && echo "$ac_subst_files" | sed 's/.*/F["&"]="$&"/' && echo "_ACAWK" && echo "_ACEOF" } >conf$$files.sh && . ./conf$$files.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 rm -f conf$$files.sh { 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 = "" \$ac_cs_awk_pipe_init } { 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 } if (nfields == 3 && !substed) { key = field[2] if (F[key] != "" && line ~ /^[ ]*@.*@[ ]*$/) { \$ac_cs_awk_read_file next } } print line } \$ac_cs_awk_pipe_fini _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" | if $ac_cs_awk_getline; then $AWK -f "$ac_tmp/subs.awk" else $AWK -f "$ac_tmp/subs.awk" | $SHELL fi \ >$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. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. Try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "po-directories":C) for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; 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 INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done ;; "libtool":C) # See if we are running on zsh, and set the options that 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 # Generated automatically by $as_me ($PACKAGE) $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. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 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 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 this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### 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 # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # 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 into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # 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 # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # 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 where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # 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 # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # 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 cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _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 set != "${COLLECT_NAMES+set}"; 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) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; 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 Enable python2 $enable_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 gdk3 wayland support $enable_gdk3_wayland Build appindicator support $enable_appindicator Build appindicator engine icon $enable_appindicator_engine_icon Build python library $enable_python_library 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 Emoji dict $enable_emoji_dict Unicode Emoji directory $UNICODE_EMOJI_DIR CLDR annotation directory $EMOJI_ANNOTATION_DIR Enable Unicode dict $enable_unicode_dict UCD directory $UCD_DIR Socket directory \"$IBUS_SOCKET_DIR\" Run test cases $enable_tests Install tests $enable_install_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 Enable python2 $enable_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 gdk3 wayland support $enable_gdk3_wayland Build appindicator support $enable_appindicator Build appindicator engine icon $enable_appindicator_engine_icon Build python library $enable_python_library 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 Emoji dict $enable_emoji_dict Unicode Emoji directory $UNICODE_EMOJI_DIR CLDR annotation directory $EMOJI_ANNOTATION_DIR Enable Unicode dict $enable_unicode_dict UCD directory $UCD_DIR Socket directory \"$IBUS_SOCKET_DIR\" Run test cases $enable_tests Install tests $enable_install_tests " >&6; } ibus-1.5.22/setup/0000755000000000000000000000000013623751712010661 500000000000000ibus-1.5.22/setup/setup.ui0000644000000000000000000023676313623750431012316 00000000000000 Horizontal Vertical Top left corner Top right corner Bottom left corner Bottom right corner Custom Do not show Hide automatically Always 3.0 1.0 255.0 1.0 10.0 10.0 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 12 6 6 12 True False The shortcut keys for switching to next input method in the list start Next input method: 0 0 True False False The shortcut keys for switching to previous input method in the list start Previous input method: 0 1 horizontal True False 6 True True True False True True 0 ... False True True False False True False True 1 1 0 horizontal True False 6 True > True False True False True True 0 ... False True False True False False True False True 1 1 1 True False The shortcut keys for turning input method on or off start Enable or disable: 0 2 True False start Enable: 0 3 horizontal True False 6 True True True False True True 0 ... False True True True False True False True 1 1 3 True False start Disable: 0 4 horizontal True False 6 True True True False True True 0 ... False True True True False True False True 1 1 4 True False <b>Keyboard Shortcuts</b> True False True 0 True False 0 none True False 12 6 6 12 True False Set the orientation of candidates in lookup table start Candidates orientation: right True 0 0 True False model_candidates_orientation True 0 1 0 True False Set the behavior of ibus how to show or hide language bar start Show property panel: right True 0 1 False True start Language panel position: right True 0 2 True False model_panel_show_mode True 0 1 1 False True model_panel_position True 0 1 2 Show icon on system tray False True True False Show icon on system tray False start True True 0 3 2 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 True 0 4 2 Embed preedit text in application window False True True False Embed the preedit text of input method in the application window False start True True 0 5 2 Use custom font: False True True False False True start True True 0 6 True True True False True 1 6 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 18 12 12 12 12 True False 0 none True False 12 6 6 12 True False The shortcut keys to enable conversions of emoji annotations or Unicode names start Emoji annotation: 0 0 horizontal True False 6 true True True False True True 0 ... False True True False False True False True 1 1 0 True False The shortcut keys to enable Unicode code point conversions start Unicode code point: 0 1 horizontal True False 6 true True True False True True 0 ... False True True False False True False True 1 1 1 True False <b>Keyboard Shortcuts</b> True False True 0 True False 0 none True False 12 6 6 12 false True False Set a font of Unicode candidates on the emoji dialog start Unicode font: right 0 True True True False 1 True False Set a language of emoji annotations on the emoji dialog start Emoji annotation language: right 0 1 True True True False 1 1 Match emoji annotations partially with the following condition and more than the number of characters: False True True False If emoji annotations can be matched with a partial string instead of the exact match False start True 0 2 2 adjustment_emoji_partial_match 3.0 True True False start 0 2 3 horizontal True False 6 Prefix match True True False start False True 0 Suffix match radiobutton_emoji_prefix_match True True False start False True 1 Containing match radiobutton_emoji_prefix_match True True False start False True 2 0 2 4 True False <b>Font and Style</b> True False True 1 2 True False Emoji 2 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 3 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 4 True False About 4 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.22/setup/enginetreeview.py0000644000000000000000000002322313623750431014172 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2014-2018 Takao Fujiwara # Copyright (c) 2007-2018 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) 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 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.22/setup/enginedialog.py0000644000000000000000000003126413623750431013603 00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus - The Input Bus # # Copyright (c) 2015 Peng Huang # Copyright (c) 2015-2019 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_start = 6, margin_end = 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_start = 6, margin_end = 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_start(20) label.set_margin_end(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_start(20) arrow.set_margin_end(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.22/setup/Makefile.am0000644000000000000000000000503713623750431012637 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2014 Peng Huang # Copyright (c) 2015-2019 Takao Fujiwara # Copyright (c) 2007-2019 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 = \ emojilang.py \ enginecombobox.py \ enginedialog.py \ enginetreeview.py \ engineabout.py \ i18n.py \ icon.py \ keyboardshortcut.py \ main.py \ $(NULL) ibussetup_DATA = \ setup.ui \ $(NULL) bin_SCRIPTS = ibus-setup ibussetupdir = $(pkgdatadir)/setup ibus-setup: ibus-setup.in $(AM_V_GEN) sed -e "s|\@datarootdir\@|$(datarootdir)|g" \ -e "s|\@localedir\@|$(localedir)|g" \ -e "s|\@libexecdir\@|$(libexecdir)|g" \ -e "s|\@prefix\@|$(prefix)|g" \ -e "s|\@PYTHON\@|$(PYTHON)|g" \ $< > $@.tmp && \ mv $@.tmp $@ desktop_notrans_files = ibus-setup.desktop desktop_DATA = org.freedesktop.IBus.Setup.desktop desktopdir = $(datadir)/applications org.freedesktop.IBus.Setup.desktop: ibus-setup.desktop $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ 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 = \ $(desktop_DATA) \ $(man_one_DATA) \ $(man_one_files) \ *.pyc \ ibus-setup \ $(NULL) EXTRA_DIST = \ $(desktop_notrans_files) \ $(man_one_in_files) \ ibus-setup.in \ setup.ui \ $(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.22/setup/keyboardshortcut.py0000644000000000000000000003360113623750431014547 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.22/setup/Makefile.in0000644000000000000000000006474513623751264012670 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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) 2015-2019 Takao Fujiwara # Copyright (c) 2007-2019 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 = 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 $(top_srcdir)/py-compile DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ ibussetup_PYTHON = \ emojilang.py \ enginecombobox.py \ enginedialog.py \ enginetreeview.py \ engineabout.py \ i18n.py \ icon.py \ keyboardshortcut.py \ main.py \ $(NULL) ibussetup_DATA = \ setup.ui \ $(NULL) bin_SCRIPTS = ibus-setup ibussetupdir = $(pkgdatadir)/setup desktop_notrans_files = ibus-setup.desktop desktop_DATA = org.freedesktop.IBus.Setup.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 = \ $(desktop_DATA) \ $(man_one_DATA) \ $(man_one_files) \ *.pyc \ ibus-setup \ $(NULL) EXTRA_DIST = \ $(desktop_notrans_files) \ $(man_one_in_files) \ ibus-setup.in \ setup.ui \ $(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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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-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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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) 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 ibus-setup: ibus-setup.in $(AM_V_GEN) sed -e "s|\@datarootdir\@|$(datarootdir)|g" \ -e "s|\@localedir\@|$(localedir)|g" \ -e "s|\@libexecdir\@|$(libexecdir)|g" \ -e "s|\@prefix\@|$(prefix)|g" \ -e "s|\@PYTHON\@|$(PYTHON)|g" \ $< > $@.tmp && \ mv $@.tmp $@ org.freedesktop.IBus.Setup.desktop: ibus-setup.desktop $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ %.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.22/setup/emojilang.py0000644000000000000000000002601013623750431013114 00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus - The Input Bus # # Copyright (c) 2017-2019 Takao Fujiwara # Copyright (c) 2017 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 . # for python2 from __future__ import print_function __all__ = ( "EmojiLangButton", ); from gi.repository import Gtk from gi.repository import GLib from gi.repository import GObject from gi.repository import IBus import functools import gettext import i18n import locale import os 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 LanguageString: def __init__(self, id, trans = ""): self.id = id self.trans = trans class EmojiLangChooser(Gtk.Dialog): __gtype_name__ = 'EmojiLangChooser' __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, id = None, transient_for = None): super(EmojiLangChooser, self).__init__( title = _("Select a language"), transient_for = transient_for, resizable = True) buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL, _("_OK"), Gtk.ResponseType.APPLY) self.add_buttons(*buttons) if id == None: id = 'en' self.__id = id self.__engines_for_lang = {} self.__untrans_for_lang = {} self.__langs = {} self.__lang_list = [] self.__scrolled = Gtk.ScrolledWindow( hscrollbar_policy = Gtk.PolicyType.NEVER, vscrollbar_policy = Gtk.PolicyType.NEVER, shadow_type = Gtk.ShadowType.IN, margin_start = 6, margin_end = 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.__showing_extra = False self.__more_row = self.__more_row_new() self.__load_lang_list() self.__show_lang_rows() self.show_all() def __load_lang_list(self): dictdir = os.path.dirname(__file__) + '/../dicts' for filename in os.listdir(dictdir): suffix = '.dict' if not filename.endswith(suffix): continue lang_id = filename[0:len(filename) - len(suffix)] prefix = 'emoji-' if not lang_id.startswith(prefix): continue lang_id = lang_id[len(prefix):] lang = LanguageString(lang_id, IBus.get_language_name(lang_id)) self.__lang_list.append(lang) if len(self.__lang_list) == 0: print("Not found dicts in %s" % dictdir, file=sys.stderr) lang = LanguageString('en', IBus.get_language_name('en')) self.__lang_list.append(lang) return def cmp_lang(a, b): label_a = a.trans + a.id label_b = b.trans + b.id return (label_a > label_b) - (label_a < label_b) self.__lang_list.sort(key = functools.cmp_to_key(cmp_lang)) loc = locale.getlocale()[0] # None on C locale if loc == None or loc == 'C': loc = 'en_US' index = 0 for lang in self.__lang_list: # move current language to the first place if lang.trans == IBus.get_language_name(loc): self.__lang_list.remove(lang) self.__lang_list.insert(index, lang) index += 1 for lang in self.__lang_list: # move English to the second place if lang.trans == IBus.get_language_name('en'): self.__lang_list.remove(lang) self.__lang_list.insert(index, lang) index += 1 def __list_filter(self, row, data): if row.id == self.__id: self.__list.select_row(row) if row == self.__more_row: return not self.__showing_extra if not self.__showing_extra and row.is_extra: return False return True def __row_activated(self, box, row): if row == self.__more_row: self.__show_more() return self.__id = row.id 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_start(20) label.set_margin_end(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, lang): row = Gtk.ListBoxRow() row.trans = lang.trans row.id = lang.id row.is_extra = False return row def __lang_row_new(self, lang, prev_lang): row = self.__list_box_row_new(lang) label = lang.trans if lang.id == self.__id: row.is_extra = False elif prev_lang != None and label == prev_lang.trans: label = "%s (%s)" % (lang.trans, lang.id) row.is_extra = True elif not self.__showing_extra and \ lang.trans not in self.__initial_languages: row.is_extra = True widget = self.__padded_label_new(label, None, Gtk.Align.CENTER, ROW_TRAVEL_DIRECTION_NONE) row.add(widget) return row def __more_row_new(self): row = Gtk.ListBoxRow() row.id = None 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_start(20) arrow.set_margin_end(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 __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 __show_lang_rows(self): self.__remove_all_children() prev_lang = None for lang in self.__lang_list: row = self.__lang_row_new(lang, prev_lang) self.__list.add(row) prev_lang = lang 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.__showing_extra = True self.__list.invalidate_filter() def get_selected_lang(self): return self.__id class EmojiLangButton(Gtk.Button): __gtype_name__ = 'EmojiLangButton' __gproperties__ = { 'lang' : ( str, 'lang', 'lang for emojo-*.dict', 'en', GObject.ParamFlags.READABLE | GObject.ParamFlags.WRITABLE) } def __init__(self): super(EmojiLangButton, self).__init__() self.__lang = '' def do_get_property(self, prop): if prop.name == 'lang': return self.__lang else: raise AttributeError('unknown property %s' % prop.name) def do_set_property(self, prop, value): if prop.name == 'lang': self.set_lang(value) else: raise AttributeError('unknown property %s' % prop.name) def do_clicked(self): dialog = EmojiLangChooser(id = self.__lang, transient_for = self.get_toplevel()) id = dialog.run() if id != Gtk.ResponseType.APPLY: dialog.destroy() return self.set_lang(dialog.get_selected_lang()) dialog.destroy() def set_lang(self, lang): self.__lang = lang self.notify("lang") self.set_label(IBus.get_language_name(lang)) def get_lang(self, lang): return self.__lang GObject.type_register(EmojiLangButton) if __name__ == "__main__": dialog = EmojiLangChooser() id = dialog.run() if id != Gtk.ResponseType.APPLY: dialog.destroy() import sys sys.exit(0) print("Selected language:", dialog.get_selected_lang()) ibus-1.5.22/setup/main.py0000644000000000000000000006765413623750431012116 00000000000000# vim:set et sts=4 sw=4: # -*- coding: utf-8 -*- # # ibus - The Input Bus # # Copyright (c) 2007-2016 Peng Huang # Copyright (c) 2010-2018 Takao Fujiwara # Copyright (c) 2007-2016 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 import require_version as gi_require_version gi_require_version('GLib', '2.0') gi_require_version('GdkX11', '3.0') gi_require_version('Gio', '2.0') gi_require_version('Gtk', '3.0') gi_require_version('IBus', '1.0') 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 emojilang import EmojiLangButton 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"); self.__settings_emoji = Gio.Settings( schema = "org.freedesktop.ibus.panel.emoji"); # 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_hotkeys(self): name = 'triggers' label = 'switch_engine' comment = \ _("Use shortcut with shift to switch to the previous input method") self.__init_hotkey(name, label, comment) name = 'emoji' label = 'emoji_dialog' self.__init_hotkey(name, label) name = 'unicode' label = 'unicode_dialog' self.__init_hotkey(name, label) def __init_hotkey(self, name, label, comment=None): if name == 'emoji': shortcuts = self.__settings_emoji.get_strv('hotkey') elif name == 'unicode': shortcuts = self.__settings_emoji.get_strv('unicode-hotkey') else: 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) if comment != None: tooltip += "\n" + comment entry.set_tooltip_text(tooltip) if name == 'emoji': button.connect("clicked", self.__shortcut_button_clicked_cb, 'hotkey', 'panel/' + name, label, entry) elif name == 'unicode': button.connect("clicked", self.__shortcut_button_clicked_cb, 'unicode-hotkey', 'panel/emoji', label, entry) else: 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_emoji(self): self.__fontbutton_emoji_font = self.__builder.get_object( 'fontbutton_emoji_font') self.__fontbutton_emoji_font.set_preview_text('🙂🍎🚃💓📧⚽🐳'); self.__settings_emoji.bind('font', self.__fontbutton_emoji_font, 'font-name', Gio.SettingsBindFlags.DEFAULT) self.__button_emoji_lang = self.__builder.get_object( 'button_emoji_lang') self.__settings_emoji.bind('lang', self.__button_emoji_lang, 'lang', Gio.SettingsBindFlags.DEFAULT) self.__checkbutton_emoji_partial_match = self.__builder.get_object( 'checkbutton_emoji_partial_match') checkbutton_label = self.__checkbutton_emoji_partial_match.get_child() if type(checkbutton_label) == Gtk.Label: checkbutton_label.set_property('wrap', True) checkbutton_label.set_property('max-width-chars', 74) self.__spinbutton_emoji_partial_match = self.__builder.get_object( 'spinbutton_emoji_partial_match') self.__settings_emoji.bind('has-partial-match', self.__checkbutton_emoji_partial_match, 'active', Gio.SettingsBindFlags.DEFAULT) self.__settings_emoji.bind('has-partial-match', self.__spinbutton_emoji_partial_match, 'sensitive', Gio.SettingsBindFlags.GET) def adjustment_value_changed_cb(obj): key = 'partial-match-length' value = int(adjustment.get_value()) if value == self.__settings_emoji.get_int(key): return self.__settings_emoji.set_int(key, value) def settings_emoji_partial_match_length_cb(settings, key): value = self.__settings_emoji.get_int(key) old_value = int(self.__spinbutton_emoji_partial_match.get_value()) if value == old_value: return self.__spinbutton_emoji_partial_match.set_value(value) settings_emoji_partial_match_length_cb(None, 'partial-match-length') adjustment = self.__spinbutton_emoji_partial_match.get_adjustment() adjustment.connect('value-changed', adjustment_value_changed_cb) self.__settings_emoji.connect('changed::partial-match-length', settings_emoji_partial_match_length_cb) self.__hbox_emoji_partial_match = self.__builder.get_object( 'hbox_emoji_partial_match') self.__settings_emoji.bind('has-partial-match', self.__hbox_emoji_partial_match, 'sensitive', Gio.SettingsBindFlags.GET) self.__radiobutton_emoji_prefix_match = self.__builder.get_object( 'radiobutton_emoji_prefix_match') self.__radiobutton_emoji_suffix_match = self.__builder.get_object( 'radiobutton_emoji_suffix_match') self.__radiobutton_emoji_contain_match = self.__builder.get_object( 'radiobutton_emoji_contain_match') def radiobuton_emoji_partial_match_cb(obj): key = 'partial-match-condition' condition = 0 if not obj.get_active(): return if obj == self.__radiobutton_emoji_prefix_match: condition = 0 elif obj == self.__radiobutton_emoji_suffix_match: condition = 1 elif obj == self.__radiobutton_emoji_contain_match: condition = 2 else: print('Wrong emoji partial match object') return self.__settings_emoji.set_int(key, condition) def settings_emoji_partial_match_condition_cb(settings, key): value = self.__settings_emoji.get_int(key) obj = None if value == 0: obj = self.__radiobutton_emoji_prefix_match elif value == 1: obj = self.__radiobutton_emoji_suffix_match elif value == 2: obj = self.__radiobutton_emoji_contain_match else: print('Wrong emoji partial match condition') return if obj.get_active(): return obj.set_active(True) settings_emoji_partial_match_condition_cb(None, 'partial-match-condition') self.__radiobutton_emoji_prefix_match.connect( 'toggled', radiobuton_emoji_partial_match_cb) self.__radiobutton_emoji_suffix_match.connect( 'toggled', radiobuton_emoji_partial_match_cb) self.__radiobutton_emoji_contain_match.connect( 'toggled', radiobuton_emoji_partial_match_cb) self.__settings_emoji.connect('changed::partial-match-condition', settings_emoji_partial_match_condition_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_hotkeys() self.__init_panel() self.__init_general() self.__init_emoji() def __gdk_window_set_cb(self, object, pspec): window = object.get_window() if type(window) != GdkX11.X11Window: return s = '%u' % GdkX11.X11Window.get_xid(window) GLib.setenv('IBUS_SETUP_XID', s, 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 if section == 'panel/emoji': self.__settings_emoji.set_strv(name, shortcuts) else: 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.22/setup/engineabout.py0000644000000000000000000001166313623750431013457 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.22/setup/i18n.py0000644000000000000000000000422013623750431011725 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.22/setup/ibus-setup.1.in0000644000000000000000000000266013623750431013371 00000000000000.\" This file is distributed under the same license as the ibus .\" package. .\" Copyright (C) LI Daobing , 2008. .\" Copyright (C) Takao Fujiwara , 2013-2017. .\" Copyright (c) Peng Huang , 2013. .\" .TH "IBUS-SETUP" 1 "November 2017" "@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 "ADVANCED" .TP \fBUse system keyboard layout\fR If this option is enabled, use your system keymap instead and IBus does not change it with any input method engines. The system keymap is decided by your desktop session. IBus calls .B setxkbmap (1) command internally to set the selected keymap and override the system keymap if this options is disabled. You can check the current keymap with .B setxkbmap -query command. .TP \fBShare the same input method among all applications\fR If this option is disabled, You can choose an input metod engine by input context. .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.22/setup/enginecombobox.py0000644000000000000000000001416513623750431014155 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.22/setup/ibus-setup.desktop0000644000000000000000000000042013623750431014265 00000000000000[Desktop Entry] Name=IBus Preferences Comment=Set IBus Preferences Exec=ibus-setup Icon=ibus-setup Terminal=false Type=Application StartupNotify=true Categories=Settings; # GNOME uses its own "input source" settings instead NotShowIn=GNOME;Unity; Keywords=keyboard;input; ibus-1.5.22/setup/ibus-setup.in0000644000000000000000000000223513623750431013230 00000000000000#!/bin/sh # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2018-2019 Takao Fujiwara # Copyright (c) 2007-2018 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@ libexecdir=@libexecdir@ export IBUS_PREFIX=@prefix@ export IBUS_DATAROOTDIR=@datarootdir@ export IBUS_LOCALEDIR=@localedir@ export IBUS_LIBEXECDIR=${libexecdir} exec ${PYTHON:-@PYTHON@} @prefix@/share/ibus/setup/main.py $@ ibus-1.5.22/setup/icon.py0000644000000000000000000000552413623750431012106 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.22/gtk-doc.make0000644000000000000000000002504013623751244011631 00000000000000# -*- mode: makefile -*- # # gtk-doc.make - make rules for gtk-doc # Copyright (C) 2003 James Henstridge # 2004-2007 Damon Chaplin # 2007-2017 Stefan Sauer # # 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 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 . #################################### # 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_@AM_V@) GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_@AM_DEFAULT_V@) 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_@AM_V@) GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_@AM_DEFAULT_V@) GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_@AM_V@) GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_@AM_DEFAULT_V@) 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_@AM_V@) GTK_DOC_V_XML_=$(GTK_DOC_V_XML_@AM_DEFAULT_V@) GTK_DOC_V_XML_0=@echo " DOC Building XML"; sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent $(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 $(DOC_MAIN_SGML_FILE): sgml-build.stamp @true xml/gtkdocentities.ent: Makefile $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ echo ""; \ ) > $@ #### html #### GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_@AM_V@) GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_@AM_DEFAULT_V@) GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_@AM_V@) GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_@AM_DEFAULT_V@) 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 \ test -f $(abs_srcdir)/$$file && cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ test -f $(abs_builddir)/$$file && cp $(abs_builddir)/$$file $(abs_builddir)/html; \ test -f $$file && cp $$file $(abs_builddir)/html; \ 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_@AM_V@) GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_@AM_DEFAULT_V@) 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.22/test-driver0000755000000000000000000001104213623751264011637 00000000000000#! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2018-03-07.03; # UTC # Copyright (C) 2011-2018 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 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: ibus-1.5.22/COPYING0000644000000000000000000006350413623750431010501 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.22/config.rpath0000755000000000000000000004421613623751245011761 00000000000000#! /bin/sh # Output a system dependent set of variables, describing how to set the # run time search path of shared libraries in an executable. # # Copyright 1996-2016 Free Software Foundation, Inc. # Taken from GNU libtool, 2001 # Originally 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. # # The first argument passed to this file is the canonical host specification, # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld # should be set by the caller. # # The set of defined variables is at the end of this script. # Known limitations: # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer # than 256 bytes, otherwise the compiler driver will dump core. The only # known workaround is to choose shorter directory names for the build # directory and/or the installation directory. # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a shrext=.so host="$1" host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` # Code taken from libtool.m4's _LT_CC_BASENAME. for cc_temp in $CC""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` # Code taken from libtool.m4's _LT_COMPILER_PIC. wl= if test "$GCC" = yes; then wl='-Wl,' else case "$host_os" in aix*) wl='-Wl,' ;; mingw* | cygwin* | pw32* | os2* | cegcc*) ;; hpux9* | hpux10* | hpux11*) wl='-Wl,' ;; irix5* | irix6* | nonstopux*) wl='-Wl,' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) case $cc_basename in ecc*) wl='-Wl,' ;; icc* | ifort*) wl='-Wl,' ;; lf95*) wl='-Wl,' ;; nagfor*) wl='-Wl,-Wl,,' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) wl='-Wl,' ;; ccc*) wl='-Wl,' ;; xl* | bgxl* | bgf* | mpixl*) wl='-Wl,' ;; como) wl='-lopt=' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ F* | *Sun*Fortran*) wl= ;; *Sun\ C*) wl='-Wl,' ;; esac ;; esac ;; newsos6) ;; *nto* | *qnx*) ;; osf3* | osf4* | osf5*) wl='-Wl,' ;; rdos*) ;; solaris*) case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) wl='-Qoption ld ' ;; *) wl='-Wl,' ;; esac ;; sunos4*) wl='-Qoption ld ' ;; sysv4 | sysv4.2uw2* | sysv4.3*) wl='-Wl,' ;; sysv4*MP*) ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) wl='-Wl,' ;; unicos*) wl='-Wl,' ;; uts4*) ;; esac fi # Code taken from libtool.m4's _LT_LINKER_SHLIBS. hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_direct=no hardcode_minus_L=no 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 if test "$with_gnu_ld" = yes; then # 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. # Unlike libtool, we use -rpath here, not --rpath, since the documented # option of GNU ld is called -rpath, not --rpath. hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' 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 fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then : else ld_shlibs=no fi ;; haiku*) ;; interix[3-9]*) hardcode_direct=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; netbsd*) ;; solaris*) if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then ld_shlibs=no elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : 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 ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' else ld_shlibs=no fi ;; esac ;; sunos4*) hardcode_direct=yes ;; *) if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then : else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then hardcode_libdir_flag_spec= fi else case "$host_os" in aix3*) # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes; 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 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 if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac fi hardcode_direct=yes hardcode_libdir_separator=':' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) 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 hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac fi # Begin _LT_AC_SYS_LIBPATH_AIX. echo 'int main () { return 0; }' > conftest.c ${CC} ${LDFLAGS} conftest.c -o conftest aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } }'` fi if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib" fi rm -f conftest.c conftest # End _LT_AC_SYS_LIBPATH_AIX. if test "$aix_use_runtimelinking" = yes; then hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' else hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" fi fi ;; amigaos*) case "$host_cpu" in powerpc) ;; m68k) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) ;; 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. hardcode_libdir_flag_spec=' ' libext=lib ;; darwin* | rhapsody*) hardcode_direct=no if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then : else ld_shlibs=no fi ;; dgux*) hardcode_libdir_flag_spec='-L$libdir' ;; freebsd2.[01]*) hardcode_direct=yes hardcode_minus_L=yes ;; freebsd* | dragonfly*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; hpux9*) 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 ;; hpux10*) if test "$with_gnu_ld" = no; then 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 fi ;; hpux11*) 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_direct=yes # 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*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; netbsd*) hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes ;; newsos6) hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then hardcode_libdir_flag_spec='${wl}-rpath,$libdir' else case "$host_os" in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) hardcode_libdir_flag_spec='-R$libdir' ;; *) 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 ;; osf3*) hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) if test "$GCC" = yes; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else # Both cc and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi hardcode_libdir_separator=: ;; solaris*) hardcode_libdir_flag_spec='-R$libdir' ;; sunos4*) hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes ;; sysv4) case $host_vendor in sni) hardcode_direct=yes # is this really true??? ;; siemens) hardcode_direct=no ;; motorola) hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac ;; sysv4.3*) ;; sysv4*MP*) if test -d /usr/nec; then ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) ;; sysv5* | sco3.2v5* | sco5v6*) hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' hardcode_libdir_separator=':' ;; uts4*) hardcode_libdir_flag_spec='-L$libdir' ;; *) ld_shlibs=no ;; esac fi # Check dynamic linker characteristics # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. # Unlike libtool.m4, here we don't care about _all_ names of the library, but # only about the one the linker finds when passed -lNAME. This is the last # element of library_names_spec in libtool.m4, or possibly two of them if the # linker has special search rules. library_names_spec= # the last element of library_names_spec in libtool.m4 libname_spec='lib$name' case "$host_os" in aix3*) library_names_spec='$libname.a' ;; aix[4-9]*) library_names_spec='$libname$shrext' ;; amigaos*) case "$host_cpu" in powerpc*) library_names_spec='$libname$shrext' ;; m68k) library_names_spec='$libname.a' ;; esac ;; beos*) library_names_spec='$libname$shrext' ;; bsdi[45]*) library_names_spec='$libname$shrext' ;; cygwin* | mingw* | pw32* | cegcc*) shrext=.dll library_names_spec='$libname.dll.a $libname.lib' ;; darwin* | rhapsody*) shrext=.dylib library_names_spec='$libname$shrext' ;; dgux*) library_names_spec='$libname$shrext' ;; freebsd[23].*) library_names_spec='$libname$shrext$versuffix' ;; freebsd* | dragonfly*) library_names_spec='$libname$shrext' ;; gnu*) library_names_spec='$libname$shrext' ;; haiku*) library_names_spec='$libname$shrext' ;; hpux9* | hpux10* | hpux11*) case $host_cpu in ia64*) shrext=.so ;; hppa*64*) shrext=.sl ;; *) shrext=.sl ;; esac library_names_spec='$libname$shrext' ;; interix[3-9]*) library_names_spec='$libname$shrext' ;; irix5* | irix6* | nonstopux*) library_names_spec='$libname$shrext' case "$host_os" in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; *) libsuff= shlibsuff= ;; esac ;; esac ;; linux*oldld* | linux*aout* | linux*coff*) ;; linux* | k*bsd*-gnu | kopensolaris*-gnu) library_names_spec='$libname$shrext' ;; knetbsd*-gnu) library_names_spec='$libname$shrext' ;; netbsd*) library_names_spec='$libname$shrext' ;; newsos6) library_names_spec='$libname$shrext' ;; *nto* | *qnx*) library_names_spec='$libname$shrext' ;; openbsd*) library_names_spec='$libname$shrext$versuffix' ;; os2*) libname_spec='$name' shrext=.dll library_names_spec='$libname.a' ;; osf3* | osf4* | osf5*) library_names_spec='$libname$shrext' ;; rdos*) ;; solaris*) library_names_spec='$libname$shrext' ;; sunos4*) library_names_spec='$libname$shrext$versuffix' ;; sysv4 | sysv4.3*) library_names_spec='$libname$shrext' ;; sysv4*MP*) library_names_spec='$libname$shrext' ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) library_names_spec='$libname$shrext' ;; tpf*) library_names_spec='$libname$shrext' ;; uts4*) library_names_spec='$libname$shrext' ;; esac sed_quote_subst='s/\(["`$\\]\)/\\\1/g' escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` shlibext=`echo "$shrext" | sed -e 's,^\.,,'` escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' < Language-Team: Persian Language: fa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Weblate 3.9.1 دربارهپیشرفتههمیشهنویسنده: %s گوشه پایین سمت چپچوشه پایین سمت راستCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.انتخابیشرح: غیرفعال:نمایش ندهفعال یا غیرفعال:فعال‌کردن کلیدهای میانبرفعال:اصلیافقیمیانبرهای صفحه‌کلیدموقعیت پنل زبان:زبان: %s دیگرترجیحاتترکراه‌اندازی مجددگوشه بالا سمت چپگوشه بالا سمت راستاستفاده از فونت انتخابیعمودی_دربارها_فزودن_اعمال_انصراف_بستن_حذف_پایین_تأیید_ترجیحات_حذف_بالاdefault:RTLibus-1.5.22/po/bn.gmo0000644000000000000000000003412313623751603011164 00000000000000id   # ? V p  <      H' p w #    ( ( @9 z D      ! 02 c p t ~    @ C1 u   9  ) ^( %??G^~9122-Ky&@' @4DuD<.<-k4'=N f  -d9E4K5'5]<$~1uHYJrkF?+k0"n   1 - A !BM!!!!"Xf#9#3#z-$$i$+%&C-&tq&T&B;'~''Y(Uu(^(V*))***ok++\p,,Z-{$.M../0a1f82f2353538-4Qf44R]5?5o5i`6666$7<7Q7!c777 777 7K8&Ig`$f)a+c/BK%@5.,JO[bRY!_e( M^U 36P94>X?A \21F#E8<TN0L*H'h]VC G-dZ;W D7S :i"Q=...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupAboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCandidates orientation:Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontCustom font name for language panelDescription: Disable shortcut keysDisable:Embed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:GeneralHorizontalIBus PreferencesIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Modifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.PreferencesPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:QuitRemove the selected input method from the enabled input methodsRestartSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow setup of the selected input methodStart ibus on loginThe shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysUse custom fontUse custom font name for language panelUse custom font:Use global input methodUse system keyboard (XKB) layoutUse system keyboard layoutVertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRtranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 12:45-0500 Last-Translator: Ayesha Akhtar Language-Team: Bengali Language: bn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 3.7.3 ...ফন্ট ও বিন্যাসইনপুট পদ্ধতির সার্বজনীন বৈশিষ্ট্যকি-বোর্ডের বিন্যাসকি-বোর্ড শর্ট-কাটপ্রারম্ভপরিচিতিনির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকা যোগ করা হবেউন্নতসর্বদানির্মাতা: %s স্বয়ংক্রিয়ভাবে আড়াল করা হবেনীচে বাঁদিকের কোণায়নীচে ডানদিকের কোণায়নির্বাচিত বস্তুর দিশা:স্বত্বাধিকার (c) ২০০৭-২০০৯ পেং হুয়াং স্বত্বাধিকার (c) ২০০৭-২০০৯ Red Hat, Inc.স্বনির্ধারিতস্বনির্ধারিত ফন্টভাষার প্যানেলের জন্য ব্যবহারযোগ্য স্বনির্ধারিত ফন্টের নামবিবরণ: শর্টকাট কী নিষ্ক্রিয় করুননিষ্ক্রিয়:প্রি-এডিট টেক্সট সন্নিবেশ করা হবেঅ্যাপ্লিকেশন উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবেঅ্যাপ্লিকেশনের উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবেঅ্যাপ্লিকেশনের উইন্ডোর মধ্যে ইনপুট পদ্ধতির প্রি-এডিট টেক্সট সন্নিবেশ করা হবেডিফল্ট অবস্থায় ইনপুট পদ্ধতি সক্রিয় করা হবেইনপুট প্রাপ্ত করার উদ্দেশ্যে অ্যাপ্লিকেশনে ফোকাস করা হলে, ডিফল্ট রূপে ইনপুট পদ্ধতি সক্রিয় করা হবেসক্রিয় অথা নিষ্ক্রিয় করুন:শর্টকাট কী সক্রিয় করুনসক্রিয়:সাধারণঅনুভূমিকIBus সংক্রান্ত পছন্দLinux/Unix-র সাথে ব্যবহারযোগ্য বুদ্ধিবিশিষ্ট ইনপুট বাস হল IBusইনপুট পদ্ধতিKbdকি-র কোড:কি-বোর্ড বিন্যাস: %s কি-বোর্ড শর্ট-কাটভাষার প্যানেলের অবস্থানভাষার প্যানেলের অবস্থান:ভাষা: %s পরিবর্তক:নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় নীচে স্থানান্তর করা হবেনির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় উপরে স্থানান্তর করা হবেপরবর্তী ইঞ্জিনের জন্য শর্টকাট-কিপরবর্তী ইনপুট পদ্ধতি:লুক-আপ টেবিলের দিশালুক-আপ টেবিলের দিশা। 0 (০) = অনুভুমিক, 1 (১) = উল্লম্বঅন্যান্যঅনুগ্রহ করে একটি কি (অথবা কি সংকলন) টিপুনঅনুগ্রহ করে কোনো কি (অথবা কি সংকলন) টিপুন। কি মুক্ত করা হলে এই ডায়লগ বক্সটি বন্ধ করা হবে।পছন্দসমূহইঞ্জিন পূর্বে লোড করা হবেibus আরম্ভের সময় ইঞ্জিনগুলি পূর্বে লোড করা হবেপূর্ববর্তী ইঞ্জিনের শর্টকাট-কিপূর্ববর্তী ইনপুট পদ্ধতি:প্রস্থানসক্রিয় ইনপুট পদ্ধতির তালিকা থেকে নির্বাচিত ইনপুট পদ্ধতিটি মুছে ফেলা হবেপুনরারম্ভএকটি ইনপুট পদ্ধতি নির্বাচন করুন%s-র জন্য কি-বোর্ড শর্ট-কাট ধার্য করুনIBus সংক্রান্ত পছন্দ নির্ধারণ করুনভাষার বার প্রদর্শন ও আড়াল করার উদ্দেশ্যে ibus-র আচরণ নির্ধারণ করুনলুক-আপ টেবিলের মধ্যে প্রযোজ্য বিকল্পগুলির দিশা নির্ধারণ করুনসকল অ্যাপ্লিকেশনের মধ্যে একই ইনপুট পদ্ধতি ব্যবহার করা হবেসিস্টেম ট্রের মধ্যে আইকন প্রদর্শন করা হবেনির্বাচিত ইনপুট পদ্ধতি সংক্রান্ত তথ্য প্রদর্শন করা হবেইনপুট পদ্ধতির নাম প্রদর্শন করা হবেভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবেচেকবক্স নির্বাচিত হলে, ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবেনির্বাচিত ইনপুট মেথডের সেটআপ প্রদর্শন করা হবেলগ-ইন করার সময় ibus আরম্ভ করা হবেতালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কিতালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কিতালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কিতালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কিইনপুট পদ্ধতি বন্ধ করার জন্য শর্টকাট কীইনপুট পদ্ধতি চালু করার জন্য শর্টকাট কীইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুনউপরে বাঁদিকের কোণায়উপরে ডানদিকের কোণায়ট্রিগারের শর্টকাট-কিস্বনির্ধারিত ফন্ট প্রয়োগ করুনভাষার প্যানেলের জন্য স্বনির্ধারিত ফন্টের নাম ব্যবহার করা হবেস্বনির্ধারিত ফন্ট প্রয়োগ করুন:সার্বজনীন ইনপুট পদ্ধতি সিস্টেম কি-বোর্ড (XKB) বিন্যাস প্রয়োগ করা হবেসিস্টেম কি-বোর্ড বিন্যাস প্রয়োগ করা হবেউল্লম্বপরিচিতি (_A)যোগ করুন (_A)প্রয়োগ করুন (_A)বাতিল (_C)বন্ধ (_C)মুছে ফেলুন (_D)নীচে (_D)ঠিক আছে (_O)পছন্দসমূহ (_P)অপসারণ (_R)উপরে (_U)default:LTRরুণা ভট্টাচার্য্য (runab@fedoraproject.org)ibus-1.5.22/po/fi.po0000644000000000000000000025553213623751600011025 00000000000000# Finnish translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2017 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Jiri Grönroos , 2017. #zanata # Toni Rantala , 2017. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2017-04-17 12:26-0400\n" "Last-Translator: Toni Rantala \n" "Language-Team: Finnish\n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Zanata 3.9.6\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Tallennettu versionumero" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Käytä xmodmapia" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Käytä järjestelmän näppäimistön asettelua" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Käytä järjestelmän näppäimistön (XKB) asettelua" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Jaa sama syötetapa kaikkien sovellusten välillä" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Käytä pikanäppäimiä" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Poista pikanäppäimet käytöstä" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Automaattinen piilotus" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Kielipaneelin sijainti" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Näytä kuvake ilmoitusalueella" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Näytä syötetavan nimi kielipalkissa" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB-kuvakkeen RGBA-arvo" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Käytä omavalintaista fonttia" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Omavalintainen fontti" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" #: ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" "Tekijänoikeus (c) 2007-2010 Peng Huang\n" "Tekijänoikeus (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Muu" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Peru" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Lisää…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Tietoja" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Sulje" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Kieli: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Näppäimistön asettelu: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Tekijä: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Kuvaus:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Valitse syötetapa" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Lisää" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Syötetapa" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus-asetukset" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Määritä IBusin asetukset" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Pikanäppäimet" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Avain koodi" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Muokkaajat:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Toteuta" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Poista" #: 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 "" #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus-taustapalvelu ei ole käynnissä. Haluatko käynnistää sen?" #: setup/main.py:536 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 on käynnistetty! Jos et voi käyttää IBusia, lisää seuraavat rivit " "$HOME/.bashrc-tiedostoon ja kirjaudu uudelleen.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: setup/main.py:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Vaakasuora" #: setup/setup.ui:14 msgid "Vertical" msgstr "Pystysuora" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Vasen yläkulma" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Oikea yläkulma" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Vasen alakulma" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Oikea alakulma" #: setup/setup.ui:37 msgid "Custom" msgstr "Mukautettu" #: setup/setup.ui:48 msgid "Do not show" msgstr "Älä näytä" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Piilota automaattisesti" #: setup/setup.ui:54 msgid "Always" msgstr "Aina" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Ota käyttöön tai poista käytöstä" #: setup/setup.ui:238 msgid "Enable:" msgstr "Ota käyttöön:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Poista käytöstä:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Pikanäppäimet" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Määritä miten ibus näyttää tai piilotaa kielivalikon" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Näytä ominaisuuspaneeli:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Kielipaneelin sijainti:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Käytä mukautettua fonttia:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Fontti ja tyyli" #: setup/setup.ui:579 msgid "General" msgstr "Yleiset" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Poista" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "_Ylös" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "_Alas" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "_Tietoja" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Näytä tietoja valitusta syötetavasta" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Asetukset" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Näytä valitun syötetavan asetukset" #: setup/setup.ui:812 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 "" "Aktiivinen syötetapa voidaan vaihtaa valitusta ylläolevasta " "listasta painamalla pikanäppäiimä tai klikkaamalla paneelin kuvaketta. " #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 #, fuzzy msgid "Emoji annotation:" msgstr "Hymiöfontti" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Käytä mukautettua fonttia:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 #, fuzzy msgid "Emoji" msgstr "Hymiöfontti" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Näppäimistön asettelu" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Yleiset syötetavan asetukset" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Edistyneet" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Älykäs syöteväylä\n" "Sivusto: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Käynnistä IBus kirjautumisen yhteydessä" #: setup/setup.ui:1358 msgid "Startup" msgstr "Käynnistys" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Pystysuora" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Yhteys IBusiin ei onnistu.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "kieli: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "Valmis" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Ei toteutettu)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Käynnistä ibus-daemon uudelleen" #: tools/main.vala:449 msgid "Show version" msgstr "Näytä versio" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "Näytä tämä tieto" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Komennot:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s on tuntematon komento!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Suosikit" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Muu" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Sivu alas" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Sivu ylös" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Sulje" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Kuvaus: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Ei mitään" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 #, fuzzy msgid "Emoji Choice" msgstr "Hymiöfontti" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus-paneeli" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus on älykäs syöteväylä Linuxille/Unixille." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "kääntäjät" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Asetukset" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Käynnistä uudelleen" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "Lopeta" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "" #~ msgid "IBus Update" #~ msgstr "IBus-päivitys" ibus-1.5.22/po/pa.gmo0000644000000000000000000005110113623751604011161 00000000000000 @AYko#oY _<j   '?Ww} H #+O lz  ((@*k q~D   1 6@ FS[lu  . 0 ! %/DWo    "-@5Cv  %99U)^0+ \.h%&%*H?h (.@Ww912%Xo-&@5'Jr"     8 U u @!DD!D!<!. "-:"4h""""""/"#+# ?#M#m#'}###># $.$ I$U$^$ }$$$$$$$$$ $$$ $ $%%0%+&2&0'-4'Fb')'2'(((((~))&) ) ))%)"*:*)M*)w*6*&*V*V+j++(+H+2 ,"?, b,o,M,6,-&-7-BP- ---I-..///M/40!0E0 =1K1)e111 111(1272Q2g2#}2222r2IK3b44 5"5&5'85+`5,5-55 536b:66%6 6"6"7)7 C7P77[8 n8E|8*8;8)9@9W92j9-9^9 *: 7: A:SK::F;;M;#7<b[<H<-=/5= e=Br=E=|==x>1> >, ?p6?5??3?B.@(q@N@@@*AgAsB/BIBYC6^C`CC3DVD/-EC]E,E"EE F8FJF]FpFF FF:2GmGHIIoJf~JiJ}OKK&K&L&.L>ULeLL0M&KM)rM/M]M3*N9^NNEO?`OOOBOBPTPlPPPPPPPQ#Q4Q EQQQ,fQQme(F%uLb@PWh`}6Ki',[]Ng:n3+TzI4.!q"Y*QyX 5AV|=?<#8GD$Ra>Ej7 o)/~dfHB0Z2O9x\ MS&c- Ut_pk1sl  ;^{JrvCw%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutActivitiesAdd the selected input method into the enabled input methodsAdvancedAlwaysAnimals & NatureArabicArrowsAuthor: %s Auto hideBasic LatinBengaliBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Click to view a warning messageCloseCode point: %sCommands: Control PicturesCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCurrency SymbolsCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Description: %sDevanagariDisable shortcut keysDisable:Do not showDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFONTFavoritesFlagsFood & DrinkGeneralGeometric ShapesGeorgianGet global engine failed. GujaratiGurmukhiHide automaticallyHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.Input MethodKannadaKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s LaoList engine name onlyLoading a Unicode dictionary:MalayalamMathematical OperatorsMenuMiscellaneous SymbolsMiscellaneous TechnicalModifiers:More…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMyanmarName: %sNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsObjectsOpen Unicode choiceOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOtherOthersPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonSaved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSinhalaSpecialsStart ibus on loginSymbolsSyriacTamilTeluguThaiThe IBus daemon is not running. Do you wish to start it?The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTibetanTop left cornerTop right cornerTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUnicode ChoiceUnicode code point:Unicode font:Usage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2019-05-23 03:58+0000 Last-Translator: A S Alam Language-Team: Panjabi (Punjabi) Language: pa MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 4.6.2 %s ਅਣਜਾਣ ਕਮਾਂਡ ਹੈ! (ਲਾਗੂ ਨਹੀਂ ਕੀਤੀ ਹੋਈ)...ਫੋਂਟ ਅਤੇ ਸਟਾਈਲਗਲੋਬਲ ਇੰਪੁੱਟ ਢੰਗ ਸੈਟਿੰਗਕੀਬੋਰਡ ਲੇਆਉਟਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟਸ਼ੁਰੂIBus ਇੰਟੈਲੀਜੈਂਟ ਇੰਪੁੱਟ ਢੰਗ ਮੁੱਖ ਸਫ਼ਾ: https://github.com/ibus/ibus/wiki ਇਸ ਬਾਰੇਸਰਗਰਮੀਆਂਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਕੀਤੇ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋਤਕਨੀਕੀਹਮੇਸ਼ਾਜਾਨਵਰ ਤੇ ਕੁਦਰਤਅਰਬੀਤੀਰਲੇਖਕ: %s ਆਟੋਮੈਟਿਕ ਓਹਲੇਮੁਢਲੀ ਲਾਤੀਨੀਬੰਗਾਲੀਹੇਠਾਂ ਖੱਬਾ ਕੋਨਾਹੇਠਾਂ ਸੱਜਾ ਕੋਨਾIBus ਨਾਲ ਨਹੀਂ ਜੁੜ ਸਕਿਆ। ਉਮੀਦਵਾਰ ਸਥਿਤੀ:ਚੇਤਾਵਨੀ ਸੁਨੇਹਾ ਵੇਖਣ ਲਈ ਕਲਿੱਕ ਕਰੋਬੰਦ ਕਰੋਕੋਡ ਬਿੰਦੂ: %sਕਮਾਂਡ: ਕੰਟਰੋਲ ਤਸਵੀਰਾਂCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.ਰਜਿਸਟਰੀ ਕੈਚੇ ਬਣਾਓ।ਮੁਦਰਾ ਚਿੰਨ੍ਹਪਸੰਦਮਨਪਸੰਦ ਫੋਂਟਭਾਸ਼ਾ ਪੈਨਲ ਲਈ ਮਨਪਸੰਦ ਫੋਂਟ ਨਾਂDConf ਨਾਂ ਅਗੇਤਰ ਰੱਖਦਾ ਹੈਵੇਰਵਾ: ਵਰਣਨ: %sਦੇਵਨਾਗਰੀਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ ਬੰਦ ਕਰੋਬੰਦ:ਨਾ ਦਿਖਾਓਮੁਕੰਮਲਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟਐਪਲੀਕੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟਐਪਲੀਕੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟਐਪਲੀਕੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਇੰਪੁੱਟ ਢੰਗ ਦਾ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟਇਮੋਜ਼ੀਇਮੋਜ਼ੀ ਚੋਣਇੰਪੁੱਟ ਢੰਗ ਡਿਫਾਲਟ ਹੀ ਚਾਲੂ ਕਰੋਜਦੋਂ ਐਪਲੀਕੇਸ਼ਨ ਇੰਪੁੱਟ ਫੋਕਸ ਲਵੇ ਤਾਂ ਇੰਪੁੱਟ ਢੰਗ ਡਿਫਾਲਟ ਹੀ ਚਲਾਉਚਾਲੂ ਜਾਂ ਬੰਦ:ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ ਚਾਲੂ ਕਰੋਚਾਲੂ:ਇੰਜਣ ਕ੍ਰਮibus-daemon ਤੋਂ ਬਾਹਰ ਆਓਫ਼ੌਂਟਮਨਪਸੰਦਝੰਡੇਖਾਣ-ਪੀਣਆਮਜਾਇਮਿਤੀ ਸ਼ਕਲਾਂਜਾਰਜੀਅਨਗਲੋਬਲ ਇੰਜਣ ਫੇਲ ਹੋਇਆ। ਗੁਜਰਾਤੀਗੁਰਮੁਖੀਆਪਣੇ ਆਪ ਲੁਕਾਓਲੇਟਵਾਂIBus ਪੈਨਲIBus ਪਸੰਦIBus ਡੈਮਨ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਚਾਲੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾIBus ਚੱਲ ਪਿਆ ਹੈ! ਜੇ ਤੁਸੀਂ IBus ਨਹੀਂ ਵਰਤ ਸਕੇ, ਤਾਂ ਹੇਠਲੀ ਲਾਈਨ ਆਪਣੀ $HOME/.bashrc ਵਿੱਚ ਜੋੜੋ; ਅਤੇ ਦੁਬਾਰਾ ਲਾਗਇਨ ਕਰੋ। export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus ਲੀਨਕਸ/ਯੂਨੈਕਸ ਲਈ ਮਾਹਰ ਇੰਪੁੱਟ ਬੱਸ ਹੈ।ਇੰਪੁੱਟ ਢੰਗਕੰਨੜKbdਕੀ ਕੋਡ:ਕੀਬੋਰਡ ਲੇਆਉਟ: %s ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟਭਾਸ਼ਾ ਪੈਨਲ ਸਥਿਤੀਭਾਸ਼ਾ ਪੈਨਲ ਸਥਿਤੀ:ਭਾਸ਼ਾ: %s ਲਾਓਸਿਰਫ ਇੰਜਣ ਨਾਂ ਵੇਖਾਓਯੂਨੀਕੋਡ ਸ਼ਬਦ-ਕੋਸ਼ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ:ਮਲਿਆਲਮਗਣਿਤ ਕਾਰਵਾਈਆਂਮੇਨੂਫੁਟਕਲ ਚਿੰਨ੍ਹਫੁਟਕਲ ਤਕਨੀਕੀਮੋਡੀਫਾਇਰ:...ਹੋਰਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਹੇਠਾਂ ਭੇਜੋਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਉੱਤੇ ਭੇਜੋਮਿਆਮਾਰਨਾਂ: %sਅਗਲਾ ਇੰਜਣ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ:ਕੋਈ ਇੰਜਣ ਸੈੱਟ ਨਹੀਂ ਹੈ। ਕੋਈ ਨਹੀਂਨੰਬਰ ਰੂਪਚੀਜ਼ਾਂਯੂਨੀਕੋਡ ਚੋਣ ਖੋਲ੍ਹੋਖੋਜ ਟੇਬਲ ਦੀ ਸਥਿਤੀਖੋਜ ਟੇਬਲ ਦੀ ਸਥਿਤੀ। 0 = ਲੇਟਵਾਂ, 1 =ਖੜ੍ਹਵਾਓੜੀਆਹੋਰਹੋਰਕੋਈ ਵੀ ਸਵਿੱਚ ਦੱਬੋ (ਜਾਂ ਸਵਿੱਚ ਜੋੜ)ਕੋਈ ਵੀ ਸਵਿੱਚ ਦੱਬੋ (ਜਾਂ ਕੋਈ ਸਵਿੱਚ ਜੋੜ)। ਜਦੋਂ ਸਵਿੱਚ ਛੱਡੀ ਜਾਵੇਗੀ ਤਾਂ ਇਹ ਡਾਇਲਾਗ ਬੰਦ ਹੋ ਜਾਵੇਗਾ।ਮਿਲੀਸਕਿੰਟ 'ਚ ਸ਼ੁਰੂਆਤੀ ਦੇਰੀਮੇਰੀ ਪਸੰਦDConf ਦੇ ਅਗੇਤਰ ਨਾਂ ਤਬਦੀਲੀ ਰੋਕਣ ਲਈਪ੍ਰੀ-ਲੋਡ ਇੰਜਣibus ਸ਼ੁਰੂ ਹੋਣ ਸਮੇਂ ਪਹਿਲਾਂ ਲੋਡ ਕੀਤੇ ਇੰਜਣਪਿਛਲਾ ਇੰਜਣ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ:ibus-daemon ਦਾ D-Bus ਪਤਾ ਛਾਪੋਬਾਹਰਰਜਿਸਟਰੀ ਕੈਚੇ ਫ਼ਈਲ ਪੜ੍ਹੋ।ਸਿਸਟਮ ਰਜਿਸਟਰੀ ਕੈਚੇ ਪੜ੍ਹੋ।ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚੋਂ ਹਟਾਓਸੰਰਚਨਾ ਮੁੱਲ ਮੁੜ-ਸੈਟ ਕਰੋ...ਮੁੜ-ਸੈਟ ਕਰ ਰਿਹਾ ਹੈਮੁੜ-ਚਾਲੂ ਕਰੋibus-daemon ਮੁੜ ਸ਼ੁਰੂ ਕਰੋਇੰਪੁੱਟ ਢੰਗ ਸੂਚੀ ਵਿੱਚ ਸੰਭਾਲੇ ਇੰਜਣਾਂ ਦਾ ਕ੍ਰਮਸੰਭਾਲਿਆ ਸੰਸਕਰਣ ਨੰਬਰਭਾਸ਼ਾ ਚੁਣੋਇੱਕ ਇੰਪੁੱਟ ਢੰਗ ਚੁਣੋ%s ਲਈ ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਚੁਣੋIBus ਪਸੰਦ ਸੈੱਟ ਕਰੋਗਲੋਬਲ ਇੰਜਣ ਸੈੱਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ। ਇੰਜਣ ਸੈੱਟ ਜਾਂ ਪ੍ਰਾਪਤ ਕਰੋibus ਦਾ ਰਵੱਈਆ ਸੈੱਟ ਕਰੋ ਕਿ ਭਾਸ਼ਾ ਪੱਟੀ ਕਿਵੇਂ ਵੇਖਾਈ ਜਾਵੇਖੋਜ ਟੇਬਲ ਵਿੱਚ ਉਮੀਦਵਾਰ ਦੀ ਸਥਿਤੀ ਸੈੱਟ ਕਰੋਸਭ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਇੱਕੋ ਇੰਪੁੱਟ ਢੰਗ ਸਾਂਝਾ ਕਰੋਉਪਲੱਬਧ ਇੰਜਣ ਵਿਖਾਓਸਿਸਟਮ ਟਰੇਅ ਵਿੱਚ ਆਈਕਾਨ ਵੇਖਾਓਚੁਣੇ ਇੰਪੁੱਟ ਢੰਗ ਬਾਰੇ ਜਾਣਕਾਰੀ ਵੇਖੋਇੰਪੁੱਟ ਢੰਗ ਨਾਂ ਵੇਖਾਓਭਾਸ਼ਾ ਪੱਟੀ ਉੱਤੇ ਇੰਪੁੱਟ ਢੰਗ ਨਾਂ ਵੇਖਾਓਜਦੋਂ ਚੈੱਕ ਬਾਕਸ ਚੁਣਿਆ ਹੋਵੇ ਤਾਂ ਇੰਪੁੱਟ ਢੰਗ ਨਾਂ ਭਾਸ਼ਾ ਪੱਟੀ ਉੱਤੇ ਵੇਖੋਵਿਸ਼ੇਸ਼ਤਾ ਪੈਨਲ ਦਿਖਾਓ:ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਦਾ ਸੈਟਅੱਪ ਵੇਖਾਓਸੰਰਚਨਾ ਮੁੱਲ ਦਿਖਾਓਰਜਿਸਟਰੀ ਕੈਚੇ ਦੇ ਅੰਸ਼ ਵਿਖਾਓਇਹ ਜਾਣਕਾਰੀ ਵਿਖਾਓਸੰਸਕਰਣ ਵਿਖਾਓਸਿੰਹਾਲਾਖਾਸਲਾਗਇਨ ਕਰਨ ਸਮੇਂ ibus ਚਲਾਓਚਿੰਨ੍ਹਸੀਰੀਅਕਤਾਮਿਲਤੇਲਗੂਥਾਈIBus ਡੈਮਨ ਚੱਲ ਨਹੀਂ ਰਿਹਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਇਸਨੂੰ ਚਲਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?ਰਜਿਸਟਰੀ ਕੈਚੇ ਅਯੋਗ ਹੈ। ਸੰਭਾਲਿਆ ਸੰਸਕਰਣ ਨੰਬਰ ਪੁਰਾਣੇ ਇੰਸਟਾਲ ਕੀਤੇ ਹੋਏ ibus ਅਤੇ ਮੌਜੂਦਾ ibus ਦੇ ਸੰਸਕਰਣ ਵਿਚਲੇ ਫ਼ਰਕ ਨੂੰ ਜਾਂਚਣ ਲਈ ਵਰਤਿਆ ਜਾਏਗਾ।ਲਿਸਟ ਵਿੱਚ ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਲਿਸਟ ਵਿੱਚ ਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਲਿਸਟ ਵਿੱਚ ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂਇੰਪੁੱਟ ਢੰਗ ਬੰਦ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂਇੰਪੁੱਟ ਢੰਗ ਬੰਦ ਜਾਂ ਚਾਲੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂਤਿੱਬਤੀਉੱਤੇ ਖੱਬਾ ਕੋਨਾਉੱਤੇ ਸੱਜਾ ਕੋਨਾਯਾਤਰਾ ਤੇ ਥਾਵਾਂਟਰਿੱਗਰ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂgtk_accelerator_parse ਲਈ ਸ਼ਾਰਟਕੱਟ ਕੁੰਜੀਆਂ ਟਰਿੱਗਰ ਕਰੋਯੂਨੀਕੋਡ ਚੋਣਯੂਨੀਕੋਡ ਕੋਡ ਬਿੰਦੂ:ਯੂਨੀਕੋਡ ਫ਼ੋਂਟ:ਵਰਤੋਂ: %s COMMAND [OPTION...] ਮਨਪਸੰਦ ਫੋਂਟ ਵਰਤੋਂਭਾਸ਼ਾ ਪੈਨਲ ਲਈ ਮਨਪਸੰਦ ਫੋਂਟ ਨਾਂ ਵਰਤੋਂਪਸੰਦੀਦਾ ਫੋਂਟ ਵਰਤੋਂ:ਗਲੋਬਲ ਇੰਪੁੱਟ ਢੰਗ ਵਰਤੋਲਿਸਟ ਵਿੱਚ ਪਿਛਲੇ ਇੰਪੁੱਟ ਢੰਗ ਤੇ ਜਾਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਬਟਨਸਿਸਟਮ ਕੀਬੋਰਡ (XKB) ਲੇਆਉਟ ਵਰਤੋਸਿਸਟਮ ਕੀਬੋਰਡ ਲੇਆਉਟ ਵਰਤੋxmodmap ਵਰਤੋਂਖੜ੍ਹਵਾਂਰਜਿਸਟਰੀ ਕੈਚੇ ਫ਼ਾਈਲ ਲਿਖੋ।ਸਿਸਟਮ ਰਜਿਸਟਰੀ ਕੈਚੇ ਲਿਖੋ।ਇਸ ਬਾਰੇ(_A)ਸ਼ਾਮਲ(_A)ਲਾਗੂ ਕਰੋ(_A)ਰੱਦ ਕਰੋ(_C)ਬੰਦ ਕਰੋ(_C)ਹਟਾਓ(_D)ਹੇਠਾਂ(_D)ਠੀਕ ਹੈ(_O)ਮੇਰੀ ਪਸੰਦ(_P)ਹਟਾਓ(_R)ਉੱਤੇ(_U)default:LTRਭਾਸ਼ਾ: %s ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਨਾਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ ੨੦੦੮-੨੦੧੨ ਜਸਵਿੰਦਰ ਸਿੰਘ http://www.satluj.com/ibus-1.5.22/po/as.gmo0000644000000000000000000005750413623751603011200 000000000000004L     # 1Hboq<  ": RH] # 4 =IN(a(@DXk 9 ".3b02c  '? X!f @C6Pcv9)^0[ .%&.UZq? #J7( '991s2-6&M@t'"3 IV8jO'Qm@D\D<.#-R4/C `  '   > !A! \!h!q! !!######## ### # #$$+$4%5%3&*7&gb&2&>&<'Y'M'D)T)**"*74*/l*,*?*& + 0+Q+K+$K,1p,a,G-L-R^-)---W.`..z/p-00L1O1&.2.U2.2263rI3=33 4a444`F6.6"777087B82z8388D8U899 99:RX;0;T;-1<e_< <o<B=~=t>~>=?IA?R?,?E @Q@"j@@@Q@ AOA3/BcB.|BBq:CAC9CO(D:xDlDY EzE"FFJ:GKGGHRHeHIEImIAXJTJ,J.K.KKzKKiL0MFN!`NOMP!QQl\RbR,S2S/TBMTpTU/UQU/VRVaWsWd(X^X'XYC*YTnYYI]^]!w]]]]]] ^"^=^ O^[^Em^^cp{C~fB}*X /ntZ7TbQ%@ SFOgV)`w=?6jsd_Au 3+h\$ imI]M&Dk"zlErx:1N8-J(^|HGRW;[L4y!K Yqa5eP0,2vU9<>#'o.%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.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.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Latin layouts which have no ASCIIList engine name onlyModifiers:More…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.Saved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.Usage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2018-02-20 04:21-0500 Last-Translator: Copied by Zanata Language-Team: Assamese Language: as MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 3.9.6 %s এটা অজ্ঞাত কমান্ড! (প্ৰণয়ন কৰা হোৱা নাই)...ফন্ট আৰু শৈলীবিশ্বব্যাপী ইনপুট পদ্ধতি সংহতিসমূহকিবৰ্ডৰ বিন্যাসকিবৰ্ডৰ চৰ্টকাটসমূহআৰম্ভণিIBus বুদ্ধিমান ইনপুট bus ঘৰৰ পৃষ্ঠা: htthttps://github.com/ibus/ibus/wiki কি'বৰ্ড চৰ্টকাট কি অথবা পেনেল আইকন ক্লিক কৰি সক্ৰিয় ইনপুট পদ্ধতিত ওপৰৰ তালিকাত নিৰ্বাচিতসমূহৰ পৰা চুইচ কৰিব পৰা যাব। বিষয়েনিৰ্বাচিত ইনপুট পদ্ধতিক সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাত যোগ কৰকউন্নতসদায়েলিখক: %s স্বচালিতভাৱে লুকাওকতলৰ বাওঁফালৰ কোণততলৰ সোঁফালৰ কোণতIBus লে সংযোগ কৰিব নোৱাৰি। প্ৰাৰ্থীৰ দিশ:কমান্ডসমূহ: স্বত্বাধিকাৰ (c) ২০০৭-২০১০ পেং হুৱাং স্বত্বাধিকাৰ (c) ২০০৭-২০১০ Red Hat, Inc.ৰেজিস্ট্ৰি ক্যাশ সৃষ্টি কৰকস্বনিৰ্বাচিতস্বনিৰ্বাচিত ফন্টভাষাৰ পেনেলৰ বাবে স্বনিৰ্বাচিত ফন্টDConf সংৰক্ষিত নাম উপসৰ্গসমূহবিৱৰণ: চৰ্টকাট কি'সমূহ অসামৰ্থবান কৰকঅসামৰ্থবান কৰক:নেদেখুৱাবকৰা হলপূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰকএপ্লিকেচনৰ উইন্ডোত পূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰকএপ্লিকেচনৰ উইন্ডোত পূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰকএপ্লিকেচনৰ উইন্ডোত ইনপুট পদ্ধতিৰ পূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰকইনপুট পদ্ধতি অবিকল্পিতভাৱে সামৰ্থবান কৰকযেতিয়া এপ্লিকেচনে ইনপুট ফকাচ প্ৰাপ্ত কৰে তেতিয়া অবিকল্পিতভাৱে ইনপুট পদ্ধতি সামৰ্থবান কৰকসামৰ্থবান বা অসামৰ্থবান কৰক:চৰ্টকাট কি'সমূহ সামৰ্থবান কৰকসামৰ্থবান কৰক:ইঞ্জিনসমূহৰ ক্ৰমibus-daemon প্ৰস্থান কৰকপেনেল সদায় দেখুৱা হলে ইনপুট কাৰ্চাৰক অনুকৰণ কৰিবসাধাৰণবিশ্বব্যাপী ইঞ্জিন প্ৰাপ্ত কৰা ব্যৰ্থ হল। স্বচালিতভাৱে লুকুৱাওকআনুভূমিকIBus পছন্দসমূহIBus ডিমনক %d ছেকেণ্ডত আৰম্ভ কৰিব পৰা নগলIBus আৰম্ভ কৰা হৈছে! যদি আপুনি IBus ব্যৱহাৰ কৰিব নোৱাৰে, নিম্নলিখিত শাৰীসমূহ আপোনাৰ $HOME/.bashrc লে যোগ কৰক; তাৰ পিছত আপোনাৰ ডেস্কটপত পুনৰ লগ কৰক। export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus এটা Linux/Unix ৰ কাৰণে বুদ্ধিমান ইনপুট bus।যদি সত্য, পেনেলে ইনপুট কাৰ্চাৰক দেখুৱায় যদি পেনেলক সদায় দেখুৱা হয়। যদি ভুল, পেনেলক এটা নিৰ্দিষ্ট স্থানত দেখুৱা হয়।ইনপুট পদ্ধতিKbdকি'ৰ ক'ড:কিবৰ্ডৰ বিন্যাস: %s কিবৰ্ডৰ চৰ্টকাটসমূহভাষাৰ পেনেলৰ স্থানভাষাৰ পেনেলৰ স্থান:ভাষা: %s ASCII নথকা লেটিন বিন্যাসসমূহকেৱল ইঞ্জিন নাম তালিকাভুক্ত কৰকপৰিবৰ্তক:অধিকনিৰ্বাচিত ইনপুট পদ্ধতিক সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাৰ তললৈ স্থানান্তৰ কৰকনিৰ্বাচিত ইনপুট পদ্ধতিক সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাৰ ওপৰলৈ স্থানান্তৰ কৰকপৰবৰ্তী ইঞ্জিন চৰ্টকাট কি'সমূহপিছৰ ইনপুট পদ্ধতি:কোনো ইঞ্জিন সংহতি কৰা হোৱা নাই। লুক-আপ টেবুলৰ দিশলুকআপ টেবুলৰ দিশ। ০ = আনুভূমিক, ১ = উলম্বঅন্যঅনুগ্ৰহ কৰি এটা কি' টিপক (বা এটা কি'ৰ মিশ্ৰণ)অনুগ্ৰহ কৰি এটা কি' টিপক (বা এটা কি'ৰ মিশ্ৰণ)। কি' এৰিলে ডাইলগ বন্ধ হ'ব।IME চুইচাৰ উইন্ডোৰ বাবে মিলিছেকেণ্ডত পপআপ বিলম্বপছন্দনাম পৰিবৰ্তন বন্ধ কৰিবলে DConf কি'সমূহৰ উপসৰ্গসমূহইঞ্জিনসমূহ আগতে ল'ড কৰকibus আৰম্ভৰ আগতে ইঞ্জিন ল'ড কৰকপূৰ্ববৰ্তী ইঞ্জিনৰ চৰ্টকাট কি'আগৰ ইনপুট পদ্ধতিibus-daemon ৰ D-Bus ঠিকনা প্ৰিন্ট কৰকপ্ৰস্থানXKB আইকনৰ RGBA মানৰেজিস্ট্ৰি ক্যাশ FILE পঢ়ক।চিস্টেম ৰেজিস্ট্ৰি ক্যাশ পঢ়ক।সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাৰ পৰা নিৰ্বাচিত ইনপুট পদ্ধতি আঁতৰুৱা হ'বসংৰূপৰ মানসমূহ পুনৰ সংহতি কৰকপুনৰ সংহতি কৰা হৈছেপুনাৰম্ভibus-daemon পুনৰাম্ভ কৰকibus ইঞ্জিনসমূহ চুইচ কৰোতে যদি .xmodmap অথবা .Xmodmap থাকে xmodmap চলাব।ইনপুট পদ্ধতি তালিকাত সংৰক্ষিত ইঞ্জিন ক্ৰমসংৰক্ষিত সংস্কৰণ সংখ্যাএটা ইনপুট পদ্ধতি বাছক%s ৰ কাৰণে কিবৰ্ডৰ চৰ্টকাট বাছকIBus পছন্দসমূহ সংহতি কৰকবিশ্বব্যাপী ইঞ্জিন সংহতি কৰা ব্যৰ্থ হল। ইঞ্জিন সংহতি কৰক অথবা প্ৰাপ্ত কৰকভাষাৰ বাৰ প্ৰদৰ্শন আৰু লুকুৱাৰ উদ্দেশ্যে ibus ৰ আচৰণ নিৰ্ধাৰণ কৰকলুক-আপ টেবুলত প্ৰযোজ্য বিকল্পসমূহৰ দিশ নিৰ্ধাৰণ কৰকসকলো এপ্লিকেচনৰ মাজত একেই ইনপুট পদ্ধতি অংশীদাৰী কৰকউপলব্ধ ইঞ্জিনসমূহ দেখুৱাওকচিস্টেম ট্ৰেত আইকন দেখুৱাওকনিৰ্বাচিত ইনপুট পদ্ধতি সংক্ৰান্ত তথ্য দেখুৱাওকইনপুট পদ্ধতিৰ নাম দেখুৱাওকভাষাৰ বাৰত ইনপুট পদ্ধতিৰ নাম দেখুৱাওকচেকবক্স নিৰ্বাচিত হ'লে ভাষাৰ বাৰত ইনপুট পদ্ধতিৰ নাম দেখুৱাওকবৈশিষ্ট্য পেনেল দেখুৱাওক:নিৰ্বাচিত ইনপুট পদ্ধতিৰ ইনস্টল দেখুৱাওকসংৰূপৰ মানসমূহ দেখুৱাওকৰেজিস্ট্ৰি ক্যাশৰ সমল দেখুৱাওকএই তথ্য দেখুৱাওকসংস্কৰণ দেখুৱাওকলগিনত ibus আৰম্ভ কৰকIBus ডিমন চলি থকা নাই। আপুনি আৰম্ভ কৰিব বিচাৰে নেকি?বৈশিষ্ট্য পেনেলৰ আচৰণ। 0 = নেদেখুৱাব, 1 = স্বচালিতভাৱে লুকুৱাওক, 2 = সদায় দেখুৱাববৈশিষ্ট্য পেনেল দেখুৱাবলৈ মিলিছেকেণ্ডফকাচ-ইন আৰু বৈশিষ্ট্যসমূহ পৰিবৰ্তন হোৱাৰ পিছত বৈশিষ্ট্য পেনেল দেখুৱাবলৈ মিলিছেকেণ্ড।ৰেজিস্ট্ৰি ক্যাশ বৈধ নহয়। সংৰক্ষিত সংস্কৰণ সংখ্যাক পূৰ্বতে ইনস্টল কৰা ibus আৰু বৰ্তমান ibus ৰ মাজত পাৰ্থক্য নিৰীক্ষণ কৰিবলৈ ব্যৱহাৰ কৰা হব।তালিকাত উপস্থিত পৰবৰ্তী ইনপুট পদ্ধতিলৈ পৰিবৰ্তনৰ বাবে প্ৰযোজ্য চৰ্টকাট কি'তালিকাত উপস্থিত পূৰ্ববৰ্তী ইনপুট পদ্ধতিলৈ পৰিবৰ্তনৰ বাবে প্ৰযোজ্য চৰ্টকাট কি'তালিকাত থকা পৰৱৰ্তী ইনপুট পদ্ধতিলে যাবলে চৰ্টকাট কি'সমূহতালিকাত থকা পূৰ্বৱৰ্তী ইনপুট পদ্ধতিলে যাবলে চৰ্টকাট কি'সমূহইনপুট পদ্ধতি বন্ধ কৰিবলে চৰ্টকাট কি'সমূহইনপুট পদ্ধতি খুলিবলে চৰ্টকাট কি'সমূহইনপুট পদ্ধতি খোলা আৰু বন্ধ কৰাৰ বাবে প্ৰয়োজনীয় চৰ্টকাট কি' নিৰ্ধাৰণ কৰকওপৰৰ বাওঁফালৰ কোণতওপৰৰ সোঁফালৰ কোণতট্ৰিগাৰৰ চৰ্টকাট কি'সমূহgtk_accelerator_parse ৰ বাবে চৰ্টকাট কি'সমূহ ট্ৰিগাৰ কৰকUS বিন্যাসক লেটিন বিন্যাসসমূহলৈ সংযোজন কৰা হয়। অপৰক বাদ দিব পাৰি।ব্যৱহাৰ: %s COMMAND [OPTION...] স্বনিৰ্বাচিত ফন্ট ব্যৱহাৰ কৰকভাষাৰ পেনেলৰ বাবে স্বনিৰ্বাচিত ফন্টৰ নাম ব্যৱহাৰ কৰকস্বনিৰ্বাচিত ফন্ট ব্যৱহাৰ কৰক:সৰ্বব্যাপী ইনপুট পদ্ধতি ব্যৱহাৰ কৰকপূৰ্বৱৰ্তী ইনপুট পদ্ধতিলৈ চুইচ কৰিবলে shift ৰ সৈতে চৰ্টকাট ব্যৱহাৰ কৰকচিস্টেম কিবৰ্ড (XKB) বিন্যাস ব্যৱহাৰ কৰকচিস্টেম কিবৰ্ড বিন্যাস ব্যৱহাৰ কৰকxmodmap ব্যৱহাৰ কৰকউল্লম্বৰেজিস্ট্ৰি ক্যাশ FILE লিখক।চিস্টেম ৰেজিস্ট্ৰি ক্যাশ লিখক।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 বিস্তাৰত এটা দশমিক মান।বিষয়ে (_A)যোগ কৰক (_A)প্ৰয়োগ কৰক (_A)বাতিল (_C)বন্ধ কৰক (_C)আঁতৰাওক (_D)তলত (_D)ঠিক আছে (_O)পছন্দ (_P)আঁতৰাওক (_R)ওপৰত (_U)default:LTRভাষা: %s ইনপুট পদ্ধতিসমূহ চুইচ কৰাঅমিতাক্ষ ফুকন (aphukan@fedoraproject.org), নীলমদ্যুতি গোস্বামী (ngoswami@redhat.com)ibus-1.5.22/po/vi.po0000644000000000000000000026227213623751602011046 00000000000000# Vietnamese translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2018 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Lê Quốc Tuấn , 2009 # Đoàn Hoà Khiêm , 2018 # fujiwara , 2015. #zanata # fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2018-06-21 07:54+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Vietnamese\n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 4.4.5\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Nạp trước các kiểu gõ" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Nạp trước các kiểu gõ khi khởi động ibus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Dùng kiểu bố trí bàn phím của hệ thống" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Dùng kiểu bố trí bàn phím hệ thống (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Nhúng văn bản tiền soạn thảo" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 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/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Dùng chung kiểu gõ cho toàn hệ thống" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 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" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Bật kiểu gõ theo mặc định" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Phím tắt kích hoạt" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 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õ" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Bật các phím tắt" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Phím tắt để bật kiểu gõ" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Tắt các phím tắt" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Phím tắt để tắt kiểu gõ" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Phím tắt cho kiểu gõ kế tiếp" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Phím tắt cho kiểu gõ trước" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "Phím tắt để chuyển sang kiểu gõ trước" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Tự động ẩn" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Vị trí thanh ngôn ngữ:" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Hướng của bảng tra cứu" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 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/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Hiển thị biểu tượng trên khay hệ thống" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Hiển thị tên kiểu gõ" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Hiển thị tên kiểu gõ trên thanh ngôn ngữ" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Dùng phông chữ tùy biến" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Dùng phông tùy biến cho thanh ngôn ngữ" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Tùy biến phông" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Tùy biến phông cho thanh ngôn ngữ" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Khác" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Thôi" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Giới thiệu" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "Đón_g" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Ngôn ngữ: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Bố trí bàn phím: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Tác giả: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Mô tả:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Chọn một kiểu gõ" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "Thê_m" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Kiểu gõ" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Tùy chọn IBus" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Thiết lập các tuỳ chọn IBus" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Những phím tắt" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Mã phím:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Phím bổ sung:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "Á_p dụng" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Xoá" #: 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 "" "Vui lòng nhấn một phím (hoặc tổ hợp phím).\n" "Hộp thoại này sẽ được đóng lại khi bạn thả phím ấn." #: setup/keyboardshortcut.py:255 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus daemon đang không chạy. Bạn có muốn khởi động nó không?" #: setup/main.py:536 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 không thể khởi động! Nếu bạn không thể sử dụng IBus, hãy thêm các dòng " "dưới đây vào tệp tin $HOME/.bashrc của bạn; sau đó hãy đăng nhập lại vào màn " "hình làm việc.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: setup/main.py:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus daemon không thể khởi động trong %d giây" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Chọn phím tắt để %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "chuyển các kiểu gõ" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Ngang" #: setup/setup.ui:14 msgid "Vertical" msgstr "Dọc" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Góc trên bên trái" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Góc trên bên phải" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Góc dưới bên trái" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Góc dưới bên phải" #: setup/setup.ui:37 msgid "Custom" msgstr "Tùy biến" #: setup/setup.ui:48 msgid "Do not show" msgstr "Không hiển thị" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Tự động ẩn" #: setup/setup.ui:54 msgid "Always" msgstr "Luôn luôn" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Kiểu gõ kế tiếp:" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Kiểu gõ trước:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Bật hoặc tắt:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Bật:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Tắt:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Phím tắt" #: setup/setup.ui:374 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:376 msgid "Candidates orientation:" msgstr "Hướng danh sách từ ứng cử:" #: setup/setup.ui:407 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:409 msgid "Show property panel:" msgstr "Hiển thị bảng thuộc tính:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Vị trí thanh ngôn ngữ:" #: setup/setup.ui:494 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:508 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:513 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:527 msgid "Use custom font:" msgstr "Dùng phông chữ tùy biến:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Phông và kiểu" #: setup/setup.ui:579 msgid "General" msgstr "Chung" #: setup/setup.ui:671 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:682 msgid "_Remove" msgstr "_Bỏ" #: setup/setup.ui:689 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:700 msgid "_Up" msgstr "_Lên" #: setup/setup.ui:707 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:718 msgid "_Down" msgstr "_Xuống" #: setup/setup.ui:725 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:736 msgid "_About" msgstr "G_iới thiệu" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Hiển thị thông tin về kiểu gõ đã chọn" #: setup/setup.ui:754 msgid "_Preferences" msgstr "Tù_y thích" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Hiển thị thiết lập cho kiểu gõ đã chọn" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Bố trí bàn phím" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Chọn một kiểu gõ" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Nâng cao" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Bộ gõ thông minh\n" "Trang chủ: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Khởi động ibus khi đăng nhập" #: setup/setup.ui:1358 msgid "Startup" msgstr "Khởi động" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Không thể kết nối với IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "ngôn ngữ: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Thoát ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Khởi động lại ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "Hiển thị phiên bản" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "Hiển thị thông tin này" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Sử dụng: %s LỆNH [TUỲ CHỌN...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Lệnh:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 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:1099 msgid "translator-credits" msgstr "" "Lê Quốc Tuấn , 2009\n" "Đoàn Hoà Khiêm , 2018" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Tùy thích" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Khởi động lại" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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" #~ msgid "IBus Update" #~ msgstr "Cập nhật IBus" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Super + space bây giờ là phím nóng mặc định." ibus-1.5.22/po/de.po0000644000000000000000000031500713623751600011011 00000000000000# German translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2020 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # Florian H. , 2016. #zanata # Roman Spirgi , 2017. #zanata # Thomas Eichhorn , 2017. #zanata # Tobias Weise , 2017. #zanata # fujiwara , 2018. #zanata # Mike FABIAN , 2020. msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2020-01-30 13:16+0000\n" "Last-Translator: Mike FABIAN \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.10.3\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Engines vorladen" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Engines vorladen, während IBus startet" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Engine-Reihenfolge" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Gespeicherte Engine-Reihenfolge in der Eingabemethoden-Liste" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Popup-Verzögerung für IME-Wechsel-Fenster in Millisekunden" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Gespeicherte Versions-Numnner" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Latin Tastaturbelegungen ohne ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" "US Tastaturbelegung wird den Latin Tastaturbelegungen angefügt. Varianten " "können vernachlässigt werden." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Verwenden von xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "xmodmap ausführen wenn .xmodmap oder .Xmodmap vorhanden ist wenn ibus " "Engines gewechselt werden." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "System-Tastaturbelegung verwenden" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "System-Tastatur (XKB) Belegung verwenden" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Preedit-Text einbetten" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Preedit-Text in Anwendungsfenster einbetten" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Globale Eingabemethode wählen" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Dieselbe Eingabemethode für alle Anwendungen verwenden" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Eingabemethode standardmäßig aktivieren" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "Eingabemethode standardmäßig aktivieren, wenn die Anwendung Eingabefokus " "erlangt" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "Dconf bewahrt Namenspräfixe" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Namenspräfixe von Dconf-Schlüsseln, um Namenskonvertierung anzuhalten" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Auslöser-Tastenkombination" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Tastenkombination zum An- oder Ausschalten der Eingabemethode" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Tastenkombinationen auslösen für gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Tastenkürzel aktivieren" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Tastenkürzel zum Einschalten der Eingabemethoden" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Tastenkürzel deaktivieren" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Tastenkürzel zum Ausschalten der Eingabemethoden" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Nächste Engine-Tastenkombination" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 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/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Vorherige Engine-Tastenkombination" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "Tastenkombination zum Wechseln zur vorherigen Eingabemethode" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Automatisch verstecken" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Verhalten des Eigenschaften-Panels. 0 = nicht anzeigen, 1 = automatisch " "verstecken, 2 = immer anzeigen" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Position des Sprach-Panels" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "Den Input-Cursor verfolgen falls das Panel immer angezeigt wird" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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 "" "Wenn wahr folgt das Panel dem Input-Cursor wenn das Panel immer angezeigt " "wird. Wenn falsch wird das Panel an einer festen Position angezeigt." #: data/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Millisekunden bis die Einstellungsleiste angezeigt wird" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Millisekunden bis zum Anzeigen der Eigenschaftenleiste nach Fokuswechsel " "oder Eigenschaftenwechsel." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Ausrichtung der Lookup-Tabelle" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Ausrichtung der Lookup-Tabelle. 0 = Horizontal, 1 = Vertikal" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Symbol im Benachrichtigungsfeld anzeigen" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Name der Eingabemethode anzeigen" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Name der Eingabemethode auf Sprachleiste anzeigen" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "RGBA Werte des XKB Icons" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage values in the range 0% to 100%, and 'a' is a floating point value " "in the range 0 to 1 of the alpha." msgstr "" "Das XKB Icon zeigt den Layout-String und der String wird mit dem RGBA Wert " "gerendert. Der RGBA Wert kann sein 1. eine X11-Farbe , 2. ein Hex-Wert in " "der Form '#rrggbb' wobei 'r', 'g' und 'b' HEX-Werte für Rot, Grün und Blau " "sind, 3. eine RGB-Farbe in der Form 'rgb(r,g,b)' oder 4. eine RGBA-Farbe in " "der Form 'rgba(r,g,b,a)' wobei 'r', 'g', und 'b' entweder Integer im Bereich " "0 bis 255 oder Prozentwerte von 0-100% sind und 'a' ein Gleitkommawert im " "Bereich 0 bis 1 für das Alpha ist." #: data/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "Millisekunden bis zum Anzeigen der Panel-Icons einer Eigenschaft" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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 "" "Millisekunden, die es dauert bevor das Panel-Icon vom Engine-Icon zum " "Property-Icon wechselt wenn Engines gewechselt werden wenn die Property " "durch den Wert von icon-prop-key in IBusEngineDesc spezifiziert ist. Wenn " "der Wert 0 ist, gibt es keine Verzögerungszeit und das Property-Icon wird " "sofort gezeigt." #: data/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Benutzerdefinierte Schriftart verwenden" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Benutzerdefinierte Schriftart für Sprach-Panel verwenden" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Benutzerdefinierte Schriftart" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Name der benutzerdefinierten Schriftart für Sprach-Panel" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Unicode-Tastenkombinationen für gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Die Tastenkombinationen zum Ein- und Ausschalten der Unicode-Eingabe" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Emoji Tastenkombination für gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "Tastenkombination zum Ein- und Ausschalten der Emoji-Eingabe" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "Benutzerdefinierter Font-Name für Emoji-Zeichen im Emoji-Dialog" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Standard-Sprache für das Emoji-Wörterbuch" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Auswahl einer Standard-Sprache der Emoji-Wörterbücher im Emoji-Dialog. Der " "Wert $lang wird auf /usr/share/ibus/dicts/emoji-$lang.dict angewendet." #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "Emoji-Favoriteneliste im Emoji-Dialog" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Sie können die favorisierten Emoji in der Emoji-Liste anzeigen wenn die " "Liste Zeichen enthält." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "Anmerkungsliste für bevorzugte Emoji im Emojidialog" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" "In dieser Liste kann man eine Anmerkung für bevorzugte Emoji definieren." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" "Ob in Emojianmerkungen mit teilweiser Übereinstimmung gesucht wird oder " "nicht" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Ob Emojianmerkungen nur mit einem Teil der Zeichenfolge übereinstimmen " "müssen anstatt mit kompletten Zeichenfolge." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Finde Emojianmerkungen mit der angegebenen Länge" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Finde Emojianmerkungen mit teilweiser Übereinstimmung mit mehr als der " "angegebenen Zahl von Zeichen anstelle von exakter Übereinstimmung." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" "Wähle eine Bedingung um nach teilweisen Übereinstimmungen in " "Emojianmerkungen zu suchen" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Wähle eine der folgenden Bedingungen um nach teilweisen Übereinstimmungen in " "Emojianmerkungen zu suchen: 0 == Präfix, 1 == Suffix, 2 == Mittendrin" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Emojidaten beim Starten laden" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Wenn \"true\", dann werden die Emojidaten beim Starten geladen. Ungefähr " "10MB werden benötigt um diese Daten zu laden. Wenn \"false\", dann werden " "die Emojidaten erst geladen, wenn der Emojidialog zum ersten Mal geöffnet " "wird." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Unicodedaten beim Starten laden" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Wenn \"true\", dann werden die Unicodedaten beim Starten geladen. Ungefähr " "15MB Speicher werden benötigt um die Daten zu laden. Wenn \"false\", dann " "werden die Unicodedaten erst geladen wenn der Emojidialog zum ersten Mal " "geöffnet wird. Die Unicodedaten werden immer nach den Emojidaten geladen, " "auch wenn diese Option \"true\" ist." #: 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:209 msgid "Other" msgstr "Sonstige" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Eine Sprache auswählen" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Abbrechen" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Mehr..." #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Info" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "S_chließen" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Sprache: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Tastaturbelegung: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Beschreibung:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Eingabemethode wählen" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Hinzufügen" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Eingabemethode" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus-Einstellungen" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "IBus-Einstellungen konfigurieren" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Tastenkombinationen" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Tasten-Code:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Hilfstasten:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "An_wenden" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Löschen" #: 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 "" "Bitte eine Taste (oder eine Tastenkombination drücken).\n" "Der Dialog wird geschlossen, wenn die Taste losgelassen wird." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Bitte eine Taste (oder eine Tastenkombination drücken)" #: setup/main.py:121 setup/main.py:588 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:515 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:536 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:550 #, 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:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Wählen Sie eine Tastenkombination für %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "Eingabemethoden wechseln" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horizontal" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertikal" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Ecke oben links" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Ecke oben rechts" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Ecke unten links" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Ecke unten rechts" #: setup/setup.ui:37 msgid "Custom" msgstr "Benutzerdefiniert" #: setup/setup.ui:48 msgid "Do not show" msgstr "Nicht anzeigen" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Automatisch ausblenden" #: setup/setup.ui:54 msgid "Always" msgstr "Immer" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Nächste Eingabemethode:" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Vorherige Eingabemethode:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Aktivieren oder deaktivieren:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Aktivieren:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Deaktivieren:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Tastenkombinationen" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Ausrichtung der Kandidaten in Lookup-Tabelle einstellen" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Ausrichtung der Kandidaten:" #: setup/setup.ui:407 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:409 msgid "Show property panel:" msgstr "Zeige Einstellungsleiste:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Position des Sprach-Panels:" #: setup/setup.ui:494 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:508 msgid "Embed preedit text in application window" msgstr "Preedit-Text in Anwendungsfenster einbetten" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "Den Preedit-Text der Eingabemethode in Anwendungsfenster einbetten" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Benutzerdefinierte Schriftart verwenden:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Schriftart und Stil" #: setup/setup.ui:579 msgid "General" msgstr "Allgemein" #: setup/setup.ui:671 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:682 msgid "_Remove" msgstr "_Entfernen" #: setup/setup.ui:689 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:700 msgid "_Up" msgstr "_Hoch" #: setup/setup.ui:707 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:718 msgid "_Down" msgstr "_Runter" #: setup/setup.ui:725 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:736 msgid "_About" msgstr "_Info" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Informationen zur gewählten Eingabemethode anzeigen" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Einstellungen" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Einstellungen der gewählten Eingabemethode anzeigen" #: setup/setup.ui:812 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 "" "Die aktive Eingabemethode kann aus der angezeigten Liste durch die " "Tastenkombination oder durch einen Klick auf das Icon ausgewählt werden" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" "Die Tastenkombinationen um Konvertierungen von Emoji- oder Unicodenamen " "einzuschalten" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Emojianmerkungen:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" "Tastenkombinationen zum Einschalten der Unicode Codepoint Konvertierung" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Unicode Codepoint:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "Font für Unicode-Kandidaten im Emoji-Dialog einstellen" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Unicodefont:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Einstellen einer Sprache für Emojianmerkungen im Emojidialog" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Emojianmerkungssprache:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Nach teilweisen Übereinstimmungen in Emojianmerkungen suchen mit folgender " "Bedingung und mehr als der folgenden Anzahl von Zeichen:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Ob Emojianmerkungen nur mit einem Teil der Zeichenfolge übereinstimmen " "müssen anstatt mit kompletten Zeichenfolge" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Präfix-Übereinstimmung" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Suffix-Übereinstimmung" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Enthält den Text" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emoji" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Tastaturbelegung" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Globale Inputmethodeneinstellungen" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Erweitert" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Der intelligente Eingabe-Bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "IBus bei der Anmeldung starten" #: setup/setup.ui:1358 msgid "Startup" msgstr "Starten" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Aktivitäten" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Tiere & Natur" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Komponente" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Flaggen" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Essen & Trinken" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Objekte" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "Personen und Körper" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "Smileys und Emotionen" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Symbole" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Reisen & Orte" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Basis-Lateinisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Lateinisch-1, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Lateinisch, erweitert-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Lateinisch, erweitert-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "IPA Erweiterungen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Nichtkombinierende Zusatzzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Kombinierende diakritische Zeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Griechisch und koptisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Kyrillisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Kyrillisch, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Armenisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Hebräisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Arabisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Syrisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Arabisch, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "N’Ko" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Samaritanisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandäisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Syrisch, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Arabisch, Erweiterung A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Devanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengalisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmukhi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Gujarati" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Oriya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tamilisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Telugu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Kannada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malayalam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Singhalesisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Thailändisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Laotisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tibetisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Birmanisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Georgisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Hangeul-Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Äthiopisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Äthiopisch, Zusatz" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Cherokee" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Vereinheitlichte Silbenzeichen kanadischer Ureinwohner" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Runen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Tagalog" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunóo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Tagbanuwa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Khmer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Mongolisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Vereinheitlichte Silbenzeichen kanadischer Ureinwohner, erweitert" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai Le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Neu-Tai-Lue" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Khmer-Symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Buginesisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Lanna" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Kombinierende diakritische Zeichen, erweitert" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Balinesisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Sundanesisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepcha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ol Chiki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Kyrillisch, erweitert-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "Georgisch, erweitert" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Sundanesisch, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Vedische Erweiterungen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Phonetische Erweiterungen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Phonetische Erweiterungen, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Kombinierende diakritische Zeichen, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Lateinisch, weiterer Zusatz" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Griechisch, Zusatz" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Allgemeine Interpunktion" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Hoch- und tiefgestellte Zeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Währungszeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Kombinierende diakritische Zeichen für Symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Buchstabenähnliche Symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Zahlzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Pfeile" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Mathematische Operatoren" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Verschiedene technische Zeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Symbole für Steuerzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Optische Zeichenerkennung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Umschlossene alphanumerische Zeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Rahmenzeichnung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Blockelemente" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Geometrische Formen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Verschiedene Symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Dingbats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Verschiedene mathematische Symbole-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Zusätzliche Pfeile-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Braille-Zeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Zusätzliche Pfeile-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Verschiedene mathematische Symbole-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Zusätzliche Mathematische Operatoren" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Verschiedene Symbole und Pfeile" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Glagolitisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Lateinisch, erweitert-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Koptisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Georgisch, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Äthiopisch, erweitert" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Kyrillisch, erweitert-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Zusätzliche Interpunktion" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "CJK-Radikale, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Kangxi-Radikale" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Ideographische Beschreibungszeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "CJK-Symbole und -Interpunktion" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Hangeul-Jamo, Kompatibilität" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Bopomofo, erweitert" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "CJK-Striche" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Katakana, Phonetische Erweiterungen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Umschlossene CJK-Zeichen und -Monate" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "CJK-Kompatibilität" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "I-Ging-Hexagramme" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "Vereinheitlichte CJK-Ideogramme" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Yi-Silbenzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Yi-Radikale" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Vai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Kyrillisch, erweitert-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Modifizierende Tonzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Lateinisch, erweitert-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Syloti Nagri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Allgemeine indische Ziffern" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Phagspa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurashtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Devanagari, erweitert" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Hangeul-Jamo, erweitert-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Javanisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Birmanisch, erweitert-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Cham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Birmanisch, erweitert-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tai Viet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Meitei-Mayek, Erweiterungen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Äthiopisch, erweitert-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Lateinisch, erweitert-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Cherokee, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meitei-Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Hangeul-Silbenzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Hangeul-Jamo, erweitert-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "High Surrogates" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "High Surrogates (privater Bereich)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Low Surrogates" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Private Use Zone" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "CJK-Ideogramme, Kompatibilität" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Alphabetische Präsentationsformen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Arabische Präsentationsformen-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Variantenselektoren" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Vertikale Formen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Kombinierende halbe diakritische Zeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "CJK-Kompatibilitätsformen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Kleine Formvarianten" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Arabische Präsentationsformen-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Halbbreite und vollbreite Formen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Spezielles" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Linear-B-Silbenzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Linear-B-Ideogramme" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Ägäische Zahlzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Altgriechische Zahlzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Alte Symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Diskos von Phaistos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Lykisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Karisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Koptische Zahlzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Altitalisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gotisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Altpermisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ugaritisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Altpersisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Mormonenalphabet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Shaw-Alphabet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmaniya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Albanisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Alwanisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Linear A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Kyprische Schrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "Aramäisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Palmyrenisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nabatäisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Hatran" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Phönizisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lydisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Meroitische Hieroglyphen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Meroitisch-demotisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Kharoshthi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Altsüdarabisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Altnordarabisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Manichäisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Avestisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Parthisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Inschriften-Pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Psalter-Pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Alttürkisch (Orchon-Runen)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Altungarisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "Hanifi Rohingya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Rumi-Ziffern" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "Altsogdisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "Sogdisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "Elymaisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Brahmi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaithi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Sorang-Sompeng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Chakma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Mahajani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Sharada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Singhalesische Zahlzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Khojki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Multanisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Khudabadi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Grantha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Newa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Tirhuta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Siddham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Modi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Mongolisch, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Dogra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Varang Kshiti" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "Nandinagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Dsanabadsar-Quadratschrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Sojombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Masaram Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Gunjala Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Makassar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "Tamilisch, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Keilschrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Keilschrift-Zahlzeichen und -Interpunktion" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Frühe Keilschrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Ägyptische Hieroglyphen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "Ägyptische Hieroglyphen-Steuerzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Anatolische Hieroglyphen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Bamum, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mro" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Bassa Vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Pahawh Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Medefaidrin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Pollard-Schrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Ideographische Symbole und Interpunktion" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Xixia" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Xixia-Komponenten" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Kana, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Kana, erweitert-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "Kleine Kana, erweitert" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Frauenschrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Duployé-Kurzschrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Kurzschrift-Steuerzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Byzantinische Notenschriftzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Notenschriftzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Altgriechische Notenschriftzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "Maya-Zahlzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Tai-Xuan-Jing-Symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Zählstabziffern" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Mathematische alphanumerische Symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Sutton-SignWriting" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Glagolitisch, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "Nyiakeng Puachue Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "Wancho" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Mende-Schrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "Indische Siyaq-Zahlzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "Osmanische Siyaq-Zahlzeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Arabische mathematische alphanumerische Symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Mahjonggsteine" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Dominosteine" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Spielkarten" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Zusätzliche umschlossene alphanumerische Zeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Zusätzliche umschlossene CJK-Zeichen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Verschiedene piktografische Symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Smileys" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Ziersymbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Verkehrs- und Kartensymbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Alchemistische Symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Geometrische Formen, erweitert" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Zusätzliche Pfeile-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Zusätzliche piktografische Symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "Schachsymbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "Piktografische Symbole, erweitert-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "Vereinheitlichte CJK-Ideogramme, Erweiterung F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "CJK-Ideogramme, Kompatibilität, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Tags" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Variantenselektoren, Ergänzung" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Supplementary Private Use Area-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Supplementary Private Use Area-B" #: tools/main.vala:51 msgid "List engine name only" msgstr "Nur Engine-Name auflisten" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Keine Verbindung zu IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "Sprache: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" "Keine Engine gesetzt.\n" "\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Setzen der globalen Engine fehlgeschlagen.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Auslesen der globalen Engine fehlgeschlagen.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Lesen Sie den System-Registry-Cache." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Lesen Sie die Registry-Cache DATEI." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "Der Registry-Cache ist ungültig.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Schreiben Sie den System-Registry-Cache." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Schreiben Sie die Registry-Cache DATEI." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "Schemapfade des Engines anstelle von ibus core verwenden, das können durch " "Komma getrennte Werte sein." #: tools/main.vala:381 msgid "Resetting…" msgstr "Neustarten..." #: tools/main.vala:399 msgid "Done" msgstr "Fertig" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Setzen oder erhalten Modul" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Beenden ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "Anzeigen verfügbare Module" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Nicht implementiert)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Neustart ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "Anzeigen Version" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Anzeigen des Registry-Cache Inhalts" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Erstellen Registry-Cache" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Ausgabe der D-Bus-Adresse des ibus-Daemon" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Anzeigen der Konfigurationswerte" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Zurücksetzen der Konfigurationswerte" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Kopieren des ausgewählten Emoji in die Zwischenablage " #: tools/main.vala:458 msgid "Show this information" msgstr "Anzeige dieser Information" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Anwendung: %s BEFEHL [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Befehle:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s ist ein unbekannter Befehl!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Favoriten" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Andere" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Öffne Unicodeauswahl" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Zurück zur Emojiauswahl" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Seite runter" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Seite hoch" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Emoji-Varianten anzeigen" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Schließen" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Menü" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Klicken um eine Warnmeldung anzusehen" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Lade ein Unicodewörterbuch:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Codepoint: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Hat Emojivarianten" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Beschreibung: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Keine" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Anmerkungen: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Name: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Alias: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Emojiauswahl" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Unicodeauswahl" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "Konnte die aktuelle Textapplikation nicht finden. Bitte fokussieren Sie die " "Applikation erneut. Zum Beispiel tippen sie mehrere Male die Esc-Taste um " "den Emojieingabemodus zu verlassen, klicken Sie mit der Maus auf den Desktop " "und klicken sie dann wieder auf Ihre Textapplikation." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Abbrechen der Emojiauswahl." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Emoji in die Zwischenablage kopiert." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "„SCHRIFTART“ für Emojizeichen im Emojidialog" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "SCHRIFTART" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "„SPRACHE“ für Emojianmerkungen im Emojidialog. Zum Beispiel „en“" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "SPRACHE" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Emojianmerkungen finden mit teilweiser Übereinstimmung" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Übereinstimmung mit Länge der angegebenen ganzen Zahl" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Übereinstimmung mit der Bedingung der angegebenen ganzen Zahl" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus Panel" #: ui/gtk3/panel.vala:1095 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:1099 msgid "translator-credits" msgstr "" "Fabian Affolter , 2009.\n" "Hedda Peters , 2009.\n" "Mike FABIAN , 2019." #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Einstellungen" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Neustart" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ msgid "The shortcut keys for showing emoji dialog" #~ msgstr "Tastenkombination zum Anzeigen des Emoji-Dialogs" #~ msgid "Emoji choice:" #~ msgstr "Emoji-Auswahl:" #~ msgid "Emoji font:" #~ msgstr "Emoji Font:" #~ 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" #~ msgid "Type annotation or choose emoji" #~ msgstr "Emoji-Annotationen eingeben oder Emoji auswählen" #~ msgid "IBus Update" #~ msgstr "IBus Aktualisierung" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Super+Leerzeichen ist nun der Standard-Hotkey." ibus-1.5.22/po/eu.po0000644000000000000000000025253613623751600011041 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:46+0000\n" "Last-Translator: Asier Iturralde Sarasola \n" "Language-Team: Basque \n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Erabili sarrera metodo orokorra" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Ezkutatu automatikoki" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Erakutsi sarrera metodoaren izena" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Erabili letra-tipo pertsonalizatua" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Letra-tipo pertsonalizatua" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright-a (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Beste bat" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "Hautatu sarrera metodo bat" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Utzi" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_Ados" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Honi buruz" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "It_xi" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Hizkuntza: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Teklatu-diseinua: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Egilea: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Deskribapena:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Hautatu sarrera metodo bat" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Gehitu" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Sarrera metodoa" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus hobespenak" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Ezarri IBus hobespenak" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Teklatu lasterbideak" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Tekla kodea:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Aplikatu" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Ezabatu" #: 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 "" #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horizontala" #: setup/setup.ui:14 msgid "Vertical" msgstr "Bertikala" #: setup/setup.ui:25 msgid "Top left corner" msgstr "" #: setup/setup.ui:28 msgid "Top right corner" msgstr "" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "" #: setup/setup.ui:37 msgid "Custom" msgstr "Pertsonalizatua" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "Beti" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Hurrengo sarrera metodoa" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Aurreko sarrera metodoa" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Gaitu edo desgaitu:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Gaitu:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Desgaitu:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Erabili letra-tipo pertsonalizatua:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Letra-tipoa eta estiloa" #: setup/setup.ui:579 msgid "General" msgstr "Orokorra" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Kendu" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "_Gora" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "_Behera" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "Honi _buruz" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Hobespenak" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Erabili letra-tipo pertsonalizatua:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Teklatu-diseinua" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Sarrera metodo orokorraren ezarpenak" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Aurreratua" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "" #: setup/setup.ui:1358 msgid "Startup" msgstr "" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Bertikala" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Beste bat" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "It_xi" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "Deskribapena:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "IBus hobespenak" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Asier Iturralde Sarasola " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Hobespenak" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Berrabiarazi" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/sr@latin.po0000644000000000000000000025267413623751602012211 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:49+0000\n" "Last-Translator: Miloš Komarčević \n" "Language-Team: Serbian \n" "Language: sr@latin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Upotrebi prilagođeni font" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Koristi prilagođeni font za jezički panel" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Naziv prilagođenog fonta za jezički panel" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "Naziv prilagođenog fonta za jezički panel" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "Drugo" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "Izaberite metodu unosa" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "O_dustani" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "U _redu" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "O programu" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Zatvori" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Izaberite metodu unosa" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Dodaj" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus postavke" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Prečice tastature" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Kod tastera:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modifikatori:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Primeni" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Obriši" #: 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 "" "Pritisnite taster (ili kombinaciju tastera).\n" "Prozorče će biti zatvoreno kada se taster otpusti." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Pritisnite taster (ili kombinaciju tastera)" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Izaberite prečicu tastature za %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "" #: setup/setup.ui:14 msgid "Vertical" msgstr "" #: setup/setup.ui:25 msgid "Top left corner" msgstr "" #: setup/setup.ui:28 msgid "Top right corner" msgstr "" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "" #: setup/setup.ui:37 msgid "Custom" msgstr "" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Sledeća metoda unosa:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Uključi ili isključi:" #: setup/setup.ui:238 msgid "Enable:" msgstr "" #: setup/setup.ui:291 msgid "Disable:" msgstr "" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Prečice tastature" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Orijentacije kandidata:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Font i stil" #: setup/setup.ui:579 msgid "General" msgstr "Opšte" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Ukloni" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "_Gore" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "_Dole" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "_O programu" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "" #: setup/setup.ui:754 msgid "_Preferences" msgstr "Pos_tavke" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Izaberite metodu unosa" #: setup/setup.ui:1298 msgid "Advanced" msgstr "" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Inteligentna magistrala unosa\n" "Matična stranica: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Pokreni ibus pri prijavi" #: setup/setup.ui:1358 msgid "Startup" msgstr "Pokretanje" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Drugo" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Zatvori" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "IBus postavke" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus je inteligentna magistrala unosa za Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Serbian " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Postavke" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Pokreni ponovo" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/mr.po0000644000000000000000000030710613623751601011041 00000000000000# Marathi translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2018 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2018-02-20 04:23-0500\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Marathi \n" "Language: mr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 3.9.6\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "प्रीलोड इंजीन्स्" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus सुरू होतेवेळी इंजीन आधिपासूनच लोड करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "इंजिनचे क्रम" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "इंपुट मेथड सूचमध्ये इंजिनचे क्रम साठवे" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME स्वीचर पटलकरिता डिले मिलिसेकंद पॉपअप करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "आवृत्ती क्रमांक साठवले" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "लॅटिन मांडणी ज्याकडे ASCII नाही" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "लॅटिन मांडणीमध्ये US मांडणी समावेश केली आहे. वेरिएंट आवश्यक नाही." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmapचा वापर करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "ibus इंजिन्सचा वापर करतेवेळी, xmodmap किंवा .Xmodmap अस्तित्वात असल्यास xmodmap " "चालवा." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "प्रणाली कळफलक मांडणीचा वापर करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "प्रणाली कळफलक (XKB) मांडणीचा वापर करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "प्रिएडीट मजकूर एम्बेड करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "ऍप्लिकेशन पटलात प्रिएडीट मजकूर एम्बेड करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "ग्लोबल इंपुट पद्धत नीवडा" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "सर्व ऍप्लिकेशन्स् मध्ये एकसारखेच इंपुट पद्धत शेअर करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "पूर्वनितर्धारीतपणे इंपुट पद्धत सुरू करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "ऍप्लिकेशनला इंपुट फोकस प्राप्त झाल्यावर इंपुट पद्धत पूर्वनिर्धारीतपणे सुरू करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf प्रिझर्व्ह नेम प्रिफिक्सेस्" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "नाव रूपांतर थांबवण्याकरीता DConf किज्चे प्रिफिक्सेस्" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "शॉर्टकट किज् ट्रिगर करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "इंपुट पद्धत सुरू किंवा बंद करण्यासाठी शार्टकट किज्" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse करिता शॉर्टकट किज सुरू करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "शार्टकट किज् सुरू करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "इंपुट पद्धती सुरू करण्यासाठी शार्टकट किज्" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "शार्टकट किज् बंद करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "इंपुट पद्धती बंद करण्यासाठी शार्टकट किज्" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "पुढील इंजीनचे शार्टकट किज्" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "सूचीतील पुढील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "मागील इंजीनचे शॉर्टकट किज्" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "मागील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "स्वयं लपवा" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "गुणधर्म पटलाचे वर्तन. 0 = दाखवू नका, 1 = स्व छुपे करा, 2 = नेहमी दाखवा" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "भाषा पटलचे स्थान" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "पटल नेहमी दाखवले जात असल्यास इंपुट कर्सरचे पालन करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "गुणधर्म पटल दाखवण्याकरिता मिलिसेकंद" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "फोकस-इन किंवा गुणधर्म बदलवण्यानंतर, गुणधर्म पटल दाखवण्याकरिता मिलिसेकंद." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "लुकअप टेबलचे निर्देशन" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "लुकअप टेबलचे निर्देशन. 0 = Horizontal, 1 = Vertical" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "चिन्ह प्रणाली ट्रेवर दाखवा" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "इंपुट पद्धतीचे नाव दाखवा" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "भाषा पट्टीवरील इंपुट पद्धतीचे नाव दाखवा" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB चिन्हाचे RGBA मूल्य" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "स्वपसंत फॉन्ट वापरा" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "भाषा पटल करीत स्वपसंत फॉन्ट नाव वापरा" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "मनपसंत फॉन्ट" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "भाषा पटल करीता स्वपसंत फॉन्ट नाव" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse करिता शॉर्टकट किज सुरू करा" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "इंपुट पद्धत सुरू किंवा बंद करण्यासाठी शार्टकट किज्" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "इतर" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "रद्द करा (_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "ठिक आहे (_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "आणखी…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "विषयी" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "बंद करा (_C)" #: 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 "इंपुट पद्धत नीवडा" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "समावेष करा (_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "इंपुट पद्धत" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus आवड निवड" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "मागील इंपुट पद्धतीचा वापर करण्यासाठी शिफ्टसह शार्टकटचा वापर करा" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus डिमन सुरू नाही. तुम्हाला ते सुरू करायचे?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus डिमन %d सेकंदात सुरू करणे अशक्य" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s करीता कळफलक शार्टकट नीवडा" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "इंपुट पद्धतींचा वापर करत आहे" #: setup/setup.ui:11 msgid "Horizontal" msgstr "आडवे" #: setup/setup.ui:14 msgid "Vertical" msgstr "उभे" #: setup/setup.ui:25 msgid "Top left corner" msgstr "वरील डावा कोपरा" #: setup/setup.ui:28 msgid "Top right corner" msgstr "वरील उजवा कोपरा" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "तळापासून डावा कोपरा" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "तळापासून उजवा कोपरा" #: setup/setup.ui:37 msgid "Custom" msgstr "मनपसंत" #: setup/setup.ui:48 msgid "Do not show" msgstr "पुन्हा दाखवू नका" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "स्व छुपे करा" #: setup/setup.ui:54 msgid "Always" msgstr "नेहमी" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "सूचीतील पुढची इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" #: setup/setup.ui:115 msgid "Next input method:" msgstr "पुढची इंपुट पद्धत:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "सूचीतील मागील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "मागील इंपुट पद्धत:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "कार्यान्वीत करा किंवा अकार्यान्वीत करा:" #: setup/setup.ui:238 msgid "Enable:" msgstr "सुरू करा:" #: setup/setup.ui:291 msgid "Disable:" msgstr "बंद करा:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "कळफलक शार्टकट" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "लुकअप टेबल मधील घटकांचे निर्देशन ठरवा" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "घटकांचे निर्देशन:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "भाषा पट्टी कसे दाखवायचे किंवा लपवायचे यासाठी ibus चे वर्तन ठरवा" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "गुणधर्म पटल दाखवा:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "भाषा पटलाचे स्थान:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "चेकबॉक्स नीवडल्यानंतर भाषा पट्टीवरील इंपुट पद्धतीचे नाव दाखवा" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "ऍप्लिकेशन पटलात प्रिएडीट मजूकर एम्बेड करा" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "ऍप्लिकेशन पटलात इंपुट पद्धतीचे प्रिएडीट मजकूर एम्बेड करा" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "मनपसंत फॉन्टचा वापर करा:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "फॉन्ट व शैली" #: setup/setup.ui:579 msgid "General" msgstr "सर्वसाधारण" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "नीवडलेली इंपुट पद्धत कार्यक्षम इंपुट पद्धतींमध्ये समावेश करा" #: setup/setup.ui:682 msgid "_Remove" msgstr "काढूण टाका (_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "कार्यक्षम इंपुट पद्धतीपासून नीवडलेली इंपुट पद्धत काढून टाका" #: setup/setup.ui:700 msgid "_Up" msgstr "वर (_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "कार्यक्षम इंपुट पद्धतींमध्ये नीवडलेली इंपुट पद्धत वर सरकवा" #: setup/setup.ui:718 msgid "_Down" msgstr "खाली (_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "कार्यक्षम इंपुट पद्धतींमध्ये नीवडलेली इंपुट पद्धत खाली सरकवा" #: setup/setup.ui:736 msgid "_About" msgstr "विषयी(_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "नीवडलेल्या इंपुट पद्धत विषयी माहिती दाखवा" #: setup/setup.ui:754 msgid "_Preferences" msgstr "आवड निवड (_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "नीवडलेल्या इंपुट पद्धतीची मांडणी दाखवा" #: setup/setup.ui:812 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 "" " कळफलक शॉर्टकट किज दाबून किंवा पटलावरील चिन्ह क्लिक करून वरील सूचीपासून " "पसंत केलेल्या सक्रीय इंपुट पद्धतीचा वापर शक्य आहे." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "इंपुट पद्धत सुरू किंवा बंद करण्यासाठी शार्टकट किज्" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "मनपसंत फॉन्टचा वापर करा:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "कळफलक मांडणी" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "ग्लोबल इंपुट पद्धत सेटिंग्स्" #: setup/setup.ui:1298 msgid "Advanced" msgstr "प्रगत" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "प्रवेशवेळी ibus सुरू करा" #: setup/setup.ui:1358 msgid "Startup" msgstr "स्टार्टअप" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "फक्त इंजिन नाव सूचीत दाखवा" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus शी जोडणी अशक्य.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "भाषा: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "इंजिन ठरवले नाही.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "ग्रोबल इंजिन ठरवण्यास अपयशी.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "ग्रोबल इंजिन ठरवण्यास अपयशी.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "प्रणाली रेजिस्ट्रि कॅशे वाचा." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "रेजिस्ट्रि कॅशे FILE वाचा." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "रेजिस्ट्रि कॅशे अवैध आहे.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "प्रणाली रेजिस्ट्रि कॅशे लिहा." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "रेजिस्ट्रि कॅशे FILE लिहा." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "पुन्हा सेट करत आहे…" #: tools/main.vala:399 msgid "Done" msgstr "पूर्ण झाले" #: tools/main.vala:444 msgid "Set or get engine" msgstr "इंजिन सेट किंवा प्राप्त करा" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon पासून बाहेर पडा" #: tools/main.vala:446 msgid "Show available engines" msgstr "उपलब्ध इंजिन्स दाखवा" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(लागू केले नाही)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon पुन्हा सुरू करा" #: tools/main.vala:449 msgid "Show version" msgstr "आवृत्ती दाखवा" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "रेजिस्ट्रि कॅशेमधील अंतर्भुत माहिती दाखवा" #: tools/main.vala:451 msgid "Create registry cache" msgstr "रेजिस्ट्रि कॅशे निर्माण करा" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon च्या D-Bus पत्त्याची छपाई करा " #: tools/main.vala:453 msgid "Show the configuration values" msgstr "संरचना मूल्ये दाखवा" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "संरचना मूल्य मूळस्थितीत आणा" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "ही माहिती दाखवा" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "वापर: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "आदेश:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s अपरिचीत आदेश आहे!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "बंद करा (_C)" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "Linux/Unix करीता IBus हे एक हुशार इनपुट बस आहे." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "संदिप शेडमाके , 2009; संदिप शेडमाके , 2009, 2010." #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "आवड निवड" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "पुन्हा चालू करा" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "बाहेर पडा " #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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" #~ msgid "IBus Update" #~ msgstr "IBus सुधारणा" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Super+space आत्ता पूर्वनिर्धारित हॉटि आहे." ibus-1.5.22/po/he.gmo0000644000000000000000000003604713623751603011170 00000000000000\ p q    #    o :<@}   HNd k#w  ((-@VD# +99J .0     @*Ck9 E)K^u0 .@%Pv&?QY(m9$1^2-!&8@_'" #87Op'Q:Z@D)Dn<.-4M/ 'AR>j  .5:A GT\ ` lz\!t!!!8!!!"u.""#U# $$$'$"C$ f$$$ $$Q%g% %=%,% && 7&C&'S&?{&?&V&.R'd''( !(-(A(SR(((( ((I)7O)?**+++++++ ,",8,SM,S,',-9- L-Bm--=--Qu. .T. )/9J/+//&/ /0 0S@000;001131e111]1> 2EL22%272&33.3Vb3!3;3"4:4 P45]4>44?R5{56.6L6P7Jl7N728298Gl8"8 8 8;9U9-u9K909- :cN:>:8:*;3; R;s; ; ; ; ; ; ; ; ;;%<cL\@zK3W=ymfj5|<&S^*!gG`N2Mk;1[ ?$B},En>%qCt_p-H/ O R8uAI# : 9DFdh(wx6)v~{]Y0.r4lP+bQTZaUoei'VX7"sJ%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.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.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s List engine name onlyModifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsRestartRestart ibus-daemonSaved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutVerticalWrite the registry cache FILE.Write the system registry cache._About_Add_Close_Down_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2020-01-05 18:49+0000 Last-Translator: Yaron Shahrabani Language-Team: Hebrew Language: he MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Weblate 3.9.1 %s is unknown command! (Not implemented)…גופן וסגנוןהגדרות גלובליות לשיטות קלטפריסת מקלדתקיצורי מקלדתהתחלהIBus אפיק הקלט החכם דף הבית: https://github.com/ibus/ibus/wiki ניתן להחליף את שיטת הקלט באופן מחזורי מתוך הנבחרות שברשימה הבאה על ידי לחיצה על מקשי הקיצור במקלדת או על ידי לחיצה על הסמל שבלוח.על אודותלהוסיף את שיטת הקלט הנבחרת לשיטות הקלט הפעילותמתקדםתמידיצירה: %s הסתרה אוטומטיתפינה שמאלית תחתונהפינה ימנית תחתונהCan't connect to IBus. כיוון המועמדים:Commands: כל הזכויות שמורות (c) 2007‏-2010 פנג הואנג כל הזכויות שמורות (c) 2007‏-2010 רד הט בע״מ.Create registry cacheבהתאמה אישיתגופן בהתאמה אישיתשם גופן בהתאמה אישית לחלונית גופןשימור קידומות שמות ב־DConfתיאור: השבתת מקשי קיצורהשבתה:לא להציגהטעמת טקסט שנערך מראשהטמעת טקסט שנערך מראש בחלון היישוםהטמעת טקסט שנערך מראש בחלון היישוםהטמעת הטקסט שנערך מראש של שיטת קלט בחלון היישוםהפעלת שיטת קלט כבררת מחדלהפעלת שיטת שלט כבררת מחדל כאשר היישום מקבל מיקוד על קלטהפעלה או השבתה:הפעלת מקשי קיצורהפעלה:סדר מנועיםExit ibus-daemonלעקוב אחר סמן הקלט במקרה שהחלונית תמיד מופיעהכלליGet global engine failed. להסתיר אוטומטיתאופקיהעדפות IBusלא ניתן להפעיל את הסוכן של IBus תוך %d שניותIBus הופעל! אם אין לך אפשרות להשתמש ב־IBus, עליך להוסיף את השורות הבאות אל ‎$HOME/.bashrc;‎ ואז להיכנס מחדש לשולחן העבודה עם המשתמש שלך. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus היא אפיק קלט חכם ללינוקס/יוניקס.אם true (אמת), החלונית עוקבת אחר סמן הקלט במקרה שהחלונית מופיעה תמיד. אם false (שקר), החלונית מופיעה במקום קבוע.שיטת קלטKbdקוד מקש:פריסת מקלדת: %s קיצורי מקלדתמיקום חלונית שפהמיקום לוח השפה:שפה: %s List engine name onlyמקשי החלפה:להוריד את שיטת הקלט ברשימת שיטות הקלט הפעילותלהעלות את שיטת הקלט ברשימת שיטות הקלט הפעילותמקשי הקיצור למנוע הבאשיטת הקלט הבאה:No engine is set. כיוון טבלת החיפושכיוון טבלת החיפוש. 0 = אופקית, 1 = אנכיתאחרנא ללחוץ על מקש (או על צירוף מקשים)נא ללחוץ על מקש (או על צירוף מקשים). תיבת הדו־שיח תיסגר עם שחרור המקשים.השהיית חלונית קופצת במילישניות לחלון בורר IMEהעדפותקידומות של מפתחות ב־DConf להפסקת המרת שמות עבורןלטעון מנועים מראשלטעון מנועים במהלך הטעינה של ibusמקשי הקיצור למנוע הקודםשיטת הקלט הקודמת:Print the D-Bus address of ibus-daemonיציאהRead the registry cache FILE.Read the system registry cache.להסיר את שיטת הקלט הנבחרת משיטות הקלט הפעילותהפעלה מחדשRestart ibus-daemonסדר מנועים שמור ברשימת שיטות קלטמספר גרסה שמורנא לבחור שיטת קלטנא לבחור קיצור מקלדת עבור %sהגדרת העדפות IBusSet global engine failed. Set or get engineהגדרת ההתנהגות של ibus בנוגע להצגת או הסתרת סרגל השפההגדרת כיוון המועמדים בטבלת החיפושלשתף את אותה שיטת הקלט בין כל היישומיםShow available enginesהצגת סמל במגש המערכתלהציג מידע על שיטת הקלט הנבחרתלהציג את שם שיטת הקלטהצגת שם שיטת הקלט בסרגל השפהלהציג את שם שיטת הקלט בסרגל השפה כשהתיבה מסומנתהצגת לוח מאפיינים:להציג את הגדרות שיטת הקלט הנבחרתShow the content of registry cacheShow this informationShow versionלהפעיל את ibus עם הכניסה למערכתהסוכן של IBus אינו פעיל. להפעיל אותו?התנהגות חלונית המאפיינים. 0 = לא להציג, 1 = להסתיר אוטומטית, 2 = להציג תמידהמילישניות להצגת חלונית המאפייניםהמילישניות להצגת חלונית מאפיינים לאחר שינויים במיקוד או במאפיינים.The registry cache is invalid. מספר הגרסה השמור ישמש לבדוק את ההבדל בין הגרסה של ה־ibus הקודם שהותקן לזאת של ה־ibus הנוכחי.מקשי הקיצור להחלפה לשיטת הקלט הבאה ברשימהמקשי הקיצור להחלפה לשיטת הקלט הקודמת ברשימהמקשי הקיצור למעבר לשיטת הקלט הבאה ברשימהמקשי הקיצור למעבר לשיטת הקלט הקודמת ברשימהמקשי הקיצור לכיבוי שיטת קלטמקשי הקיצור להפעלת שיטת קלטמקשי הקיצור להפעלה או השבתה של שיטת קלטפינה שמאלית עליונהפינה ימנית עליונהמקשי קיצור להקפצהמקשי קיצור להקפצה של gtk_accelerator_parseUsage: %s COMMAND [OPTION...] להשתמש בגופן מותאם אישיתלהשתמש בשם של גופן בהתאמה אישית ללוח השפהלהשתמש בגופן בהתאמה אישית:להשתמש בשיטת קלט גלובליתיש להשתמש במקש קיצור עם shift כדי לעבור לשיטת הקלט הקודמתלהשתמש בפריסת המקלדת של המערכת (XKB)להשתמש בפריסת המקלדת של המערכתאנכיWrite the registry cache FILE.Write the system registry cache.על _אודותהו_ספה_סגירהלמ_טההע_דפותהס_רהלמ_עלהdefault:RTLlanguage: %s החלפת שיטות קלטYaron Shahrabani ibus-1.5.22/po/pt.po0000644000000000000000000025511613623751602011052 00000000000000# Portuguese translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2019 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Manuela Silva , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: ibus 1.5.21\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2019-09-16 11:26+0000\n" "Last-Translator: Manuela Silva \n" "Language-Team: Portuguese\n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Zanata 4.6.2\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Mecanismos de pré-carregamento" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Mecanismos de pré-carregamento durante o arranque de ibus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Ordem de mecanismos" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Ordem de mecanismos guardados na lista de métodos de entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Número de versão guardado" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Utilizar xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Utilizar disposição do teclado do sistema" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Utilizar disposição do teclado do sistema (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Utilizar método de entrada global" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Ativar método de entrada por predefinição" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Ativar teclas de atalho" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Desativar teclas de atalho" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" #: ibus/_config.py.in:41 msgid "" "Copyright (c) 2007-2010 Peng Huang\n" "Copyright (c) 2007-2010 Red Hat, Inc." msgstr "" "Direitos de Autor (c) 2007-2010 Peng Huang\n" "Direitos de Autor (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Outros" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Selecione um idioma" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Cancelar" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Mais…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Sobre" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Fechar" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Idioma: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Disposição do teclado: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Descrição:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Selecione um método de entrada" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Adicionar" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Método de Entrada" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Preferências de IBus" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Definir Preferências de IBus" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Atalhos de teclado" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "" #. 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 "" #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horizontal" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertical" #: setup/setup.ui:25 msgid "Top left corner" msgstr "" #: setup/setup.ui:28 msgid "Top right corner" msgstr "" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "" #: setup/setup.ui:37 msgid "Custom" msgstr "" #: setup/setup.ui:48 msgid "Do not show" msgstr "Não mostrar" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Ocultar automaticamente" #: setup/setup.ui:54 msgid "Always" msgstr "Sempre" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Ativar ou desativar:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Ativar:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Desativar:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Atalhos de Teclado" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "" #: setup/setup.ui:579 msgid "General" msgstr "Geral" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Remover" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "Para _Cima" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "Para _Baixo" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "_Sobre" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Mostrar informação do método de entrada selecionado" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Preferências" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Anotação de emoji:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emoji" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Atalhos de Teclado" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Definições globais do método de entrada" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Avançado" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Iniciar ibus ao iniciar a sessão" #: setup/setup.ui:1358 msgid "Startup" msgstr "Arranque" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Atividades" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Animais e Natureza" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Componente" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Bandeiras" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Comida e Bebidas" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Objetos" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Símbolos" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Viagem e Locais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "Extensões de IPA" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Suplemento de Mongolian " #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Dogra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Warang Citi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "Nandinagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Zanabazar Square" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Soyombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Masaram Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Gunjala Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Makasar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "Suplemento de Tamil" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mro" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Bassa Vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Medefaidrin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Miao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Tangut" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Componentes de Tangut" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Suplemento de Kana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Nushu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Duployan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Sutton SignWriting" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Suplemento de Glagolitic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "Nyiakeng Puachue Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "Wancho" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Mende Kikakui" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Cartas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Emoticons" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "A redefinir..." #: tools/main.vala:399 msgid "Done" msgstr "Concluído " #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "Mostrar mecanismos disponíveis" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Não implementado)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "Mostrar versão" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Mostrar os valores da configuração" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Redefinir os valores da configuração" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Guardar emoji na janela para a área de transferência" #: tools/main.vala:458 msgid "Show this information" msgstr "Mostrar esta informação" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Comandos:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Favoritos" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Outros" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Página para Baixo" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Página para Cima" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Mostrar variantes de emoji" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Fechar" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Menu" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Clique para ver uma mensagem de aviso" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "A carregar um dicionário Unicode:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Tem variantes de emoji" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Descrição: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Nenhum" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Anotações: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Nome: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Cancelado para escolher um emoji." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Copiado um emoji para a sua área de transferência." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Manuela Silva " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Preferências" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Reiniciar" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "predefinição:LTR" ibus-1.5.22/po/Rules-quot0000644000000000000000000000423313623751246012066 00000000000000# This file, Rules-quot, can be copied and used freely without restrictions. # Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-create: $(MAKE) en@quot.po-update en@boldquot.po-create: $(MAKE) en@boldquot.po-update en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) $(MSGINIT_OPTIONS) -i $(DOMAIN).pot --no-translator -l $$lang -o - 2>/dev/null \ | $(SED) -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | \ { case `$(MSGFILTER) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-8] | 0.1[0-8].*) \ $(MSGFILTER) $(SED) -f `echo $$lang | sed -e 's/.*@//'`.sed \ ;; \ *) \ $(MSGFILTER) `echo $$lang | sed -e 's/.*@//'` \ ;; \ esac } 2>/dev/null > $$tmpdir/$$lang.new.po \ ; then \ if cmp $$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 "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header ibus-1.5.22/po/en@quot.header0000644000000000000000000000226313623751246012651 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # ibus-1.5.22/po/pt_BR.gmo0000644000000000000000000012540213623751604011575 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIf*h<Chhhhh4hii6iMiij jJjj jjjk k$$kIkPkjkkkkkkk+k#l#@ldlvll llllll l ll l lmmm1mIm`mrmym mmmmmm! n/+n[n vnnn%n%n%o%*o%Po%vo%oooopp p%p.pBpOVpp1qqr#r8r)Wr,r-rr rr s'sEs1YsssHsst !t",tOt btptAt4tt uu/uEu[u*pu'u uuu uu vv 1v >vKvQv cvnvwv.vvvvv5w6=wMtwwwww7 x6Cx zx(xVxyy 2y!=y_ywyyyyyyyzz"z { %{E/{u{{{{{ {{{%| )|6|N|V|^| n||| ||!|"| ||}}-}@}H}d}k}t}$}}} } }}7}5~?_&n%j&€Ԁ$-4EU\lu!~ց   > ^jsÂՂ&!(GMVj ~7M܃5*`"Dg~ †͆ Նke=ч56E%| ˈ ׈  ";!@!b Ӊ2Q:P݊ 27? H Ta$fƋ͋ (8O _l| #"ی@?E[aipw  ƍՍݍ$ 13@ltA #1<M1"ҏ(;P`e##ɐQА%"H Wax\ 7 6E|%ɒ< ;J)ɓQ=@AH#Օ+6"U7x_70#h'͗ޗ +EX an$v #ɘ 3I%_%"Ù" " /$9^g{Қؚߚ  @$ne6ԛk Dw@" LILL@@ڟA6]3?ȠKXTǡߡ&3>Nr ̢ߢ3.<9kģ:ݣe4J(#- Q^b%zԥ ۥAq)''æ F0\wԩ   #'6? F5R* &۪JWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2020-01-05 18:49+0000 Last-Translator: Rafael Fontenelle Language-Team: Portuguese (Brazil) Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 3.9.1 "FONTE" para caracteres no diálogo emoji"LANG" para anotações em diálogo emoji. Por exemplo, "en"%s é um comando desconhecido! (Não implementado)...Fonte e estiloConfigurações globais de método de entradaLayout do tecladoAtalhos de TecladoInicializaçãoIBus O barramento de entrada inteligente Página inicial: https://github.com/ibus/ibus/wiki O método de entrada ativo pode ser alternado com os selecionados na lista acima pressionando as teclas do atalho de teclado ou clicando no ícone do painel.SobreAtividadesAdiciona o método de entrada selecionado nos métodos de entrada ativadosAdlamAvançadoNúmeros EgeusAhomSímbolos alquímicosApelido: %sFormas de apresentação alfabéticaSempreHieróglifos da anatóliaNotação musical grega antigaNúmeros gregos antigosSímbolos antigosAnimais & naturezaAnotações: %sÁrabeÁrabe estendido ASímbolos alfabéticos matemáticos árabesFormas de apresentação arábica-AFormas de apresentação arábica-BSuplemento árabeArmênioSetasAutor: %s Ocultar automaticamenteAvestanBalinêsBamumSuplemento BamumLatim básicoBassa VahBatakBengalêsBhaiksukiElementos de blocoBopomofoBopomofo estendidoCanto inferior esquerdoCanto inferior direitoDesenhos de caixaBrahmiPadrões braileTrazer de volta escolha de emojiBuginêsBuhidSímbolos musicais bizantinosCompatibilidade CJKFormas de compatibilidade CJKIdeogramas de compatibilidade CJKSuplemento de ideogramas de compatibilidade CJKSuplemento de radicais CJKTraços CJKSímbolos e pontuação CJKIdeogramas unificados CJKIdeogramas unificados CJK extensão AIdeogramas unificados CJK extensão BIdeogramas unificados CJK extensão CIdeogramas unificados CJK extensão DIdeogramas unificados CJK extensão EIdeogramas unificados CJK extensão FNão foi possível conectar ao IBus. Escolha de um emoji cancelada.Orientação dos candidatos:CarianAlbanês caucasianoChakmaChamCherokeeSuplemento cherokeeSímbolos em xadrezEscolher uma condição para corresponder parcialmente às anotações de emojiEscolha o idioma padrão para os dicionários emoji no diálogo emoji. O valor $lang é aplicado em /usr/share/ibus/dicts/emoji-$lang.dictEscolha uma das seguintes condições para corresponder parcialmente às anotações de emoji: 0 == Correspondência de prefixo, 1 == Correspondência de sufixo, 2 == Correspondência de correspondênciaClique para visualizar o avisoFecharPonto de código: %sMarcas diacríticas combinadasMarcas diacríticas combinadas estendidasSuplemento de marcas diacríticas combinadasMarcas diacríticas combinadas para símbolosMeias marcas combinadasComandos: Formatos numéricos índicosComponenteCorrespondência de conteúdoFiguras de controleEmoji copiado para a sua área de transferência.CoptaNúmeros de cóptico epactaCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Barras de contarCria um cache de registroCuneiformeNúmeros e Pontuação cuneiformesSímbolos de moedaPersonalizadoFonte personalizadaNome da fonte customizada para caracteres emoji no diálogo emojiNome de fonte personalizada para o painel de idiomasSilabário cipriotaCirílicoCirílico estendido ACirílico estendido BCirílico estendido CSuplemento cirílicoPrefixos de nome de preservação do DConfIdioma padrão para o dicionário emojiDescrição: Descrição: %sDeseretDevanágariDevanágari estendidoDingbatsDesabilitar teclas de atalhoDesabilitar:Não mostrarDograPeças de dominóConcluídoDuployéCuneiforme pré-dinásticoControles de formato de hieróglifos egípciosHieróglifos egípciosElbasanElymaicEmbutir texto de pré-ediçãoEmbute texto de pré-edição na janela do aplicativoEmbutir texto de pré-edição na janela do aplicativoEmbute o texto de pré-edição do método de entrada na janela do aplicativoEmojiEscolha do emojiIdioma de anotação de emoji:Anotações emoji:Anotações emoji podem ser correspondidas parcialmenteTeclas de atalho de emoji para o gtk_accelerator_parseEmoticonsHabilitar método de entrada por padrãoHabilita método de entrada por padrão quando o aplicativo obtiver o foco de entradasAtiva ou desativa:Habilitar teclas de atalhoHabilitar:Suplemento alfanumérico contidosAlfanuméricos contidosLetras e meses CJK contidosSuplemento ideográfico contidoOrdem dos motoresEtíopeEtíope estendidoEtíope estendido-ASuplemento etíopeEncerra o ibus-daemonFONTEFalha ao obter o aplicativo de texto atual. Mude o foco para seu aplicativo novamente. Por exemplo, pressione a tecla Esc várias vezes para liberar o modo de digitação emoji, clique na área de trabalho e clique no aplicativo de texto novamente.FavoritosBandeirasSiga o cursor de entrada no caso do painel estar sendo sempre exibidoComida & bebidaGeralPontuação GeralFormas GeométricasFormas geométricas estendidasGeorgianoExtensão georgianaSuplemento georgianoA obtenção de motor global falhou. GlagolíticoSuplemento glagolíticoGóticoGranthaGrego estendidoGrego e CoptaGuzerateGunjala GondiGurmukhiFormas de meia e completa larguraHangul com Jamo de compatibilidadeHangul JamoHangul Jamo estendido AHangul Jamo estendido BSílabas HangulHanifi de RohingyaHanunooPossui variações de emojiHatranHebraicoOcultar automaticamenteSubstituições altas de uso privadoSubstituições altasHiraganaHorizontalPainel IBusPreferências do IBusO daemon do IBus não pôde ser iniciado em %d segundosO 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. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus é um barramento de entrada inteligente para o Linux/Unix.Extensões IPACaracteres de descrição ideográficaSímbolos e pontuação ideográficosSe as anotações de emoji puderem corresponder a uma sequência parcial, em vez da correspondência exataSe verdadeiro, o painel seguirá o cursor de entrada no caso do painel estar sendo sempre exibido. Se falso, o painel é exibido em uma localização fixa.Aramaico imperialNúmeros de Siyaq indianoMétodo de entradaPálavi inscritoPártico inscritoJavanêsKaithiKana estendido-ASuplemento kanaKanbunRadicais KangxiCanarêsKatakanaExtensões fonéticas de katakanaKayah LiKbdCódigo de tecla:Layout do teclado: %s Atalhos do tecladoKharoshthiKhmerSímbolos KhmerKhojkiKhudawadiLANGPosição do painel de idiomaPosição do painel de idiomas:Idioma: %s LaosianoLatim estendido adicionalLatim estendido ALatim estendido BLatim estendido CLatim estendido DLatim estendido-ELayouts latinos que não contêm ASCIILatim-1 suplementoLepchaSímbolos parecidos com letrasLimbuLinear AIdeogramas linear BSilabário linear BSomente o Nome do motor da listaLisuCarregar os dados Unicode no momento da inicializaçãoCarrega os dados Unicode no momento da inicialização, se verdadeiro. São necessários cerca de 15 MB de memória para carregar os dados. Carrega os dados Unicode quando abrir a caixa de diálogo emoji no início, se falso. Os dados Unicode sempre são carregados após os dados emoji serem carregados, mesmo que sejam verdadeiros.Carregar os dados emoji no momento da inicializaçãoCarrega os dados de emoji no momento da inicialização, se verdadeiro. São necessários cerca de 10 MB de memória para carregar os dados. Carrega os dados do emoji quando abrir a caixa de diálogo emoji no início, se falso.Carregando um dicionário Unicode:Substituições baixasLícioLídioMahajaniPeças do MahjongMakassarMalaialaMandaicoManiqueanoMarchenMasaram GondiCombina as anotações emoji parcialmente com mais do que o número especificado de caracteres, em vez da correspondência exata.Combinar as anotações de emoji parcialmente com a seguinte condição e mais que o número de caracteres:Corresponder anotações emoji com o comprimento especificadoCorresponder com a condição do inteiro especificadoCorresponder com o comprimento do inteiro especificadoSímbolos matemáticos alfanuméricosOperadores matemáticosNumeração maiaMedefaidrinMeetei MayekExtensões Meetei MayekMende KikakuiMenuMeroítica cursivaHieróglifos meroíticosMiaoSímbolos Matemáticos Variados-ASímbolos matemáticos variados-BSímbolos VariadosSímbolos variados e setasSímbolos diversos e pictogramasTécnico diversosModiLetras modificadoras de tomModificadores:MongolSuplemento mongolianoMais…Move o método de entrada selecionado para baixo nos métodos de entrada ativadosMove para cima o método de entrada selecionado na lista dos métodos de entradaMroMultaniSímbolos musicaisBirmanêsBirmanês estendido-ABirmanês estendido-BN'KoNabateuNome: %sNandinagariTai Lü NovoNewaAtalhos de teclado do próximo motorPróximo método de entrada:Nenhum motor está definido. NenhumFormulários de númerosNushuNyiakeng Puachue HmongObjetosOgamSantaliHúngaro antigoItálico antigoÁrabe do norte antigoPérmico antigoPersa antigoSogdiano antigoÁrabe do sul antigoTurco antigoAbrir escolha de UnicodeReconhecimento óptico de caractereOrientação da tabela de pesquisaOrientação da tabela de pesquisa. 0 = Horizontal, 1 = VerticalOriáSímbolos ornamentaisOsageOsmanyaOutrosOutrosNúmeros de Siyaq otomanoPage DownPage UpPahawh HmongPalmirenoPau Cin HauPessoa & corpoPhagspaDisco de FestosFenícioExtensões FonéticasExtensões Fonéticas ComplementaresJogo de cartasPressione uma tecla (ou uma combinação de teclas)Pressione uma tecla (ou uma combinação de teclas). O diálogo será encerrado quando a tecla for liberada.Milissegundos de atraso do pop-up para a janela de alternador IMEPreferênciasCorrespondência de prefixoPrefixos das chaves do DConf para parar a conversão do nomePré-carregar motoresCarrega motores durante a inicialização do ibusTeclas de atalho do motor anteriorMétodo de entrada anterior:Imprime o endereço D-Bus do ibus-daemonÁrea de uso privadoPálavi psalterSairValor RGBA de um ícone XKBLê o ARQUIVO de cache de registro.Lê o cache de registro do sistema.RejangRemova o método de entrada selecionado a partir dos métodos de entrada ativadosRedefine os valores de configuraçãoRedefinindo…ReiniciarReinicia o ibus-daemonSímbolos numéricos RumiExecutar xmodmap se .xmodmap ou .Xmodmap existir quando os motores do ibus forem alternados.RúnicoSamaritanoSaurashtraSalva emoji no diálogo para a área de transferência Ordem dos motores salva na lista de método de entradaNúmero da versão salvoSelecione um idiomaSelecione um método de entradaSelecione o atalho de teclado para %sDefinir Preferências do IBusDefine uma fonte de candidatos Unicode no diálogo de emojisDefine um idioma de anotações emoji no diálogo de emojisA configuração do motor global falhou. Define ou obtém o motorDefine o atraso do pop-up em milissegundos para mostrar a janela do comutador IME. O padrão é 400. 0 = Mostra a janela imediatamente. 0 < Atraso em milissegundos. 0 > Não mostra a janela e troca os motores anteriores/próximos.Configure o comportamento do ibus para como mostrar ou ocultar a barra de idiomasConfigure a orientação dos candidatos na tabela de pesquisaSharadaCompartilha o mesmo método de entrada entre todos os aplicativosShavianControles de formato de taquigrafiaMostra os motores disponíveisMostrar variações de emojiMostrar um ícone na área de notificaçãoMostra informações do método de entrada selecionadoMostrar nome do método de entradaMostra o nome do método de entrada na barra de idiomasMostra o nome do método de entrada na barra de idioma quando selecionando a caixa de seleçãoMostrar painel de propriedades:Mostra configuração do método de entrada selecionadoMostra os valores de configuraçãoMostra o conteúdo do cache de registroMostra essa informaçãoMostra a versãoSiddhamCingalêsNúmeros de cingalês arcaicoVariantes de pequenas formasExtensão de kana pequenoSmileys & emoticonSogdianoSora SompengSoyomboLetras modificadoras de espaçamentoEspeciaisIniciar o ibus ao iniciar a sessãoCorrespondência de sufixoSundanêsSuplemento sundanêsSobrescritos e subscritosSetas suplementares-ASetas suplementares-BSetas suplementares-COperadores matemáticos suplementaresPontuação suplementarSímbolos suplementares e pictogramasÁrea de uso privado suplementar-AÁrea de uso privado suplementar-BEscrita de sinais SuttonSyloti NagriSímbolosSímbolos e pictogramas estendidas-ASiríacoSuplemento siríacoTágaloTagbanwaMarcasTai LüTai ThamTailandês vietnamitaSímbolos Tai Xuan JingTakriTâmilSuplemento tamilTangutComponentes tangutTélugoThaanaTailandêsO daemon IBus não está em execução. Você deseja iniciá-lo?O comportamento do painel de propriedades. 0 = Não mostrar, 1 = Ocultar automaticamente, 2 = Sempre mostrarOs milissegundos para exibir as propriedades do painelOs milissegundos para exibir as propriedades do painel após obter foco ou as propriedades foram alteradas.Os milissegundos para exibir o ícone do painel para uma propriedadeOs milissegundos para exibir o ícone do painel através do ícone do motor para um ícone de propriedade sempre que motores são alternados se a propriedade está especificada pelo valor de icon-prop-key em IBusEngineDesc. Se o valor é 0, não há tempo de espera e o ícone da propriedade será exibido imediatamente.O cache de registro é inválido. O número da versão salvo será utilizado para verificar a diferença entre a versão do ibus instalado anteriormente e o da versão atual do ibus.As teclas de atalho para alteração ao próximo método de entrada na listaTeclas de atalho para alteração ao método de entrada anterior da listaAs teclas de atalho para alteração ao próximo método de entrada na listaTeclas de atalho para alteração ao método de entrada anteriorAs teclas de talho para ligar ou desligar digitação em UnicodeAs teclas de atalho para ligar ou desligar a digitação de emojiAs teclas de atalho para desligar o método de entradaAs teclas de atalho para ligar o método de entradaAs teclas de atalho para ligar ou desligar o método de entradaOs atalhos de teclado para habilita conversões de ponto de código UnicodeAs teclas de atalho para habilitar as conversões das anotações emoji ou nomes UnicodeTibetanoTifinaghTirhutaCanto superior esquerdoCanto superior direitoSímbolos de mapa e transporteViagem & lugaresAciona teclas de atalhoAcionar teclas de atalho para gtk_accelerator_parseO layout dos EUA é anexado aos layouts Latinos, variantes podem ser omitidas.UgaríticoEscolha de UnicodePonto de código Unicode:Fonte Unicode:Teclas de atalho Unicode para gtk_accelerator_parseSílabas unificadas dos aborígenes canadensesSílabas estendidas unificadas dos aborígenes canadensesUso: %s COMANDO [OPÇÃO...] Usar fonte personalizadaUsa o nome de fonte personalizada para o painel de idiomasUsar a fonte personalizada:Usa caminhos de esquema de motores em vez do ibus core, que podem ser valores separados por vírgula.Usar método de entrada globalUtilize o atalho com o shift para mudar para o método de entrada anteriorUsa o layout de teclado do sistema (XKB)Usar o layout de teclado do sistemaUsar xmodmapVaiSeletores de variaçãoSuplemento de seletores de variaçãoExtensões védicasVerticalFormulários verticaisWanchoWarang CitiSe as anotações emoji podem ser combinadas parcialmente ou nãoSe as anotações emoji podem ser correspondidas com uma string parcial em vez da correspondência exata ou não.Escreve o ARQUIVO de cache de registro.Escreve o cache de registro do sistema.O ícone XKB exibe a cadeia de caracteres de leiaute e a cadeira de caracteres é apresentada pelo valor RGBA. O valor RGBA pode ser 1. um nome de cor do X11, 2. um valor hexa no formato '#rrggbb' aonde 'r', 'g' e 'b' são dígitos hexa para o red (vermelho), green (verde), e blue (azul), 3. uma cor RGB no formato 'rgb(r,g,b)' ou 4. Uma cor RGBA no formato 'rgba(r,g,b,a)' aonde 'r', 'g', e 'b' são ou inteiros entre 0 e 255 ou valores em porcentagem entre 0% e 100%, e 'a' é um valor em ponto flutuante entre 0 e 1 do alfa.Radicais YiSílabas YiSímbolos hexagramas yijingVocê pode atribuir uma anotação para um emoji favorito nesta lista.Você pode exibir os emojis favoritos na lista de emoji se essa lista tiver algum caractere.Zanabazar Square_Sobre_Adicionar_Aplicar_Cancelar_Fechar_ExcluirA_baixo_OK_Preferências_RemoverA_cimadefault:LTRLista de anotações emoji favorita no diálogo emojilista de emoji favoritos no diálogo emojiidioma: %s mudando métodos de entradaRafael Fontenelle ibus-1.5.22/po/zh_HK.gmo0000644000000000000000000003554513623751604011602 00000000000000<\   #AXro<   2J bHm # .D MY^(q(@D#h{ 9 ' 2=.N}0M~   /BZ s! @C Qk~9)^0v .%2&Ipu?  )6>JR('B9T12 -#Q&h@' "+N dq8O'Q6@6DwD<.>-m4/ C7 {  '   > ;!\! w!!! !!######## ### $ $$3$F$%%&&&=&Q& h&iv&&'3''' ' ' ' '(( 6(JA((( ((( (( ) ))!)*4)*_)<))?)*0* @* J*W*3j*** ** ****+5,x7, ,, ,,,,- -'-G-]- m-w------5.M.-T.a.+. /-/K/$^///#////0310e0 u0 00S0'0$1:1J1g111310132L2b2!~22$2*233;3K3g3 w33B3N3.4TM44r46,56c565656$6*@6 k6 u66+6D6!7%7$87]7s7=77788818M8 : : ": -: 8: C: N: Y:d: u: : : :::dq|DgC~*Y /ou[8UcR%A TGPhW)ax>@7kte`Bv 4+i]$ jnJ^N&El"{mFsy;1O9-K(_}IHSX<\2M5z!L Zrb6fQ0,3wV:=?#'p.%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.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.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Latin layouts which have no ASCIIList engine name onlyModifiers:More…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.Saved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.Usage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2018-02-20 04:23-0500 Last-Translator: Copied by Zanata Language-Team: Traditional Chinese Language: zh_HK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n!=1; X-Generator: Zanata 3.9.6 %s 為未知指令! (尚未實作)...字型與風格全域輸入法設定值鍵盤佈局鍵盤快捷鍵啟動IBus 智慧型輸入框架 首頁: https://github.com/ibus/ibus/wiki 你可以透過按下鍵盤快捷鍵,或是點按面板圖示的方式,來從上列清單中選取的輸入法之中切換使用中的輸入法。關於新增選取的輸入法到已啟用的輸入法內進階總是作者:%s 自動隱藏左下角右下角無法連接至 IBus。 候選詞排列方向:指令: 版權所有 (c) 2007-2010 黃鵬 版權所有 (c) 2007-2010 Red Hat, Inc.建立註冊快取自訂自訂字型為語言面板自訂字型DConf 保留名稱前綴描述: 停用快捷鍵停用:不要顯示完成內嵌編輯模式在應用程式視窗中內嵌編輯模式在應用程式視窗中內嵌編輯模式在應用程式視窗中內嵌輸入法的預先編輯文字預設啟用輸入法當應用程式取得輸入焦點時,預設將輸入法啟用啟用或停用:啟用快捷鍵啟用:引擎順序離開 ibus-daemon在面板總是顯示的情況下跟隨輸入游標通用無法取得全域引擎。 自動隱藏水平IBus 面板IBus 偏好設定IBus 背景程式無法在 %d 秒後啟動IBus 已經啟動了!如果你無法使用IBus,請將下列文字行列新增到你的 $HOME/.bashrc 中;接着重新登入到你的桌面。 export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus 為 Linux/Unix 上的智慧型輸入法框架。若為真,面板會在總是顯示的情況下跟隨輸入游標。若為假,面板則會顯示在固定位置上。輸入法鍵盤按鍵碼:鍵盤佈局:%s 鍵盤快捷鍵語言面板位置語言面板位置:語言:%s 無 ASCII 的拉丁鍵盤佈局只列出引擎名稱組合按鍵:更多…下移所選取的輸入法上移所選取的輸入法「下一個引擎」快捷鍵下一個輸入法:尚未設定引擎。 查選表單表排列方向查詢表單的排列方向。0 = 水平,1 = 垂直其他請按一個鍵盤按鍵 (或是按鍵組合)請按一個鍵盤按鍵 (或是按鍵組合) 當您放開按鍵時,對話框會自動關閉。IME 切換器視窗彈出延遲的毫秒數偏好設定DConf 用來停止名稱轉換的鍵其前綴預先載入引擎當 ibus 啟動時預先載入引擎「上一個引擎」快捷鍵上一個輸入法:列印 ibus-daemon 的 D-Bus 位址結束XKB 圖示的 RGBA 值讀取註冊快取 FILE。讀取系統註冊快取。從已啟用的輸入法中移除所選的輸入法重設組態值重設中…重新啟動重新啟動 ibus-daemon當 ibus 引擎切換時,若 .xmodmap 或 .Xmodmap 存在,則執行 xmodmap。 輸入法清單中儲存的引擎順序儲存的版本號碼選取輸入法為 %s 選取鍵盤快捷鍵設定 IBus 偏好設定無法設定全域引擎。 設定或取得引擎設定 ibus 如何顯示或隱藏語言列的行為設定查詢表單內候選字詞的排列方向在所有的應用程式中共享同一個輸入法顯示可用的引擎在系統匣內顯示圖示顯示所選取的輸入法資訊顯示輸入法名稱在語言列上顯示輸入法名稱當選取時在語言列上輸入法名稱顯示屬性面板:顯示所選輸入法的設置顯示組態值顯示註冊快取的內容顯示此資訊顯示版本在登入時啟動 ibus鍵盤輸入法 (IBus 背景程式) 並未執行。是否啟動?屬性面板的行為。0 = 不要顯示,1 = 自動隱藏,2 = 總是顯示顯示屬性面板的毫秒數當焦點落在屬性面板內,或屬性變更時屬性面板的顯示毫秒數。註冊快取無效。 儲存的版本號碼可以用來查看上次安裝的 ibus 版本與目前安裝的 ibus 版本之間的差異。用來切換到清單內下一個輸入法的快捷鍵用來切換到清單內上一個輸入法的快捷鍵用來切換到清單內下一個輸入法的快捷鍵用來切換到清單內上一個輸入法的快捷鍵關閉輸入法的快捷鍵開啟輸入法的快捷鍵用來開啟或關閉輸入法的快捷鍵左上角右上角觸發用快捷鍵gtk_accelerator_parse 的觸發用快捷鍵US 鍵盤佈局附加到拉丁鍵盤佈局。variant 可被省略。用法:%s COMMAND [OPTION...] 使用自訂字型語言面板是否使用自訂字型使用自訂字型:使用全域輸入法使用含 Shift 鍵之快捷鍵來切換至上一個輸入法使用系統鍵盤 (XKB) 佈局使用系統鍵盤佈局使用 xmodmap垂直寫入註冊快取 FILE。寫入系統註冊快取。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 值。關於(_A)新增(_A)套用(_A)取消(_C)關閉(_C)刪除(_D)向下(_D)確定(_O)偏好設定(_P)移除(_R)向上(_U)default:LTR語言:%s 切換輸入法Ding-Yi Chen 陳定彞 , 2009 Cheng-Chia Tseng , 2010 Terry Chuang , 2014 tomoe_musashi , 2015ibus-1.5.22/po/quot.sed0000644000000000000000000000023113623751246011542 00000000000000s/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g ibus-1.5.22/po/Makefile.in.in0000644000000000000000000004225113623751246012537 00000000000000# Makefile for PO directory in any package using GNU gettext. # Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper # # 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 any warranty. # # Origin: gettext-0.19.8 GETTEXT_MACRO_VERSION = 0.19 PACKAGE = @PACKAGE@ VERSION = @VERSION@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ SED = @SED@ SHELL = /bin/sh @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datarootdir = @datarootdir@ datadir = @datadir@ localedir = @localedir@ gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ # We use $(mkdir_p). # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions, # @install_sh@ does not start with $(SHELL), so we add it. # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake # versions, $(mkinstalldirs) and $(install_sh) are unused. mkinstalldirs = $(SHELL) @install_sh@ -d install_sh = $(SHELL) @install_sh@ MKDIR_P = @MKDIR_P@ mkdir_p = @mkdir_p@ # When building gettext-tools, we prefer to use the built programs # rather than installed programs. However, we can't do that when we # are cross compiling. CROSS_COMPILING = @CROSS_COMPILING@ GMSGFMT_ = @GMSGFMT@ GMSGFMT_no = @GMSGFMT@ GMSGFMT_yes = @GMSGFMT_015@ GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT)) MSGFMT_ = @MSGFMT@ MSGFMT_no = @MSGFMT@ MSGFMT_yes = @MSGFMT_015@ MSGFMT = $(MSGFMT_$(USE_MSGCTXT)) XGETTEXT_ = @XGETTEXT@ XGETTEXT_no = @XGETTEXT@ XGETTEXT_yes = @XGETTEXT_015@ XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT)) MSGMERGE = msgmerge MSGMERGE_UPDATE = @MSGMERGE@ --update MSGINIT = msginit MSGCONV = msgconv MSGFILTER = msgfilter POFILES = @POFILES@ GMOFILES = @GMOFILES@ UPDATEPOFILES = @UPDATEPOFILES@ DUMMYPOFILES = @DUMMYPOFILES@ DISTFILES.common = Makefile.in.in remove-potcdate.sin \ $(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \ $(POFILES) $(GMOFILES) \ $(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) POTFILES = \ CATALOGS = @CATALOGS@ POFILESDEPS_ = $(srcdir)/$(DOMAIN).pot POFILESDEPS_yes = $(POFILESDEPS_) POFILESDEPS_no = POFILESDEPS = $(POFILESDEPS_$(PO_DEPENDS_ON_POT)) DISTFILESDEPS_ = update-po DISTFILESDEPS_yes = $(DISTFILESDEPS_) DISTFILESDEPS_no = DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO)) # Makevars gets inserted here. (Don't remove this line!) .SUFFIXES: .SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update .po.mo: @echo "$(MSGFMT) -c -o $@ $<"; \ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ .po.gmo: @lang=`echo $* | sed -e 's,.*/,,'`; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo .sin.sed: sed -e '/^#/d' $< > t-$@ mv t-$@ $@ all: all-@USE_NLS@ all-yes: stamp-po all-no: # Ensure that the gettext macros and this Makefile.in.in are in sync. CHECK_MACRO_VERSION = \ test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \ || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \ exit 1; \ } # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because # we don't want to bother translators with empty POT files). We assume that # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty. # In this case, stamp-po is a nop (i.e. a phony target). # stamp-po is a timestamp denoting the last time at which the CATALOGS have # been loosely updated. Its purpose is that when a developer or translator # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent # invocations of "make" will do nothing. This timestamp would not be necessary # if updating the $(CATALOGS) would always touch them; however, the rule for # $(POFILES) has been designed to not touch files that don't need to be # changed. stamp-po: $(srcdir)/$(DOMAIN).pot @$(CHECK_MACRO_VERSION) test ! -f $(srcdir)/$(DOMAIN).pot || \ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) @test ! -f $(srcdir)/$(DOMAIN).pot || { \ echo "touch stamp-po" && \ echo timestamp > stamp-poT && \ mv stamp-poT stamp-po; \ } # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', # otherwise packages like GCC can not be built if only parts of the source # have been downloaded. # This target rebuilds $(DOMAIN).pot; it is an expensive operation. # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. # The determination of whether the package xyz is a GNU one is based on the # heuristic whether some file in the top level directory mentions "GNU xyz". # If GNU 'find' is available, we avoid grepping through monster files. $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed package_gnu="$(PACKAGE_GNU)"; \ test -n "$$package_gnu" || { \ if { if (LC_ALL=C find --version) 2>/dev/null | grep GNU >/dev/null; then \ LC_ALL=C find -L $(top_srcdir) -maxdepth 1 -type f \ -size -10000000c -exec grep 'GNU @PACKAGE@' \ /dev/null '{}' ';' 2>/dev/null; \ else \ LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null; \ fi; \ } | grep -v 'libtool:' >/dev/null; then \ package_gnu=yes; \ else \ package_gnu=no; \ fi; \ }; \ if test "$$package_gnu" = "yes"; then \ package_prefix='GNU '; \ else \ package_prefix=''; \ fi; \ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \ else \ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \ fi; \ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ *) \ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \ --files-from=$(srcdir)/POTFILES.in \ --copyright-holder='$(COPYRIGHT_HOLDER)' \ --package-name="$${package_prefix}@PACKAGE@" \ --package-version='@VERSION@' \ --msgid-bugs-address="$$msgid_bugs_address" \ ;; \ esac test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot-header; then \ sed -e '1,/^#$$/d' < $(DOMAIN).po > $(DOMAIN).1po && \ cat $(srcdir)/$(DOMAIN).pot-header $(DOMAIN).1po > $(DOMAIN).po; \ rm -f $(DOMAIN).1po; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ else \ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ else \ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ fi; \ } # This rule has no dependencies: we don't need to update $(DOMAIN).pot at # every "make" invocation, only create it when it is missing. # Only "make $(DOMAIN).pot-update" or "make dist" will force an update. $(srcdir)/$(DOMAIN).pot: $(MAKE) $(DOMAIN).pot-update # This target rebuilds a PO file if $(DOMAIN).pot has changed. # Note that a PO file is not touched if it doesn't need to be changed. $(POFILES): $(POFILESDEPS) @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ if test -f "$(srcdir)/$${lang}.po"; then \ test -f $(srcdir)/$(DOMAIN).pot || $(MAKE) $(srcdir)/$(DOMAIN).pot; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \ cd $(srcdir) \ && { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \ esac; \ }; \ else \ $(MAKE) $${lang}.po-create; \ fi install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ for file in $(DISTFILES.common) Makevars.template; do \ $(INSTALL_DATA) $(srcdir)/$$file \ $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ for file in Makevars; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi install-data-no: all install-data-yes: all @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ fi; \ done; \ done install-strip: install installdirs: installdirs-exec installdirs-data installdirs-exec: installdirs-data: installdirs-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \ else \ : ; \ fi installdirs-data-no: installdirs-data-yes: @catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $(DESTDIR)$$dir; \ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ if test -n "$$lc"; then \ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ for file in *; do \ if test -f $$file; then \ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ fi; \ done); \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ else \ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ :; \ else \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ fi; \ fi; \ fi; \ done; \ done # Define this as empty until I found a useful application. installcheck: uninstall: uninstall-exec uninstall-data uninstall-exec: uninstall-data: uninstall-data-@USE_NLS@ if test "$(PACKAGE)" = "gettext-tools"; then \ for file in $(DISTFILES.common) Makevars.template; do \ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ done; \ else \ : ; \ fi uninstall-data-no: uninstall-data-yes: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ done; \ done check: all info dvi ps pdf html tags TAGS ctags CTAGS ID: mostlyclean: rm -f remove-potcdate.sed rm -f stamp-poT rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po rm -fr *.o clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES *.mo 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 stamp-po $(GMOFILES) distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: test -z "$(DISTFILESDEPS)" || $(MAKE) $(DISTFILESDEPS) @$(MAKE) dist2 # This is a separate target because 'update-po' must be executed before. dist2: stamp-po $(DISTFILES) dists="$(DISTFILES)"; \ if test "$(PACKAGE)" = "gettext-tools"; then \ dists="$$dists Makevars.template"; \ fi; \ if test -f $(srcdir)/$(DOMAIN).pot; then \ dists="$$dists $(DOMAIN).pot stamp-po"; \ fi; \ if test -f $(srcdir)/ChangeLog; then \ dists="$$dists ChangeLog"; \ fi; \ for i in 0 1 2 3 4 5 6 7 8 9; do \ if test -f $(srcdir)/ChangeLog.$$i; then \ dists="$$dists ChangeLog.$$i"; \ fi; \ done; \ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ for file in $$dists; do \ if test -f $$file; then \ cp -p $$file $(distdir) || exit 1; \ else \ cp -p $(srcdir)/$$file $(distdir) || exit 1; \ fi; \ done update-po: Makefile $(MAKE) $(DOMAIN).pot-update test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) $(MAKE) update-gmo # General rule for creating PO files. .nop.po-create: @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ exit 1 # General rule for updating PO files. .nop.po-update: @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ if test "$(PACKAGE)" = "gettext-tools" && test "$(CROSS_COMPILING)" != "yes"; then PATH=`pwd`/../src:$$PATH; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ cd $(srcdir); \ if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ *) \ $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \ esac; \ }; then \ if cmp $$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; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi $(DUMMYPOFILES): update-gmo: Makefile $(GMOFILES) @: # Recreate Makefile by invoking config.status. Explicitly invoke the shell, # because execution permission bits may not work on the current file system. # Use @SHELL@, which is the shell determined by autoconf for the use by its # scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient. Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@ cd $(top_builddir) \ && @SHELL@ ./config.status $(subdir)/$@.in po-directories force: # 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.22/po/pl.po0000644000000000000000000031331013623751601011030 00000000000000# Polish translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2020 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Piotr Drąg , 2011-2014, 2020. # Piotr Drąg , 2015. #zanata, 2020. # fujiwara , 2015. #zanata # Piotr Drąg , 2016. #zanata, 2020. # Piotr Drąg , 2017. #zanata, 2020. # fujiwara , 2017. #zanata # Piotr Drąg , 2018. #zanata, 2020. # fujiwara , 2018. #zanata # Piotr Drąg , 2019. #zanata, 2020. msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2020-01-03 17:09+0000\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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: Weblate 3.9.1\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Wcześniejsze wczytanie mechanizmów" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Wcześniejsze wczytanie mechanizmów podczas uruchamiania usługi IBus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Kolejność mechanizmów" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Kolejność zapisanych mechanizmów na liście metod wprowadzania" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Opóźnienie wyświetlenia okna przełącznika IME w milisekundach" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Zapisany numer wersji" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Układy łacińskie niemające ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 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/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Użycie xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 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/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Systemowe ustawienia układu klawiatury" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Systemowy układ klawiatury (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Osadzanie wcześniej wprowadzonego tekstu" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Osadzanie wcześniej wprowadzonego tekstu w oknie aplikacji" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Globalna metoda wprowadzania" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Ta sama metoda wprowadzania we wszystkich aplikacjach" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Domyślne włączanie metody wprowadzania" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 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/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf zachowuje przedrostki nazw" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Przedrostki kluczy DConf zatrzymujące konwersję nazw" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Klawisze skrótów przełącznika" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Klawisze skrótów do włączania lub wyłączania metody wprowadzania" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Klawisz skrótu dla „gtk_accelerator_parse”" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Skróty klawiszowe włączania" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Skróty klawiszowe do włączania metody wprowadzania" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Skróty klawiszowe wyłączania" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Skróty klawiszowe do wyłączania metody wprowadzania" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Klawisze skrótów następnego mechanizmu" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" "Klawisze skrótów do przełączania na następną metodę wprowadzania na liście" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Klawisze skrótów poprzedniego mechanizmu" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" "Klawisze skrótów do przełączania na poprzednią metodę wprowadzania na liście" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Automatyczne ukrywanie" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 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/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Pozycja panela języków" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 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/dconf/org.freedesktop.ibus.gschema.xml:126 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 wartość „true”, to panel podążą za kursorem " "wprowadzania, kiedy panel jest zawsze wyświetlany. Jeśli jest ustawione na " "wartość „false”, to panel jest wyświetlany w stałym położeniu." #: data/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Milisekundy do wyświetlenia panelu właściwości" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 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/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orientacja tablicy wyszukiwania" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientacja tablicy wyszukiwania. 0 = pozioma, 1 = pionowa" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Ikona w obszarze powiadamiania" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Wyświetlanie nazwy metody wprowadzania" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Nazwa metody wprowadzania na panelu języków" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "Wartość RGBA ikony XKB" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "Milisekundy do wyświetlenia ikony panelu dla właściwości" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Niestandardowa czcionka" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Niestandardowa czcionka dla panelu języków" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Nazwa niestandardowej czcionki" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Nazwa niestandardowej czcionki dla panelu języków" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Klawisze skrótów unikodu dla gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Klawisze skrótów do włączania lub wyłączania pisania unikodu" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Klawisz skrótu emoji dla „gtk_accelerator_parse”" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "Klawisze skrótów do włączania lub wyłączania wpisywania emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "Nazwa niestandardowej czcionki dla znaków emoji w oknie emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Domyślny język dla słownika emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Wybór domyślnego języka słowników emoji w oknie emoji. Wartość $lang jest " "zastosowywana do /usr/share/ibus/dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "lista ulubionych emoji w oknie emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "Wpisane tutaj znaki pojawią się na liście ulubionych emoji." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "lista ulubionych uwag emoji w oknie emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "Można przydzielić uwagę do ulubionej emoji na tej liście." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "Czy uwagi emoji mogą być dopasowywane częściowo" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Czy uwagi emoji mogą być dopasowywane z częściowym ciągiem, zamiast " "z dokładnym dopasowaniem." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Dopasowywanie uwag emoji o podanej długości" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Częściowe dopasowywanie uwag emoji o więcej niż tej liczbie znaków, zamiast " "dokładnego dopasowywania." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "Warunek częściowego dopasowywania uwag emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Wybór jednego z następujących warunków częściowego dopasowywania uwag emoji: " "0 == dopasowywanie przedrostka, 1 == dopasowywanie przyrostka, 2 == " "dopasowywanie w środku" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Wczytywanie danych emoji podczas uruchamiania" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Jeśli jest ustawione na wartość „true”, to wczytuje dane emoji podczas " "uruchamiania. Wymaga około 10 MB pamięci. Jeśli jest ustawione na wartość " "„false”, to wczytuje dane emoji podczas otwierania okna emoji." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Wczytywanie danych unikodu podczas uruchamiania" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Jeśli jest ustawione na wartość „true”, to wczytuje dane unikodu podczas " "uruchamiania. Wymaga około 15 MB pamięci. Jeśli jest ustawione na wartość " "„false”, to wczytuje dane unikodu podczas otwierania okna emoji. Dane " "unikodu są zawsze wczytywane po wczytaniu danych emoji, nawet jeśli " "ustawiono na wartość „true”." #: 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:209 msgid "Other" msgstr "Inne" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Wybierz język" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Anuluj" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Więcej…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "O programie" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "Za_mknij" #: 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 metody wprowadzania" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Dodaj" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Metoda wprowadzania" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "KBD" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Preferencje usługi IBus" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "Skrót z klawiszem Shift do przełączania do poprzedniej metody wprowadzania" #: setup/main.py:515 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:536 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 "" "Usługa IBus została uruchomiona. 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Nie można uruchomić usługi IBus od %d s" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Wybór skrótu klawiszowego dla %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "przełączanie metod wprowadzania" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Poziomo" #: setup/setup.ui:14 msgid "Vertical" msgstr "Pionowo" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Górny lewy róg" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Górny prawy róg" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Dolny lewy róg" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Dolny prawy róg" #: setup/setup.ui:37 msgid "Custom" msgstr "Niestandardowa" #: setup/setup.ui:48 msgid "Do not show" msgstr "Bez wyświetlania" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Automatyczne ukrywanie" #: setup/setup.ui:54 msgid "Always" msgstr "Zawsze" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Następna metoda wprowadzania:" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Poprzednia metoda wprowadzania:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "…" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Włączenie lub wyłączenie:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Włączone:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Wyłączone:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Skróty klawiszowe" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Ustawienie orientacji kandydatów w tablicy wyszukiwania" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Orientacja kandydatów:" #: setup/setup.ui:407 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:409 msgid "Show property panel:" msgstr "Wyświetlanie panelu właściwości:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Pozycja panelu języków:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Nazwa metody wprowadzania na panelu języków podczas zaznaczania pola wyboru" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Osadzanie wcześniej wprowadzonego tekstu metody wprowadzania" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" "Osadzanie wcześniej wprowadzonego tekstu metody wprowadzania w oknie " "aplikacji" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Niestandardowa czcionka:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Czcionka i styl" #: setup/setup.ui:579 msgid "General" msgstr "Ogólne" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "Dodaje wybraną metodę wprowadzania do włączonych metod wprowadzania" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Usuń" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "Usuwa zaznaczoną metodę wprowadzania z włączonych metod wprowadzania" #: setup/setup.ui:700 msgid "_Up" msgstr "W _górę" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Przenosi w górę zaznaczoną metodę wprowadzania we włączonych metodach " "wprowadzania" #: setup/setup.ui:718 msgid "_Down" msgstr "W _dół" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" "Przenosi w dół zaznaczoną metodę wprowadzania we włączonych metodach " "wprowadzania" #: setup/setup.ui:736 msgid "_About" msgstr "_O programie" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Wyświetla informacje o wybranej metodzie wprowadzania" #: setup/setup.ui:754 msgid "_Preferences" msgstr "P_referencje" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Wyświetla ustawienia zaznaczonej metody wprowadzania" #: setup/setup.ui:812 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." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "Klawisze skrótów do włączania konwersji uwag emoji lub nazw unikodu" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Uwaga emoji:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Klawisze skrótów do włączania konwersji kodów znaków unikodu" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Kod znaku unikodu:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "Ustawienie czcionki kandydatów unikodu w oknie emoji" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Czcionka unikodu:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Ustawienie języka uwag emoji w oknie emoji" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Język uwag emoji:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Częściowe dopasowywanie uwag emoji o tym warunku i więcej niż tej liczbie " "znaków:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Czy uwagi emoji mogą być dopasowywane z częściowym ciągiem, zamiast " "z dokładnym dopasowaniem" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Dopasowanie przedrostka" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Dopasowanie przyrostka" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Dopasowanie w środku" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emoji" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Układ klawiatury" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Ustawienia globalnej metody wprowadzania" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Zaawansowane" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "Uruchamianie IBus podczas logowania" #: setup/setup.ui:1358 msgid "Startup" msgstr "Uruchamianie" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Sport" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Zwierzęta i przyroda" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Składnik" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Flagi" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Jedzenie i napoje" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Rzeczy" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "Osoby i ciało" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "Uśmieszki i emotikony" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Symbole" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Podróże i miejsca" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Podstawowy łaciński" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Uzupełnienie Latin-1" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Rozszerzony łaciński A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Rozszerzony łaciński B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "Rozszerzenia IPA" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Oddzielone litery modyfikujące" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Składające znaki diakrytyczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Grecki i koptyjski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Cyrylica" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Uzupełnienie cyrylicy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Ormiański" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Hebrajski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Arabski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Syryjski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Uzupełnienie arabskiego" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "N’Ko" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Samarytański" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandejski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Uzupełnienie syryjskiego" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Rozszerzony arabski A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Dewanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengalski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmukhi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Gudżarati" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Orija" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tamilski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Telugu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Kannada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malajalam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Syngaleski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Tajski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Laotański" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tybetański" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Birmański" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Gruziński" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Dzamo hangyl" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Etiopski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Uzupełnienie etiopskiego" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Czirokeski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Ujednolicony sylabariusz rdzennych Kanadyjczyków" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogamiczny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Runiczny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Tagalski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunoo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Tagbanwa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Khmerski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Mongolski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Rozszerzony ujednolicony sylabariusz rdzennych Kanadyjczyków" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Nowy tai le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Symbole khmerskie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Bugiński" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Tai Tham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Rozszerzone składające znaki diakrytyczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Balijski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Sundajski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepczowski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ol Chiki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Rozszerzona cyrylica C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "Rozszerzony gruziński" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Uzupełnienie sundajskiego" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Rozszerzenia wed" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Rozszerzenia fonetyczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Uzupełnienie rozszerzeń fonetycznych" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Uzupełnienie składających znaków diakrytycznych" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Łaciński rozszerzony dodatkowy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Grecki rozszerzony" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Ogólne znaki interpunkcyjne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Indeksy górne i dolne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Symbole walutowe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Składające znaki diakrytyczne dla symboli" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Symbole literopodobne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Formy liczbowe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Strzałki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Operatory matematyczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Różne znaki techniczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Obrazy znaków sterujących" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Optyczne rozpoznawanie znaków" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Otoczone symbole alfanumeryczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Rysowanie ramek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Elementy blokowe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Kształty geometryczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Różnorodne symbole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Ozdoby drukarskie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Różne symbole matematyczne A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Dodatkowe strzałki A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Pismo Braille’a" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Dodatkowe strzałki B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Różne symbole matematyczne B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Dodatkowe operatory matematyczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Różne symbole i strzałki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Głagolica" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Rozszerzony łaciński C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Koptyjski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Uzupełnienie gruzińskiego" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Rozszerzony etiopski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Rozszerzona cyrylica A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Dodatkowe znaki interpunkcyjne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "Radykały CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Radykały Kangxi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Znaki opisu ideograficznego" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "Symbole i znaki interpunkcyjne CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Dzamo zgodności dla hangyl" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Rozszerzone bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "Kreski CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Rozszerzenia fonetyczne katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Otoczone litery i miesiące CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "Znaki zgodności CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "Rozszerzenie A ujednoliconych ideogramów CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Heksagramy Yijing" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "Ujednolicone ideogramy CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Sylaby Yi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Radykały Yi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Wai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Rozszerzona cyrylica B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Modyfikujące litery tonów" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Rozszerzony łaciński D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Syloti Nagri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Wspólne indyjskie formy liczbowe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Phags-Pa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurashtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Rozszerzone dewanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Rozszerzony dzamo hangyl A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Jawajski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Rozszerzony birmański B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Czamski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Rozszerzony birmański A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tai Viet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Rozszerzenia Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Rozszerzony etiopski A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Rozszerzony łaciński E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Uzupełnienie czirokeskiego" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Sylaby Hangyl" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Rozszerzony dzamo hangyl B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Starsze surogaty" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Starsze surogaty prywatnego użytku" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Młodsze surogaty" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Obszar prywatnego użytku" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "Ideogramy zgodności CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Alfabetyczne formy prezentacyjne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Arabskie formy prezentacyjne A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Przełączniki wariantów glifów" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Formy pionowe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Składające półznaki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "Formy zgodności CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Różne małe formy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Arabskie formy prezentacyjne B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Formy połowy i pełnej szerokości" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Specjalne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Sylabariusz pisma linearnego B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Ideogramy pisma linearnego B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Cyfry egejskie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Starożytne cyfry greckie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Symbole starożytne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Dysk z Fajstos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Licyjski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Karyjski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Koptyjskie cyfry epakta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Staroitalski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gocki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Staropermski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ugarycki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Staroperski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Deseret" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Alfabet Shawa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmański" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Elbasański" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Kaukasko-albański" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Linearne A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Sylabariusz cypryjski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "Aramejski imperialny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Palmyreński" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nabatejski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Hatran" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Fenicki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lidyjski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Hieroglify meroickie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Kursywa meroicka" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Charosti" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Południowoarabski epigraficzny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Północnoarabski epigraficzny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Manichejski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Awestyjski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Inskrypcyjny partyjski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Inskrypcyjny pahlawi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Psałterzowy pahlawi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Staroturecki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Starowęgierski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "Rohingya hanifi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Symbole numeryczne rumi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "Starosogdyjski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "Sogdyjski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "Elamicki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Brahmi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaithi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Sorang sompeng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Czakma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Mahajański" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Śarada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Archaiczne cyfry syngaleskie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Chodżycki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Multani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Khudawadi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Grantha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Newa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Tirhuta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Siddham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Modi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Uzupełnienie mongolskiego" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Dogra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Varang kshiti" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "Nandinagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Kwadratowe Zanabazara" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Sojombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Gondi masarama" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Gondi gunjala" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Makasar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "Uzupełnienie tamilskiego" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Pismo klinowe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Cyfry i interpunkcja pisma klinowego" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Wczesnodynastyczne pismo klinowe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Hieroglify egipskie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "Modyfikatory formatu hieroglifów egipskich" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Hieroglify anatolijskie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Uzupełnienie bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mro" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Bassa vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Pahawh hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Medefaidrin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Miao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Ideograficzne symbole i znaki interpunkcyjne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Tangucki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Składniki tanguckie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Uzupełnienie kana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Rozszerzony kana A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "Rozszerzenie małej kany" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Nüshu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Stenografia Duployé’a" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Modyfikatory formatu stenograficznego" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Bizantyjskie symbole muzyczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Symbole muzyczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Starożytna grecka notacja muzyczna" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "Cyfry Majów" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Symbole Tai xuan Jing" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Cyfry w chińskim zapisie pałeczkowym" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Matematyczne symbole alfanumeryczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Sutton SignWriting" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Uzupełnienie głagolicy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "Nyiakeng puachue hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "Wancho" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Pismo ki-ka-ku" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "Indyjskie cyfry siyaq" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "Osmańskie cyfry siyaq" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Arabskie matematyczne symbole alfabetyczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Klocki Mahjong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Klocki domina" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Karty do gry" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Uzupełnienie otoczonych symboli alfanumerycznych" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Uzupełnienie otoczonych ideogramów" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Różne symbole i piktogramy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Emotikony" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Ozdoby drukarskie Dingbat" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Symbole transportowe i dla map" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Symbole alchemiczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Rozszerzone kształty geometryczne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Uzupełnienie strzałek C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Uzupełnienie symboli i piktogramów" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "Symbole szachowe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "Rozszerzone symbole i piktogramy A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "Rozszerzenie B ujednoliconych ideogramów CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "Rozszerzenie C ujednoliconych ideogramów CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "Rozszerzenie D ujednoliconych ideogramów CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "Rozszerzenie E ujednoliconych ideogramów CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "Rozszerzenie F ujednoliconych ideogramów CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "Dodatkowe ideogramy zgodności CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Znaczniki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Dodatkowe przełączniki wariantów glifów" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Dodatkowy obszar prywatnego użytku A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Dodatkowy obszar prywatnego użytku B" #: tools/main.vala:51 msgid "List engine name only" msgstr "Wyświetla tylko nazwę mechanizmu" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Nie można połączyć z usługą IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "język: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Nie ustawiono żadnego mechanizmu.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Ustawienie globalnego mechanizmu się nie powiodło.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Uzyskanie globalnego mechanizmu się nie powiodło.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Odczytuje pamięć podręczną rejestru systemu." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Odczytuje PLIK pamięci podręcznej rejestru." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "Pamięć podręczna rejestru jest nieprawidłowa.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Zapisuje pamięć podręczną rejestru systemu." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Zapisuje PLIK pamięci podręcznej systemu." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "Używa ścieżek schematu mechanizmu zamiast rdzenia IBus, które mogą być " "wartościami oddzielonymi przecinkami." #: tools/main.vala:381 msgid "Resetting…" msgstr "Przywracanie…" #: tools/main.vala:399 msgid "Done" msgstr "Gotowe" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Ustawia lub uzyskuje mechanizm" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Kończy działanie usługi ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "Wyświetla dostępne mechanizmy" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Niezaimplementowane)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Ponownie uruchamia usługę ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "Wyświetla wersję" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Wyświetla zawartość pamięci podręcznej rejestru" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Tworzy pamięć podręczną rejestru" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Wyświetla adres D-Bus usługi ibus-daemon" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Wyświetla wartości konfiguracji" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Przywraca wartości konfiguracji" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Zapisuje emoji w oknie do schowka " #: tools/main.vala:458 msgid "Show this information" msgstr "Wyświetla tę informację" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Użycie: %s POLECENIE [OPCJA…]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Polecenia:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s jest nieznanym poleceniem.\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Ulubione" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Inne" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Otwórz wybór unikodu" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Wróć do wyboru emoji" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Strona w dół" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Strona w górę" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Wyświetlanie wariantów emoji" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Zamknij" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Menu" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Kliknięcie wyświetli komunikat ostrzeżenia" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Wczytywanie słownika unikodu:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Kod znaku: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Ma warianty emoji" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Opis: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Brak" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Uwagi: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Nazwa: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Alias: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Wybór emoji" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Wybór unikodu" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "Uzyskanie obecnej aplikacji tekstowej się nie powiodło. Proszę ponownie ją " "aktywować. Można np. nacisnąć klawisz Esc kilka razy, aby zwolnić tryb " "pisania emoji, albo kliknąć pulpit i kliknąć aplikację tekstową jeszcze raz." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Anulowano, aby wybrać emoji." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Skopiowano emoji do schowka." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "„CZCIONKA” dla znaków emoji w oknie emoji" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "CZCIONKA" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "„JĘZYK” uwag w oknie emoji, np. „pl”" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "JĘZYK" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Uwagi emoji mogą być częściowo dopasowywane" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Dopasowywanie o podanej długości jako liczba całkowita" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Dopasowywanie o podanym warunku jako liczba całkowita" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "Panel IBus" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus jest inteligentną magistralą wprowadzania dla systemu Linux/UNIX." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Piotr Drąg , 2009-2020" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Preferencje" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Uruchom ponownie" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/te.po0000644000000000000000000031351313623751602011033 00000000000000# Telugu translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2018 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2018-02-20 04:23-0500\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Telugu \n" "Language: te\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 3.9.6\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "ముందుగా లోడైన యంత్రాలు" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ఐబస్ ప్రారంభము నందు యంత్రాలను ముందుగా లోడుచేయి" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "యంత్రాల క్రమం" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "ఇన్పుట్ పద్ధతి జాబితా నందు భద్రపరచిన యంత్రాల క్రమం" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME స్విచర్ విండో కొరకు పాపప్ ఆలస్యం మిల్లీసెకన్లలో" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "భద్రపరచిన రూపాంతరం సంఖ్య" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "ASCII లేని లాటిన్ నమూనాలు" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "US నమూనా లాటిన్ నమూనాలకు కలుపబడెను. వేరియంట్‌ను విస్మరించవచ్చు." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmap ఉపయోగించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "ibus ఇంజన్లు మార్చినప్పుడు .xmodmap లేదా .Xmodmap ఉంటే గనుక xmodmap నడుపుము." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "వ్యవస్థ కీబోర్డు నమూనా ఉపయోగించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "వ్యవస్థ కీబోర్డు (XKB) నమూనా ఉపయోగించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "ఎంబెడెడ్ ప్రిఎడిట్ పాఠ్యం" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "అనువర్తన కిటికీ నందు ఎంబెడెడ్ ప్రిఎడిట్ పాఠ్యం" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "సార్వత్రిక ఇన్‌పుట్ పద్ధతిని ఉపయోగించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "అన్ని అనువర్తనాలలోనూ ఇన్పుట్ పద్దతిని పంచుకొను" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "ఇన్‌పుట్ పద్ధతిని అప్రమేయంగా చేతనించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "అనువర్తనము ఇన్‌పుట్ ఫోకస్‌ను పొందగానే ఇన్‌పుట్ పద్ధతిని అప్రమేయంగా చేతనించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf వుంచిన పేరు ప్రిఫిక్సెస్" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "పేరు మార్పును ఆపుటకు DConf మీటల ప్రిఫిక్సులు" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "అడ్డదారి మీటలను నొక్కండి" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "ఇన్‌పుట్ పద్ధతిని చేతనించుటకు లేదా అచేతనించుటకు అడ్డదారి మీటలు" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse కొరకు ట్రిగ్గర్ అడ్డదారి మీటలు" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "అడ్డదారి మీటలను చేతనించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "ఇన్‌పుట్ పద్ధతి చేతనించుటకు అడ్డదారి మీటలు" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "అడ్డదారి మీటలను అచేతనించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "ఇన్‌పుట్ పద్ధతి అచేతనించుటకు అడ్డదారి మీటలు" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "తరువాతి యంత్రానికి అడ్డదార్లు" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "జాబితాలోని తరువాతి ఇన్పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలు" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "మునుపటి యంత్ర అడ్డదారి మీటలు" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "జాబితాలోని మునుపటి ఇన్‌పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలు" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "స్వయంగా దాగు" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "ప్రోపర్టీ పానల్ యొక్క ప్రవర్తన. 0 = చూపవద్దు, 1 = స్వయంచాలకంగా దాచివేయి, 2 = ఎల్లప్పుడూ చూపు" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "భాషా ప్యానల్ స్థానం" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "పానల్ గనుక ఎల్లప్పుడూ చూపబడుతూంటే ఇన్పుప్ కర్సర్‌ను అనుసరించుము" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "ప్రోపర్టీ పానల్ చూపుటకు మిల్లీసెకన్లు" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "దృష్టిసారించిన తరువాత లేదా లక్షణాలు మార్చిన తరువాత ప్రోపర్టీ పానల్ చూపుటకు మిల్లీసెకన్లు." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "లుకప్ పట్టిక సర్దుబాటు" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "లుకప్ పట్టిక సర్దుబాటు. 0 = అడ్డము, 1 = నిలువు" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "వ్యవస్థ పళ్లెము పై ప్రతీకను చూపించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "ఇన్‌పుట్ పద్ధతి పేరును చూపించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "భాషా పట్టీపై ఇన్‌పుట్ పద్ధతి పేరును చూపించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB ప్రతిమ యొక్క RGBA విలువ" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "అనురూపిత ఖతిని ఉపయోగించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "భాషా ప్యానల్ కొరకు అనురూపిత ఖతి పేరును ఉపయోగించు" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "అనురూపిత ఖతి" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "భాష ప్యానల్ కొరకు అనురూపించిన ఖతి పేరు" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse కొరకు ట్రిగ్గర్ అడ్డదారి మీటలు" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "ఇన్‌పుట్ పద్ధతిని చేతనించుటకు లేదా అచేతనించుటకు అడ్డదారి మీటలు" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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 Peng Huang\n" "నకలుహక్కు (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "ఇతర" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "రద్దుచేయి (_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "సరే (_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "మరిన్ని..." #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "గురించి" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "మూసివేయి (_C)" #: 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 "ఒక ఇన్‌పుట్ పద్ధతిని ఎంచుకోండి" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "జతచేయి (_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "ఇన్‌పుట్ పద్ధతి" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "ఐబస్ ప్రాధాన్యతలు" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "ఐబస్ ప్రాధాన్యతలను అమర్చు" #: 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "మునుపటి ఇన్పుట్ పద్దతికి మారుటకు అడ్డదారిని shift తో ఉపయోగించు" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "ఐబస్ డెమోన్ నడుచుటలేదు. మీరు ప్రారంభించాలని అనుకొనుచున్నారా?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "ఐబస్ డీమన్ %d క్షణాలలో ప్రారంభం కాలేకపోయింది" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s కొరకు కీబోర్డు లఘువును ఎంచుకోండి" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "ఇన్పుట్ పద్దతులు మార్చుట" #: setup/setup.ui:11 msgid "Horizontal" msgstr "అడ్డము" #: setup/setup.ui:14 msgid "Vertical" msgstr "నిలువు" #: setup/setup.ui:25 msgid "Top left corner" msgstr "పై ఎడమ మూల" #: setup/setup.ui:28 msgid "Top right corner" msgstr "పై కుడి మూల" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "క్రింది ఎడమ మూల" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "క్రింది కుడి మూల" #: setup/setup.ui:37 msgid "Custom" msgstr "అనురూపితం" #: setup/setup.ui:48 msgid "Do not show" msgstr "చూపించవద్దు" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "స్వయంచాలకంగా దాయి" #: setup/setup.ui:54 msgid "Always" msgstr "ఎల్లప్పుడు" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "జాబితాలో ఉన్న తరువాతి ఇన్‌పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలు" #: setup/setup.ui:115 msgid "Next input method:" msgstr "తరువాతి ఇన్‌పుట్ పద్ధతి:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "జాబితానందలి ముందరి ఇన్‌పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలు" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "మునుపటి ఇన్‌పుట్ పద్ధతి:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "చేతనించు లేదా అచేతనించు:" #: setup/setup.ui:238 msgid "Enable:" msgstr "చేతనించు:" #: setup/setup.ui:291 msgid "Disable:" msgstr "అచేతనపరుచు:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "కీబోర్డు అడ్డదార్లు" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "లుకప్ పట్టికనందు కాండిడేట్ల సర్దుబాటును అమర్చండి" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "సభ్యుల దృక్పథం:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "భాషా పట్టీని ఎలా చూపాలి మరియు దాయాలి అనేదానికి ఐబస్ ప్రవర్తనను అమర్చండి" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "ప్రాపర్టీ ప్యానలును చూపించు:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "భాషా ప్యానల్ స్థానం:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "చెక్‌బాక్సు చెక్ చేసినప్పుడు భాషా పట్టీపై ఇన్‌పుట్ పద్ధతి పేరును చూపించు" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "అనువర్తనము కిటికీ నందు ముందుగా సరికూర్చిన పాఠ్యాన్ని ఎంబెడెడ్ చేయి" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "అనువర్తనము కిటికీ నందు ఇన్‌పుట్ పద్ధతి యొక్క ముందుగా సరికూర్చిన పాఠమును ఎంబెడెడ్ చేయి" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "అనురూపిత ఖతిని ఉపయోగించు:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "ఖతి మరియు శైలి" #: setup/setup.ui:579 msgid "General" msgstr "సాధారణం" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "ఎంచుకున్న ఇన్‌పుట్ పద్ధతిని చేతనమైన ఇన్‌పుట్ పద్ధతులలోనికి జతచేయి" #: setup/setup.ui:682 msgid "_Remove" msgstr "తీసివేయి (_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "చేతనమైన ఇన్‌పుట్ పద్ధతుల నుంచి ఎంపికచేసిన ఇన్‌పుట్ పద్ధతిని తొలగించు" #: setup/setup.ui:700 msgid "_Up" msgstr "పైన (_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "చేతనమైన ఇన్‌పుట్ పద్ధతుల జాబితాలో ఎంచుకున్న ఇన్‌పుట్ పద్ధతిని పైకి కదుపు" #: setup/setup.ui:718 msgid "_Down" msgstr "క్రింద (_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "చేతనమైన ఇన్‌పుట్ పద్ధతులలో ఎంచుకున్న ఇన్‌పుట్ పద్ధతిని క్రిందకి కదుపు" #: setup/setup.ui:736 msgid "_About" msgstr "గురించి (_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "ఎంచుకున్న ఇన్‌పుట్ పద్ధతి యొక్క సమాచారాన్ని చూపించు" #: setup/setup.ui:754 msgid "_Preferences" msgstr "ప్రాధాన్యతలు (_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "ఎంపికచేసిన ఇన్పుట్ పద్ధతి యొక్క అమర్పును చూపించు" #: setup/setup.ui:812 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 "" "పై జాబితాలోని ఇన్పుట్ పద్దతిని కీబోర్డ్ షార్ట్‌కట్ కీలతో గాని లేదా పానల్ ఐకాన్ నొక్కిగాని ఎంపికచేసి, " "ఏక్టివ్ ఇన్పుట్ పద్దతిని దానికి మార్చవచ్చు." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "ఇన్‌పుట్ పద్ధతిని చేతనించుటకు లేదా అచేతనించుటకు అడ్డదారి మీటలు" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "అనురూపిత ఖతిని ఉపయోగించు:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "కీబోర్డు నమూనా" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "సార్వత్రిక ఇన్‌పుట్ పద్ధతి అమరికలు" #: setup/setup.ui:1298 msgid "Advanced" msgstr "అధునాతనం" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "ప్రవేశించేప్పుడు ఐబస్‌ను ప్రారంభించు" #: setup/setup.ui:1358 msgid "Startup" msgstr "ప్రారంభము" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "యంత్రం పేరు మాత్రమే జాబితాచేయి" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "ఐబస్‌కు అనుసంధానం కాలేదు.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "భాష: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "ఏ యంత్రము అమర్చలేదు.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "సార్వత్రిక యంత్రం అమర్చుట విఫలమైంది.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "సార్వత్రిక యంత్రం పొందుట విఫలమైంది.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "వ్యవస్థ రిజిస్ట్రీ క్యాచీ చదువు." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "రిజిస్ట్రీ క్యాచీ FILE చదువు." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "రిజిస్ట్రీ క్యాచీ చెల్లనిది.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "వ్యవస్థ రిజిస్ట్రీ క్యాచీ వ్రాయి." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "రిజిస్ట్రీ క్యాచీ FILE వ్రాయి." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "తిరిగివుంచుతోంది..." #: tools/main.vala:399 msgid "Done" msgstr "అయినది" #: tools/main.vala:444 msgid "Set or get engine" msgstr "యంత్రాన్ని అమర్చు లేదా పొందు" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon నిష్క్రమించు" #: tools/main.vala:446 msgid "Show available engines" msgstr "అందుబాటులోని యంత్రాలను చూపించు" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(అమలు చేయలేదు)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon పునఃప్రారంభించు" #: tools/main.vala:449 msgid "Show version" msgstr "రూపాంతరాన్ని చూపించు" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "రిజిస్ట్రీ క్యాచీ యొక్క కాంటెంట్ చూపు" #: tools/main.vala:451 msgid "Create registry cache" msgstr "రిజిస్ట్రీ క్యాచీ సృష్టించు" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon యొక్క D-Bus చిరునామా ముద్రించు" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "ఆకృతీకరణ విలువలను చూపుము" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "ఆకృతీకరణ విలువలను తిరిగివుంచుము" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "ఈ సమాచారం చూపించు" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "వాడుక: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "ఆదేశాలు:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s తెలియని ఆదేశం!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "మూసివేయి (_C)" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus అనునది Linux/Unix కొరకు తెలివైన ఇన్‌పుట్ బస్." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "కృష్ణబాబు కె 2009.\n" "ప్రవీణ్ యిళ్ళ 2010-14." #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "ప్రాధాన్యతలు " #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "పునఃప్రారంభించు" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "నిష్క్రమించు " #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = అనురూపితం" #~ msgid "IBus Update" #~ msgstr "ఐబస్ నవీకరణ" #~ msgid "Super+space is now the default hotkey." #~ msgstr "ఇప్పుడు Super+space అప్రమేయ హాట్‌కీ." ibus-1.5.22/po/fi.gmo0000644000000000000000000001526413623751603011170 00000000000000^ #'#=axo       - H8           $ 7 B M ^ 0. _ l p z          " 9 A U j  9 2 -&Jq' 8.?O `    t$6kIT \g ly R (3I R"] &  # .;J2 NY ]i       6!Ln:2$'D&l%*B#fv60* <GPYbhow}   ;]C,)?1Q\H FZ3$#.V*J>/B^-S&D82O6+'T 0G=Y"KA4WINPX ! L@7:%U5R(E< M[9%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontDescription: Description: %sDisable shortcut keysDisable:Do not showDoneEnable or disable:Enable shortcut keysEnable:FavoritesGeneralHide automaticallyHorizontalIBus PanelIBus PreferencesIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Modifiers:More…NoneOtherPage DownPage UpPreferencesQuitRGBA value of XKB iconRestartRestart ibus-daemonSaved version numberSelect an input methodSet IBus PreferencesSet the behavior of ibus how to show or hide language barShare the same input method among all applicationsShow icon on system trayShow information of the selected input methodShow input method name on language barShow property panel:Show setup of the selected input methodShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?Top left cornerTop right cornerUse custom fontUse custom font:Use system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Uplanguage: %s translator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2017-04-17 12:26-0400 Last-Translator: Toni Rantala Language-Team: Finnish Language: fi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Zanata 3.9.6 Plural-Forms: nplurals=2; plural=(n != 1) %s on tuntematon komento! (Ei toteutettu)...Fontti ja tyyliYleiset syötetavan asetuksetNäppäimistön asetteluPikanäppäimetKäynnistysIBus Älykäs syöteväylä Sivusto: https://github.com/ibus/ibus/wiki Aktiivinen syötetapa voidaan vaihtaa valitusta ylläolevasta listasta painamalla pikanäppäiimä tai klikkaamalla paneelin kuvaketta. TietojaEdistyneetAinaTekijä: %s Automaattinen piilotusVasen alakulmaOikea alakulmaYhteys IBusiin ei onnistu. Komennot: Tekijänoikeus (c) 2007-2010 Peng Huang Tekijänoikeus (c) 2007-2010 Red Hat, Inc.MukautettuOmavalintainen fonttiKuvaus: Kuvaus: %sPoista pikanäppäimet käytöstäPoista käytöstä:Älä näytäValmisOta käyttöön tai poista käytöstäKäytä pikanäppäimiäOta käyttöön:SuosikitYleisetPiilota automaattisestiVaakasuoraIBus-paneeliIBus-asetuksetIBus on käynnistetty! Jos et voi käyttää IBusia, lisää seuraavat rivit $HOME/.bashrc-tiedostoon ja kirjaudu uudelleen. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus on älykäs syöteväylä Linuxille/Unixille.SyötetapaKbdAvain koodiNäppäimistön asettelu: %s PikanäppäimetKielipaneelin sijaintiKielipaneelin sijainti:Kieli: %s Muokkaajat:Lisää…Ei mitäänMuuSivu alasSivu ylösAsetuksetLopetaXKB-kuvakkeen RGBA-arvoKäynnistä uudelleenKäynnistä ibus-daemon uudelleenTallennettu versionumeroValitse syötetapaMääritä IBusin asetuksetMääritä miten ibus näyttää tai piilotaa kielivalikonJaa sama syötetapa kaikkien sovellusten välilläNäytä kuvake ilmoitusalueellaNäytä tietoja valitusta syötetavastaNäytä syötetavan nimi kielipalkissaNäytä ominaisuuspaneeli:Näytä valitun syötetavan asetuksetNäytä tämä tietoNäytä versioKäynnistä IBus kirjautumisen yhteydessäIBus-taustapalvelu ei ole käynnissä. Haluatko käynnistää sen?Vasen yläkulmaOikea yläkulmaKäytä omavalintaista fonttiaKäytä mukautettua fonttia:Käytä järjestelmän näppäimistön (XKB) asetteluaKäytä järjestelmän näppäimistön asetteluaKäytä xmodmapiaPystysuora_Tietoja_Lisää_Toteuta_Peru_Sulje_Poista_Alas_OK_Asetukset_Poista_Ylöskieli: %s kääntäjätibus-1.5.22/po/ko.gmo0000644000000000000000000012770213623751603011204 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIfHgG1h+yhhhh"hhi /iq=iirjyjHjjj j jjk k5kw;wZ x dxnxxx+x>x y#"y]Fyyy y(yz,$zQz lzzz#z%z#zz{1{ P|^|<e||||||| | }2A}t} } }}}"} ~~5~I~_~ t~~~ ~~~~0Ge y 8G߀!'I(^b ܂ +?FZ k x ׃):NWl ӄ (&Dk Ņۅ 4gQ1(ڈ(9 M[o Ή_P+/܊( "5X iw Ƌ $@\!p%! ڌ  1\?Y  #4M ft  ʎ,-4 HVn uŏ $BZu2ؐ)07RctđՑ/+?fk6Ғ 7%]$q"̓ )4C7x I .<V[k Ǖҕ0/1ay !ٖ;8/2h G٘2!T?e ϙ-.0!_9S%(N$` Ǜߛ'8M^ s Ϝ1Od˝ߝ'=Qel} ĞҞ  ' 5QC\8+J(1 rRJŢJJ[J=6/<f9=ݤCT_ť٥ 14Mp1<F!.$ԧ7PYpʨT-;'i #ũ   18tj+ߪ. :9K\Trqǭ 9 Z e p {  Ǯ Ү ݮ<<& co9JWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.21 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2019-10-24 10:31+0000 Last-Translator: Copied by Zanata Language-Team: GNOME Korea Language: ko MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Zanata 4.6.2 "<글꼴>"을 에모지 대화창의 에모지 문자에 사용합니다"<언어>"를 에모지 대화창 주석에 사용합니다 (예: "en")%s은(는) 알 수 없는 명령입니다! (구현 안함)...글꼴 및 스타일전역 입력 방식 설정키보드 레이아웃바로 가기 키시작IBus 지능형 입력 버스 홈페이지: https://github.com/ibus/ibus/wiki 활성화된 입력 방식 목록에서 키보드 바로 가기 키를 누르거나 패널 아이콘을 눌러 선택한 활성 입력 방식을 전환할 수 있습니다.정보활동활성화된 입력 방식에 선택한 입력 방식을 추가합니다애들램 문자고급에게 숫자아홈 문자연금술 기호다른 이름: %s알파벳 표시 꼴항상아나톨리아 상형문자고대 그리스 음표고대 그리스 숫자고대 기호동물 및 자연주석: %s아랍 문자아랍 문자 확장영역 A아랍 수학용 알파벳 기호아랍 문자 표시 꼴 A아랍 문자 표시 꼴 B아랍 문자 추가영역아르메니아 문자화살표작성자: %s 자동 숨기기아베스탄어발리 문자바뭄어 문자바뭄어 문자 추가영역기본 라틴문자바사 문자바타크 문자벵골 문자바이크수키 문자블럭 요소주음부호(중국어 발음기호)주음부호 확장영역왼쪽 아래오른쪽 아래테두리 모양브라흐미 문자점자 모양에모지 선택으로 돌아가기부기스 문자부히드 문자비잔틴 음악 기호한중일 호환 영역한중일 호환 꼴한중일 호환 한자한중일 호환 보충 한자한중일 부수 추가영역한중일 획수한중일 기호 및 문장 부호한중일 통합 한자한중일 통합 한자 확장영역 A한중일 통합 한자 확장영역 B한중일 통합 한자 확장영역 C한중일 통합 한자 확장영역 D한중일 통합 한자 확장영역 E한중일 통합 한자 확장영역 FIBus에 연결할 수 없습니다. 에모지 선택 취소됨.후보 창의 방향:카리 문자캅카스 알바니아 문자차크마 문자참 문자체로키 문자체로키 문자 추가영역체스 기호에모지 주석을 부분 일치하는 조건 선택에모지 대화창의 에모지 사전의 기본 언어를 선택합니다. $lang 값이면 /usr/share/ibus/dicts/emoji-$lang.dict 사전을 사용합니다.에모지 주석을 부분 일치하는 다음 조건 중의 하나를 고르십시오: 0 = 시작 일치, 1 == 끝 일치, 2 == 포함 일치경고 메시지를 보려면 누르십시오닫기코드값: %s조합 구분 표시조합 구분 표시 확장영역조합 구분 표시 추가영역기호용 조합 구분 표시조합 반각 표시명령: 인도 공통 숫자부품포함 일치제어 문자 표시에모지를 클립보드에 복사.콥트 문자콥트어 이팩트 번호Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.산가지 숫자레지스트리 캐시 만들기설형 문자설형 숫자및 구두기호화폐 기호사용자 정의사용자 정의 글꼴에모지 대화창의 에모지 문자에 사용할 사용자 설정 글꼴 이름언어 패널 용 사용자 정의 글꼴 이름키프로스 음절표키릴 문자키릴 문자 확장영역 A키릴 문자 확장영역 B키릴 문자 확장영역 C키릴 문자 추가영역DConf는 이름 접두사를 보존합니다에모지 사전에 사용할 기본값 언어설명: 설명: %s데저렛 문자데바나가리 문자데바나가리 확장영역딩뱃 기호바로 가기 키 비활성화비활성화:보여주지 않음도그라 문자도미노 타일완료듀플로이언 속기 문자초기 왕조 쐐기 문자고대 이집트 신성문자 형식 제어 문자고대 이집트 신성문자엘바산 문자엘리마이스 문자프리에디트 텍스트 포함응용 프로그램 창에 프리에디트 텍스트를 포함응용 프로그램 창에 프리에디트 텍스트 포함입력 방식의 프리에디트 텍스트를 어플레케이션 창에 포함시킵니다에모지에모지 선택에모지 주석 언어:에모지 주석:에모지 주석 일부분과 일치 가능gtk_accelerator_parse에 사용할 에모지 바로 가기 키이모티콘입력기를 디폴트로 활성화프로그램의 입력창에 포커스가 가면 디폴트로 입력기를 활성화합니다활성화 또는 비활성화:바로 가기 키 활성화활성화:괄호 영문자 및 숫자 추가영역괄호 영문자한중일 둘러싼 문자 및 날짜 기호괄호 한자 추가영역엔진 순서에티오피아 문자에티오피아 문자 확장영역에티오피아 문자 확장영역 A에티오피아 문자 추가영역ibus-daemon 끝내기<글꼴>현재 텍스트 응용 프로그램을 알아낼 수 없습니다. 응용 프로그램의 포커스를 다시 맞춰 보십시오. 예를 들어 Esc 키를 여러번 눌러 에모지 입력 모드를 벗어나거나, 바탕 화면을 누르고 텍스트 응용 프로그램을 다시 눌러 보십시오.자주 사용깃발패널을 항상 표시할 경우 입력 커서를 따라감음식 및 음료일반일반 문장 부호도형도형 확장영역그루지야 문자그루지야 문자 확장영역그루지야 문자 추가영역글로벌 엔진의 취득에 실패했습니다. 글라골루 문자글라골루 문자 추가영역고트 문자그랜사 문자그리스 문자 확장영역그리스 문자 및 콥트 문자구자라트 문자건잘라 곤디 문자구르무키 문자반각 및 전각 꼴한글 호환 자모한글 자모한글 자모 확장영역 A한글 자모 확장영역 B한글 음절하니피 로힝야 문자하누누 문자에모지 변종 있음하트란 문자히브리 문자자동으로 숨기기개인용 상위 확장코드상위 확장코드히라가나가로IBus 패널IBus 환경 설정IBus 데몬이 %d초 내에 시작하지 못했습니다IBus를 시작했습니다! IBus를 사용할 수 없는 경우 다음과 같은 행을 $HOME/.bashrc;에 추가하고 바탕 화면으로 다시 로그인합니다. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus는 리눅스/유닉스를 위한 지능형 입력 버스입니다.국제 음표 문자 확장영역한자 기술 문자표의문자용 기호 및 구두 기호에모지 주석이 전체 일치하지 않더라도 문자열 일부만 일치하면 찾습니다참이면, 패널을 항상 표시할 때 패널이 입력 커서를 따라갑니다. 거짓이면, 고정된 위치에서 패널이 나타납니다.황실 아람어 알파벳인도 시야크 숫자입력 방식팔레비어 새김 문자파르티아어 새김 문자자와어카이시 문자가나 확장영역 A가나 추가영역간분강희자전 부수칸나다 문자카타카나카타카나 발음 확장영역카야 리 문자Kbd키 코드:키보드 레이아웃: %s 키보드 바로 가기 키카로시디 문자크메르 문자크메르 기호코즈키 문자쿠다와디 문자<언어>언어 패널 위치언어 패널 위치:언어: %s 라오 문자라틴 확장 추가영역라틴문자 확장영역 A라틴문자 확장영역 B라틴문자 확장영역 C라틴 문자 확장영역-D라틴문자 확장영역 EASCII가 없는 라틴어 레이아웃라틴-1 문자 추가영역레프차 문자문자 모양 기호림부 문자선형 A선형 B 표의문자선형 B 음절문자엔진 이름만 나열합니다리수어시작할 때 유니코드 데이터 읽어들이기참이면 시작할 때 유니코드 데이터를 읽어들입니다. 이 데이터를 읽어들이려면 약 15MB의 메모리가 필요합니다. 거짓이면 에모지 대화창을 처음 열 때 유니코드 데이터를 읽어들입니다. 참이더라도 에모지 데이터를 읽어들인 뒤에는 유니코드 데이터를 항상 읽어들입니다.시작할 때 에모지 데이터 읽어들이기참이면 시작할 때 에모지 데이터를 읽어들입니다. 이 데이터를 읽어들이려면 약 10MB의 메모리가 필요합니다. 거짓이면 에모지 대화창을 처음 열 때 에모지 데이터를 읽어들입니다.유니코드 사전 읽어들이는 중:하위 확장코드리키아 문자리디아 문자마하자니 문자마작 타일마카사르 문자말라얌람 문자만다르어 문자마니교 문자샹슝 문자마사람 곤디 문자에모지 주석 전체가 일치할 경우가 아니더라도 지정한 개수의 문자보다 많이 일치하면 찾습니다.에모지 주석이 다음 조건에 따라 일정 문자 개수보다 더 일치하면 찾기:지정한 길이의 에모지 주석 일치지정한 정수 값의 조건에 맞게 일치지정한 정수 값 길이만큼 일치수학용 알파벳, 숫자 기호수학 연산자마야 숫자메데파이드린 문자메이테이 문자메이테이 문자 확장영역멘데어 키카쿠이 문자메뉴메로에 필기체메로에 상형문자먀오 문자여러가지 수학기호 A여러가지 수학기호 B여러가지 기호여러가지 기호 및 화살표여러가지 기호 및 그림 문자여러가지 기타 서술 기호모디 문자변조 성조 문자수정자:몽골 문자몽골 문자 추가영역더 보기…활성화된 입력 방식 목록에서 선택한 입력 방식을 아래로 이동합니다활성화된 입력 방식 목록에서 선택한 입력 방식을 위로 이동합니다므로 문자물타니 문자음악 기호미얀마 문자미얀마 확장영역 A미얀마 확장영역 B은코 문자나바테아 문자이름: %s난디나가리 문자신 타이 루에네와 문자다음 엔진 바로 가기 키다음 입력 방식:엔진이 설정되어 있지 않습니다. 없음여러가지 숫자뉘수 문자창세기 몽족 문자물건오검 문자올 치키 문자옛 헝가리 문자고대 이탈리아 문자고대 북아라비아 문자고대 페름어옛 페르시아 문자고대 소그드 문자고대 남아라비아 문자고대 튀르크 문자유니코드 선택 열기광학 인식 문자검색 테이블의 방향검색 테이블의 방향. 0 = 가로, 1 = 세로오리야 문자장식용 딩뱃 기호오세이지 문자오스마냐 문자기타기타오스만 시야크 숫자다음 페이지이전 페이지파하우몽 문자팔미라 문자파우 킨 하우 문자사람 및 신체파스파 문자파이스토스 원판페니키아 문자발음 확장영역발음 확장 추가영역플레잉카드키 또는 키 조합을 입력하십시오키 또는 키 조합을 입력하십시오. 키를 입력하면 대화 상자가 닫히게 됩니다.IME 스위치 창의 팝업 밀리초 단위의 지연기본 설정시작 일치DConf 키 접두사는 이름 변환을 중지합니다엔진 미리로드ibus 시작 시 엔진 미리 로드이전 엔진 바로 가기 키이전 입력 방식:ibus-daemon의 D-Bus 주소 출력개인 사용 영역시편 팔레비어 문자끝내기XKB 아이콘의 RGBA 값레지스트리 캐시 파일을 읽어들입니다.시스템 레지스트리 캐시를 읽어들입니다.레장 문자활성화된 입력 방식 목록에서 선택한 입력 방식을 제거설정 값 재설정초기화 중…다시 시작ibus-daemon 다시 시작루미 숫자 기호ibus 엔진을 전환할 때 .xmodmap 또는 .Xmodmap이 있으면 xmodmap 실행합니다.룬 문자사마리아 문자사우라슈트라 문자대화창의 에모지를 클립보드에 저장입력 방식 목록에 저장된 엔진 순서저장된 버전 번호언어를 선택하십시오입력 방식을 선택합니다%s의 바로 가기 키를 선택IBus 환경 설정 변경에모지 대화창의 유니코드 후보 글꼴을 설정에모지 대화창의 에모지 주석 언어를 설정글로벌 엔진의 설정에 실패했습니다. 엔진을 설정하거나 얻기IME 스위치 창을 표시할 때 밀리초 단위의 지연을 지정합니다. 기본값은 400입니다. 0 = 창을 즉시 표시합니다. 0보다 크면 밀리초 단위로 지연합니다. 0보다 작으면 창을 표시하지 않고 이전/다음 엔진으로 전환합니다.ibus가 입력 도구 모음을 표시하거나 숨기는 방법 설정검색 테이블에서 후보 창의 방향 설정샤라다 문자모든 응용 프로그램에서 동일한 입력 방식 공유쇼 문자속기 형식 컨트롤 문자존재하는 엔진 표시에모지 변종 보기시스템 트레이에 아이콘 보여주기선택한 입력 방식의 정보 보여주기입력 방식 이름 보여주기언어 도구 모음에 입력 방식 이름 보여주기확인란을 선택하면 입력 방식의 이름을 입력 도구 모음에 표시속성 패널을 표시:선택한 입력 방식 설정 보기설정 값 표시레지스트리 캐시 내용 표시이 정보 표시버전 보기시드햄 문자신할라 문자신할라 고대 숫자작은꼴 변형작은 가나꼴 확장영역표정 및 감정 표현소그드 문자소라 솜펭 문자소욤보 문자간격 조정 문자특수 문자로그인 시 ibus 시작끝 일치순다 문자순다 문자 추가영역위첨자/아래첨자화살표 추가영역 A화살표 추가영역 B화살표 추가영역 C수학 연산자 추가영역추가 문장 부호추가 기호 및 그림 문자사용자 추가영역 A사용자 추가영역 B서튼 수화 표기실헤티 나가리기호기호 및 그림 문자 확장영역-A시리아 문자시리아 문자 추가영역타갈로그 문자타그반와 문자태그타이레 문자타이삼 문자타이비엣 문자태현경 기호타크리 문자타밀 문자타밀 문자 추가영역서하 문자서하 문자 구성요소텔루구 문자타너 문자타이 문자IBus 데몬이 실행되고 있지 않습니다. 이를 시작하시겠습니까?속성 패널 돌작입니다. 0 = 보여주지 않음, 1 = 자동 숨김, 2 = 항상 표시속성 패널을 표시할 밀리세컨드 단위 시간포커스 인 상태 또는 속성 값을 바꾸었을 경우 속성 패널을 표시할 밀리세컨드 단위 시간입니다.속성에 대해 패널 아이콘을 표시하는 시간, 밀리초 단위엔진을 전환할 때 IBusEngineDesc에서 icon-prop-key 값을 통해 속성이 지정되었을 때, 패널 아이콘을 엔진 아이콘에서 속성 아이콘으로 표시하는 시간 (밀리초 단위). 이 값이 0이면 지연 시간이 없고 속성 아이콘을 즉시 표시합니다.레지스트리 캐시가 잘못되었습니다. 저장된 버전 번호는 이전에 설치된 Ibus 입력기와의 다른점을 비교하는 데 사용됩니다.목록에 있는 다음 입력 방식으로 전환하는 바로 가기 키목록에 있는 이전 입력 방식으로 전환하는 바로 가기 키목록에 있는 다음 입력 방식으로 전환하는 바로 가기 키목록에 있는 이전 입력 방식으로 전환하는 바로 가기 키입력 방식을 활성 또는 해제하는 바로 가기 키에모지 입력을 켜거나 끄는 바로 가기 키입력 방식을 전환하는 바로 가기 키 비활성화입력 방식을 전환하는 바로 가기 키 활성화입력 방식을 활성 또는 해제하는 바로 가기 키유니코드 코드 값 변환을 활성화하는 바로 가기 키에모지 주석 또는 유니코드 이름을 변환하는 바로 가기 키 목록티베트 문자티피나그 문자티르후타 문자왼쪽 위오른쪽 위교통 및 지도 기호여행 및 장소트리거 바로 가기 키gtk_accelerator_parse의 트리거 바로 가기 키US 레이아웃이 라틴어 레인아웃에 추가되었습니다. 변형된 것은 생략될 수 있습니다.우가릿 문자유니코드 선택유니코드 코드 값:유니코드 글꼴:유니코드 바로 가기 키, gtk_accelerator_parse 형식통합 캐나다 원주민 음절통합 캐나다 원주민 음절 확장영역사용법: %s <명령> [옵션...] 사용자 정의 글꼴 사용언어 패널 용 사용자 정의 글꼴 이름 사용사용자 정의 글꼴 사용:IBus 코어 대신 엔진 스키마 경로 사용, 쉼표로 구분한 경로 값 목록.전역 입력 방식 사용이전 입력 방식으로 전환는 바로 가기 키에 shift를 누른 키 사용시스템 키보드 (XKB) 레이아웃 사용시스템 키보드 레이아웃 사용xmodmap 사용바이 문자여러가지 선택자여러가지 선택자 추가영역베다 확장영역세로세로 모양완초 문자바랑 크시티 문자에모지 주석을 일부분 일치할지 여부에모지 주석 전체가 일치할 경우가 아니더라도 문자열 일부분만 일치해도 찾을지 여부.레지스트리 캐시 파일을 씁니다.시스템 레지스트리 캐시를 씁니다.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)' 값이 될 수 있습니다.이 문자 부수이 음절문자주역 6선형 기호이 목록에 자주 사용하는 에모지의 주석을 저장할 수 있습니다.이 목록에 문자가 들어 있으면 에모지 목록에서 자주 사용하는 에모지를 표시합니다.자나바자르 정방형 문자정보(_A)추가(_A)적용(_A)취소(_C)닫기(_C)삭제(_D)아래로(_D)확인(_O)기본 설정(_P)제거(_R)위로(_U)default:LTR에모지 대화 창의 자주 사용하는 에모지 주석에모지 대화 창의 자주 사용하는 에모지 목록언어: %s 입력 방식 전환 중김은주 류창우 ibus-1.5.22/po/zh_CN.po0000644000000000000000000027174213623751603011434 00000000000000# Simplified Chinese Translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2019 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # Jerry Lee , 2017. #zanata # fujiwara , 2017. #zanata # Tian Shixiong , 2018. #zanata # fujiwara , 2018. #zanata # Pany , 2019. #zanata # Tian Shixiong , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2019-07-26 04:03+0000\n" "Last-Translator: Tian Shixiong \n" "Language-Team: Chinese (China) \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Zanata 4.6.2\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "预加载引擎" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "IBus 启动时预加载的引擎" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "引擎顺序" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "保存在输入法选单中的引擎顺序" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "输入法切换窗口弹出延时微秒数" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "已储存的版本号" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 #, fuzzy msgid "Latin layouts which have no ASCII" msgstr "无 ASCII 码的拉丁字符布局" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "使用 xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "若 .xmodmap 或者 .Xmodmap 存在则当 ibus 框架启动时执行 xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "使用系统键盘布局" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "使用系统键盘(XKB)布局" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "内嵌编辑模式" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "在应用程序窗口中启用内嵌编辑模式" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "使用全局输入法" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "在所有应用程序中共享同一个输入法" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "默认启动输入法" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "当应用程序需要使用输入时自动启用输入法" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf 保留名称前缀" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "用来停止名称转换的 DConf 键前缀" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "触发快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "打开关闭输入法的快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "为 gtk_accelerator_parse 触发快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "应用快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "开启输入法的快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "禁用快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "关闭输入法的快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "下一个引擎快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "切换到列表中下一个输入法快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "上一个引擎快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "切换到列表中上一个输入法快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "自动隐藏" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "属性面板的行为。 0 = 不再显示,1 = 自动隐藏,2 = 始终显示" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "语言栏位置" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "在始终显示的情况下面板跟随输入光标" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "以毫秒为单位显示属性面板的时间" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "在离开焦点或属性变更后,以毫秒为单位显示属性面板的时间" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "候选词表方向" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "候选词表方向。0 = 水平,1 = 竖直。" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "在系统托盘上显示图标" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "显示输入法名称" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "语言栏上显示输入法名称" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB 图标的 RGBA 值" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 #, fuzzy msgid "The milliseconds to show the panel icon for a property" msgstr "显示属性面板的毫秒数" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "使用自定义字体" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "语言栏上使用自定义字体" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "自定义字体" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "自定义语言栏字体" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "用于 gtk_accelerator_parse 的 Unicode 快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "开启或关闭 Unicode 输入的快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "用于开启或关闭表情输入的快捷键" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "表情符号对话框中用于表情符号的自定义字体名称" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "emoji 字典的默认语言" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "在表情输入对话框中选择默认表情输入语言。设定值 $lang 会应用于 /usr/share/" "ibus/dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "emoji 面板中的最喜爱的 emoji 列表" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "可在表情符号列表中显示最喜爱的表情符号,但前提是该列表中存在字符。" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "表情符号对话框中的最喜爱表情符号注释列表" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "您可在此列表中为喜欢的表情符号添加注释。" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "表情符号注释是否可以部分匹配" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "是否使用部分字符而非完整字符匹配表情注释。" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "使用特定长度字符匹配表情注释" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "使用超过特定长度字符对表情注释进行匹配,而非完全匹配。" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "选择一种条件来部分匹配表情注释" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "选择以下条件来部分匹配表情注释:0 == 字首匹配, 1 == 字尾匹配, 2 == 包含匹配" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "在启动时加载 emoji 数据" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "如果设定为真 (True),则在启动时载入表情数据。大概需要 10MB 内存来载入数据。如" "果设定为假 (False),则在打开表情对话框时加载表情数据。" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "在启动时加载 Unicode 数据" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "如果设为“True”,则在启动时加载 Unicode 数据。加载数据大约需要 15MB 内存。如果" "设为“False”,则当打开表情符号对话框时加载 Unicode 数据。Unicode 数据总是会在" "表情符号数据加载之后加载,即使设置为“True”也是如此。" #: 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:209 msgid "Other" msgstr "其他" #: setup/emojilang.py:67 msgid "Select a language" msgstr "选择语言" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "取消(_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "确定(_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "更多..." #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "关于" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "关闭(_C)" #: 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 "选择输入法" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "添加(_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "输入法" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus 首选项" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "和 SHIFT 一起使用快捷键来切换到先前的输入法" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus 守护进程尚未运行。您希望启动它吗?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus 守护在 %d 秒内无法启动" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "选择 %s 的快捷键" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "切换输入法" #: setup/setup.ui:11 msgid "Horizontal" msgstr "水平" #: setup/setup.ui:14 msgid "Vertical" msgstr "竖直" #: setup/setup.ui:25 msgid "Top left corner" msgstr "左上角" #: setup/setup.ui:28 msgid "Top right corner" msgstr "右上角" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "左下角" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "右下角" #: setup/setup.ui:37 msgid "Custom" msgstr "自定义" #: setup/setup.ui:48 msgid "Do not show" msgstr "不再显示" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "自动隐藏" #: setup/setup.ui:54 msgid "Always" msgstr "总是" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "切换下一个输入法快捷键" #: setup/setup.ui:115 msgid "Next input method:" msgstr "下一输入法:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "切换上一个输入法快捷键" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "上一输入法:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "开关:" #: setup/setup.ui:238 msgid "Enable:" msgstr "启用:" #: setup/setup.ui:291 msgid "Disable:" msgstr "禁用:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "快捷键" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "设置候选词表方向" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "候选词排列方向:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "设置如何显示或隐藏语言栏的方式" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "显示属性栏:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "语言栏位置:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "选中该项将在语言栏上显示输入法的名字" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "在应用程序窗口中启用内嵌编辑模式" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "在应用程序窗口中启用输入法的内嵌编辑模式" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "使用自定义字体:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "字体和风格" #: setup/setup.ui:579 msgid "General" msgstr "常规" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "添加选中的输入法到启用输入法列表" #: setup/setup.ui:682 msgid "_Remove" msgstr "删除(_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "从启用输入法列表删除选中的输入法" #: setup/setup.ui:700 msgid "_Up" msgstr "向上(_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "上移选中的输入法" #: setup/setup.ui:718 msgid "_Down" msgstr "向下(_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "下移选中的输入法" #: setup/setup.ui:736 msgid "_About" msgstr "关于(_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "显示选中输入法的信息" #: setup/setup.ui:754 msgid "_Preferences" msgstr "首选项(_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "显示选中输入法的设置界面" #: setup/setup.ui:812 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 "" "可以通过敲击键盘快捷键或者点击面板图标来在上述列表中切换选中的输入" "法" #: setup/setup.ui:873 #, fuzzy msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "启用在表情符号注释或 Unicode 名称间转换的快捷键" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "表情符号注释" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "设置表情符号对话框中 Unicode 候选字的字体" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Unicode 字体" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "设置 emoji 面板中 emoji 释文的语言" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Emoji 释文语言:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "字首匹配" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "字尾匹配" #: setup/setup.ui:1130 msgid "Containing match" msgstr "包含匹配" #: setup/setup.ui:1176 msgid "Emoji" msgstr "表情符号" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "键盘布局" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "全局输入法设置" #: setup/setup.ui:1298 msgid "Advanced" msgstr "高级" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "登录时运行 IBus" #: setup/setup.ui:1358 msgid "Startup" msgstr "启动" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "活动" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "动物和自然" #: src/ibusemojigen.h:32 msgid "Component" msgstr "组件" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "旗帜" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "食物饮料" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "实体" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "人物和身体" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "笑脸和情绪" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "符号" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "交通工具和场所" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "基本拉丁语" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "拉丁-1 补充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "拉丁语扩展-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "拉丁语扩展-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "IPA 扩展" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "希腊和古埃及语" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "西里尔语" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "西里尔语补充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "亚美尼亚语" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "希伯来语" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "阿拉伯语" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "蒙语" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "拉丁语扩展附加" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "希腊语扩展" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "通用标点" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "上标和下标" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "货币符号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "类似字母的符号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "数字形式" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "箭头" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "数学运算符" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "各种技术类符号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "控制图" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "几何形状" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "其它各种符号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "汉、日、韩语符号和标点" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "汉、日、韩语笔画" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "汉日韩字符兼容" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "易经六边形符号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "麻将块" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "多米诺骨牌" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "纸牌" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "象棋符号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "标签" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "仅列出引擎名称" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "无法连接 IBus。\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "语言: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "尚未设置引擎。\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "设定全局引擎失败。\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "获取全局引擎失败。\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "读取系统注册缓存。" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "读取注册缓存 FILE。" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "注册缓存无效。\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "写入系统注册缓存。" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "写入注册缓存 FILE。" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "正在重置" #: tools/main.vala:399 msgid "Done" msgstr "完成" #: tools/main.vala:444 msgid "Set or get engine" msgstr "设定或获取引擎" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "退出 ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "显示可用引擎" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(暂不可用)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "重启 ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "显示版本号" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "显示注册缓存内容。" #: tools/main.vala:451 msgid "Create registry cache" msgstr "创建注册缓存" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "输出 ibus-daemon 位于 D-Bus 中的地址" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "显示配置值" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "重置配置" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "将面板中的 emoji 保存到剪贴板" #: tools/main.vala:458 msgid "Show this information" msgstr "显示本信息" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "用法:%s 命令 [选项...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "命令:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s 是未知命令!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "最爱" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "其他" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "下一页" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "上一页" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "显示表情变体" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "关闭" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "菜单" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "点击查看警告信息" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "正在加载 Unicode 字典" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "有表情符号变体" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "描述:%s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "无" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "释义:%s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "名称:%s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "别名:%s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "无法捕捉当前文字应用程序。请重新让该应用程序获得焦点。比如多次按 Esc 键来释放" "表情输入模式,点击桌面然后再点击该文字应用程序。" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "已取消选择一个 emoji" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "已将 emoji 复制到你的剪贴板" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 #, fuzzy msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "用于表情符号对话框中显示表情符号的字体" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "字体" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus 面板" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus 是一个适用于 Linux/Unix 系统的智能输入平台。" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "黄鹏 \n" "Fedora 简体中文组 " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "首选项" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "重新启动" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "退出" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/ru.po0000644000000000000000000027550113623751602011055 00000000000000# Russian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2017 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Koterpillar , 2009 # Koterpillar , 2009 # Yulia , 2010 # Yulia , 2013-2014 # yuliya , 2015. #zanata # Igor Gorbounov , 2017. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2017-04-16 03:37-0400\n" "Last-Translator: Igor Gorbounov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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.9.6\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Предварительная загрузка методов ввода" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Загружать методы ввода при запуске iBus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Порядок модулей" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Порядок модулей в списке методов ввода" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Задержка всплывающего окна переключателя IME (в миллисекундах)" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Сохраненный номер версии" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Латинские раскладки, в которых нет ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 #, fuzzy msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" "Раскладка США добавлена к латинским раскладкам. Вариант может быть опущен." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Использовать xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Использовать системную раскладку клавиатуры" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Использовать системную раскладку (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Вставить готовый текст" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Вставить готовый текст в окно приложения" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Использовать глобальный метод ввода" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Использовать один метод ввода для всех приложений" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Включить метод ввода по умолчанию" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "Включить метод ввода по умолчанию при получении приложением фокуса ввода" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf сохраняет префиксы имен." #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Префиксы ключей DConf для предотвращения преобразования имен" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Сочетание клавиш для включения/выключения" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Сочетание клавиш для включения/выключения метода ввода" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Сочетание клавиш для gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Включить сочетания клавиш" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Сочетания для включения метода ввода" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Отключить сочетания клавиш" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Сочетание для отключения метода ввода" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Клавиши для следующего метода ввода" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "Сочетание клавиш для переключения на следующий метод ввода в списке:" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Клавиши для предыдущего метода ввода" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "Сочетание клавиш для переключения на предыдущий метод ввода в списке:" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Автоматически скрывать" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Режим работы панели свойств. 0 = не показывать, 1 = автоматически скрывать, " "2 = всегда показывать" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Расположение языковой панели" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "Следовать за курсором ввода, если панель всегда видна" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Миллисекунды для отображения панели свойств" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Миллисекунды для отображения панели свойств после смены фокуса ввода или " "свойств." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Ориентация таблицы поиска" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Ориентация таблицы: 0 = горизонтально, 1 = вертикально." #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Показать значок в области уведомлений" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Показывать название метода ввода" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Показывать название метода ввода на языковой панели" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "RGBA-значение значка XKB" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Использовать свой шрифт" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Использовать свой шрифт для языковой панели" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Свой шрифт" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Свой шрифт для языковой панели" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Сочетание клавиш для gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Сочетание клавиш для включения/выключения метода ввода" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "Свой шрифт для языковой панели" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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 Peng Huang\n" "(c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Другие" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "О_тменить" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "О программе" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" 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 "Выберите метод ввода" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Добавить" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Метод ввода" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Параметры IBus" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "Использовать сочетание SHIFT для выбора предыдущего метода ввода" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus не выполняется. Запустить?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Не удалось запустить IBus через %d сек." #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Выберите комбинацию клавиш, чтобы %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "изменить метод ввода" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Горизонтально" #: setup/setup.ui:14 msgid "Vertical" msgstr "Вертикально" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Левый верхний угол" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Правый верхний угол" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Левый нижний угол" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Правый нижний угол" #: setup/setup.ui:37 msgid "Custom" msgstr "Свой" #: setup/setup.ui:48 msgid "Do not show" msgstr "Не показывать" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Автоматически скрывать" #: setup/setup.ui:54 msgid "Always" msgstr "Всегда" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "Горячие клавиши для переключения на следующий метод ввода в списке:" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Следующий метод ввода:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Горячие клавиши для переключения на предыдущий метод ввода в списке:" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Предыдущий метод ввода:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Включить или выключить:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Включить:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Выключить:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Горячие клавиши" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Установить ориентацию кандидатов в таблице поиска" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Ориентация кандидатов:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Установить поведение iBus для показа или скрытия языковой панели" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Показать панель свойств:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Расположение языковой панели:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Показывать название метода ввода на языковой панели, когда пункт выбран" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Вставить готовый текст в окно приложения" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "Вставить готовый текст метода ввода в окно приложения" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Выбрать шрифт:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Шрифт и стиль" #: setup/setup.ui:579 msgid "General" msgstr "Основные" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "Добавить выбранный метод ввода к используемым" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Удалить" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "Удалить выбранный метод ввода из списка" #: setup/setup.ui:700 msgid "_Up" msgstr "Вв_ерх" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "Переместить выбранный метод ввода вверх в списке используемых" #: setup/setup.ui:718 msgid "_Down" msgstr "В_низ" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "Переместить выбранный метод ввода вниз в списке используемых" #: setup/setup.ui:736 msgid "_About" msgstr "_О программе" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Показать информацию о выбранном методе ввода" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Параметры" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Показать настройки выбранного метода ввода" #: setup/setup.ui:812 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 "" "Активный метод ввода может переключаться на выбранные методы из " "приведенного выше списка с помощью сочетаний клавиш или нажатием левой " "кнопки мыши на значке в панели." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Сочетание клавиш для включения/выключения метода ввода" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Выбрать шрифт:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Раскладка клавиатуры" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Настройки глобального метода ввода" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Дополнительно" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "Запускать iBus при входе в систему:" #: setup/setup.ui:1358 msgid "Startup" msgstr "Запуск" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Вертикально" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "Показать имя модуля" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Не удалось подключиться к IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "язык: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Модуль не выбран.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Не удалось настроить глобальный модуль.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Не удалось получить глобальный модуль.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Чтение кэша системного реестра." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Чтение файла кэша реестра." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "Недействительный кэш реестра.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Запись в кэш системного реестра." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Запись в файл кэша реестра." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "Показать версию" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Формат: %s КОМАНДА [ПАРАМЕТР...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Команды:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "Неизвестная команда: %s\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Другие" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Закрыть" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus — интеллектуальная система ввода для Linux и Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "Alexey Kotlyarov , 2009.\n" "Yulia , 2010." #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Параметры" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Перезапустить" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "Выход" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = произвольное" #~ msgid "IBus Update" #~ msgstr "Обновление IBus" ibus-1.5.22/po/ta.gmo0000644000000000000000000006400113623751604011170 000000000000004L     # 1Hboq<  ": RH] # 4 =IN(a(@DXk 9 ".3b02c  '? X!f @C6Pcv9)^0[ .%&.UZq? #J7( '991s2-6&M@t'"3 IV8jO'Qm@D\D<.#-R4/C `  '   > !A! \!h!q! !!######## ### # #$$+$@%A&Q&NU&Q&;&P2'''O3(**i++++&+&+?!,8a,,x,J2-}-7-y-K..O.B/4Y//</t/t\00u{11N2X3%o3.3@34 4h4E5_5)~5w5 6?"8b8"0:S:&W:9~:I:);*,;W;ei;Z;*<G<]<L=MT>6>H>A"?d? ?z?v@SA(A|BCB~BYDC9CJC#D@=D9~DLDEME-AF!oF.FFGGHQgHwH61IkhI?IJ|JEKSKT)L~LQ Mz\MMHNNPkO`O;P.YP?PwP@QR3R[S(TUnV,WWuXoYxY&Z&=ZRdZgZ[2&\_Y\j\`$]W]]l^f$_3__B_U!`w`yff)ffffgg,!gNgfg xggMggcp{C~fB}*X /ntZ7TbQ%@ SFOgV)`w=?6jsd_Au 3+h\$ imI]M&Dk"zlErx:1N8-J(^|HGRW;[L4y!K Yqa5eP0,2vU9<>#'o.%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.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.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Latin layouts which have no ASCIIList engine name onlyModifiers:More…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.Saved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.Usage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2018-02-20 04:23-0500 Last-Translator: Copied by Zanata Language-Team: Tamil Language: ta MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 3.9.6 %s என்பது தெரியாத கட்டளை! (செயல்படுத்தப்படவில்லை)...எழுத்துரு மற்றும் தோற்றம்ஒரு உள்ளீடு முறையை தேர்ந்தெடுவிசைப்பலகை அமைப்புவிசைப்பலகை குறுக்குவழிகள்துவக்கம்IBus The intelligent input bus முதன்மை பக்கம்: https://github.com/ibus/ibus/wiki மேலே உள்ள பட்டியலில் விசைப்பலகைக் குறுக்குவழி விசைகளை அழுத்துவதன் மூலம் அல்லது பலகம் சின்னத்தை சொடுக்குவதன் மூலம், செயலில் உள்ள உள்ளீட்டு முறையை தேர்ந்தெடுத்துள்ள ஒன்றிலிருந்து வேறொன்றுக்கு மாற்ற முடியும்.பற்றிசெயல்படுத்தப்பட்ட உள்ளீடு முறைகளில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை சேர்கூடுதல்எப்போதும்ஆசிரியர்: %s தானாக மறைகீழ் இடது மூலைகீழ் வலது மூலைIBus உடன் இணைக்க முடியாது. கேண்டிடேட் சார்ந்து:கட்டளைகள் : பதிப்புரிமை (c) 2007-2010 Peng Huang பதிப்புரிமை (c) 2007-2010 Red Hat, Inc.பதிவக தேக்ககத்தை உருவாக்குதனிப்பயன்தனிப்பயன் எழுத்துருமொழி பலகத்துக்கான தனிப்பயன் எழுத்துரு பெயர்DConf ஆனது பெயர் முன்னொட்டுகளைப் பாதுகாத்து வைக்கிறதுவிளக்கம்: குறுக்குவிசைகளை செயல்நீக்குமுடக்கு:காண்பிக்க வேண்டாம்முடிந்ததுஉட்பொதியப்பட்ட Preedit உரைபயன்பாடு சாளரத்தில் உட்பொதியப்பட்ட Preedit உரைபயன்பாடு சாளரத்தில் உட்பொதியப்பட்ட preedit உரைபயன்பாட்டு சாளரத்தில் preedit உரையின் உள்ளீடு முறையை உட்பொதியவும்முன்னிருப்பாக உள்ளீடு முறையை செயல்படுத்துபயன்பாடு உள்ளீடுக்கு உட்படும்போது முன்னிருப்பாக உள்ளீடு முறையை செயல்படுத்துசெயல்படுத்து அல்லது முடக்கு:குறுக்குவிசைக்களை செயல்படுத்துசெயல்படுத்து:எஞ்சின்கள் வரிசைibus-daemon இலிருந்து வெளியேறுபலகம் எப்போதும் காண்பிக்கப்பட்டால் உள்ளீட்டுச் சுட்டியைப் பின் தொடரவும்பொதுமுழுமைக்குமான எஞ்சினை பெறுதல் தோல்வி. தானாக மறைகிடைமட்டம்IBus விருப்பங்கள்%d வினாடிகளில் IBus டெமானைத் தொடக்க முடியவில்லைIBus தொடங்கப்பட்டது! உங்களால் IBus ஐப் பயன்படுத்த முடியாவிட்டால், உங்கள் $HOME/.bashrc; இல் பின்வரும் வரிகளைச் சேர்த்து உங்கள் டெஸ்க்டாப்பில் மீண்டும் புகுபதிவு செய்யவும். export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus Linux/Unixக்கான உள்ளீடு பஸ்.ஆம் என அமைக்கப்பட்டால், பலகம் எப்போதும் காண்பிக்கப்பட்டால் உள்ளீட்டுச் சுட்டியைப் பின் தொடரும். இல்லை என்று அமைக்கப்பட்டால் பலகம் ஒரு குறிப்பிட்ட இடத்திலேயே இருக்கும்.உள்ளீடு முறைKbdவிசை குறியீடு:விசைப்பலகை அமைப்பு: %s விசைப்பலகை குறுக்குவழிகள்மொழி பேனல் இடம்மொழி பேனல் படம்:மொழி: %s ASCII கொண்டில்லாத இலத்தீன் லேயவுட்டுகள்எஞ்சின் பெயரை மட்டும் பட்டியலிடுமாற்றிகள்;மேலும்…செயல்படுத்தப்பட்ட உள்ளீடு முறைகளில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை கீழே நகர்த்துசெயல்படுத்தப்பட்ட உள்ளீடு முறைகள் பட்டியலில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை மேலே நகர்த்துஅடுத்த இயந்திர குறுக்குவிசைஅடுத்த உள்ளீடு முறை:எஞ்சின் அமைக்கப்படவில்லை. காணும் அட்டவணையின் திசைகாணும் அட்டவணையின் திசை. 0 = கிடைமட்டம், 1 = செங்குத்துவேறுஒரு விசையை அழுத்தவும் (அல்லது ஒரு விசை கலவையை)ஒரு விசையை அழுத்தவும் (அல்லது விசை கலவையை). விசையை விடுத்தால் உரையாடல் மூடப்படும்.IME மாற்ற சாளரத்திற்கான பாப்-அப் தாமத மில்லிசெகன்ட்முன்னுரிமைகள் பெயர் மரபை நிறுத்த DConf விசைகளின் முன்னொட்டுகள்முன்ஏற்றல் இயந்திரங்கள்ibus துவங்கும் போது முன்னேற்றப்பட்ட எந்திரங்கள் முந்தைய இயந்திர குறுக்குவிசைகள்முந்தைய உள்ளீடு முறை:ibus-daemon இன் D-Bus முகவரியை அச்சிடுவெளியேறு XKB சின்னத்தின் RGBA மதிப்புபதிவக தேக்கக FILE ஐ வாசி.கணினி பதிவக தேக்ககத்தை வாசி.செயல்படுத்தப்பட்ட உள்ளீடு முறைகளிலிருந்து தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை நீக்குஅமைவாக்க மதிப்புகளை மீட்டமைமீட்டமைக்கிறது…மறுதுவக்கம்ibus-daemon ஐ மறுதுவக்குibus எஞ்சின்கள் மாற்றப்படும் போது .xmodmap அல்லது .Xmodmap வெளியேறினால் xmodmap ஐ இயக்கு.உள்ளீடு முறை பட்டியலில் எஞ்சின்கள் வரிசை சேமிக்கப்பட்டதுசேமிக்கப்பட்ட பதிப்பு எண்ஒரு உள்ளீடு முறையை தேர்ந்தெடு%sக்கான விசைப்பலகை குறுக்குவழியை தேர்ந்தெடுIBus முன்னுரிமைகளை அமைமுழுமைக்குமான எஞ்சினை அமைத்தல் தோல்வி. எஞ்சினை அமை அல்லது பெறுமொழி பட்டையை எவ்வாறு காட்ட அல்லது மறைக்க வேண்டும் என ibus பண்பினை அமைகாணும் அட்டவணையில் நபர்களின் திசையமைப்பை அமைஅனைத்து பயன்பாடுகளிலும் சில உள்ளீடு முறையை பகிரவும்இருக்கும் எஞ்சின்களைக் காட்டுகணினி தட்டில் சின்னத்தை காட்டுதேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையின் தகவலை காட்டுஉள்ளீடு முறையின் பெயரை காட்டுமொழி பட்டையில் உள்ளீடு முறையின் பெயரை காட்டுசோதனை பெட்டியை சோதிக்கும் போது உள்ளீடு முறை பெயரை மொழி பட்டையில் காட்டு பண்புகள் பலகத்தைக் காட்டு:தேர்ந்தெடுத்த உள்ளிட்டு முறையின் அமைப்பை காட்டுஅமைவாக்க மதிப்புகளைக் காண்பிபதிவக தேக்கக உள்ளடக்கத்தைக் காண்பிஇந்தத் தகவலைக் காட்டுபதிப்பைக் காட்டுபுகுபதிவில் ibusஐ துவக்குIBus டெமான் இயங்கவில்லை. அதைத் தொடங்க வேண்டுமா?பண்புகள் பலகத்தின் நடத்தை. 0 = காண்பிக்க வேண்டாம், 1 = தானாக மறை, 2 = எப்போதும் காண்பிபண்புகள் பலகத்தை காட்ட வேண்டிய மில்லிசெக்கன்ட்பண்புகள் பலகத்தில் கவனம் செலுத்திய பிறகு அல்லது பண்புகளை மாற்றிய பிறகு பலகத்தைக் காட்ட வேண்டிய மில்லிசெக்கன்ட்.பதிவக தேக்ககம் செல்லுபடியாகாதது. சேமிக்கப்பட்ட பதிப்பு எண்ணானது முன்னர் நிறுவப்பட்ட ibus மற்றும் தற்போதுள்ள ibus இல் ஒன்று ஆகியவற்றுக்கு இடையே உள்ள வேறுபாட்டைக் கண்டறியப் பயன்படும்.பட்டியலில் அடுத்த உள்ளீடு முறைக்கு மாறுவதற்கான குறுக்குவழி விசைகள்பட்டியலில் முந்தைய உள்ளீடு முறைக்கு மாறுவதற்கான குறுக்குவழி விசைகள்பட்டியலில் அடுத்த உள்ளீடு முறைக்கு மாற்றுவதற்கான குறுக்குவழி விசைகள்முந்தைய உள்ளீடு முறைக்கு மாற்றுவதற்கான குறுக்குவழி விசைகள்உள்ளீடு முறையை நிறுத்தும் குறுக்குவிசைகள்உள்ளீடு முறையை இயக்கும் குறுக்குவிசைகள்உள்ளீடு முறைமையை துவக்கவும் நிறுத்தவும் குறுக்குவிசைகள்மேல் இடது மூலைமேல் வலது மூலைகுறுக்குவிசைகளை செயல்படுத்துgtk_accelerator_parse க்கான குறுக்கு விசைகளை இயக்குஅமெரிக்க லேயவுட் இலத்தீன் லேயவுட்டுகளுடன் இணைக்கப்படுகிறது. இதன் மாற்று வகையை புறக்கணிக்கலாம்.பயன்பாடு: %s COMMAND [OPTION...] தனிப்பயன் எழுத்துருவை பயன்படுத்துமொழி பலகத்தில் தனிபயன் எழுத்துரு பெயர்தனிப்பயன் எழுத்துருவை பயன்படுத்து:பொது உள்ளீடு முறையை பயன்படுத்துமுந்தைய உள்ளீட்டு முறைக்கு மாற குறுக்குவழியை ஷிஃப்ட் விசையுடன் பயன்படுத்தவும்கணினி விசைப்பலகை (XKB) அமைப்பை பயன்படுத்துகணினி விசைப்பலகை அமைப்பை பயன்படுத்துxmodmap ஐப் பயன்படுத்துசெங்குத்துபதிவக தேக்கக FILE இல் எழுது.கணினி பதிவக தேக்ககத்தில் எழுது.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 நிறமாகவோ இருக்கலாம்.பற்றி (_A)சேர் (_A)செயல்படுத்து (_A)ரத்து (_C)மூடு (_C)அழி (_D)கீழே (_D)சரி (_O)முன்னுரிமைகள் (_P)நீக்கு (_R)மேலே (_U)default:LTRமொழி: %s உள்ளீட்டு முறைகளை மாற்றுதல்I. Felix ibus-1.5.22/po/sr.po0000644000000000000000000025410513623751602011050 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:49+0000\n" "Last-Translator: Miloš Komarčević \n" "Language-Team: Serbian \n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Употреби прилагођени фонт" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Користи прилагођени фонт за језички панел" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Назив прилагођеног фонта за језички панел" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "Назив прилагођеног фонта за језички панел" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "Друго" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "Изаберите методу уноса" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "О_дустани" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "У _реду" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "О програму" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Затвори" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Изаберите методу уноса" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Додај" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus поставке" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "" #: 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Изаберите пречицу тастатуре за %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "" #: setup/setup.ui:14 msgid "Vertical" msgstr "" #: setup/setup.ui:25 msgid "Top left corner" msgstr "" #: setup/setup.ui:28 msgid "Top right corner" msgstr "" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "" #: setup/setup.ui:37 msgid "Custom" msgstr "" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Следећа метода уноса:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Укључи или искључи:" #: setup/setup.ui:238 msgid "Enable:" msgstr "" #: setup/setup.ui:291 msgid "Disable:" msgstr "" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Пречице тастатуре" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Оријентације кандидата:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Фонт и стил" #: setup/setup.ui:579 msgid "General" msgstr "Опште" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Уклони" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "_Горе" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "_Доле" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "_О програму" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "" #: setup/setup.ui:754 msgid "_Preferences" msgstr "Пос_тавке" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Изаберите методу уноса" #: setup/setup.ui:1298 msgid "Advanced" msgstr "" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "Покрени ibus при пријави" #: setup/setup.ui:1358 msgid "Startup" msgstr "Покретање" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Друго" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Затвори" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "IBus поставке" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus је интелигентна магистрала уноса за Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Serbian " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Поставке" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Покрени поново" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "Изађи" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/zh_TW.po0000644000000000000000000030472613623751603011465 00000000000000# Traditional Chinese translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2019 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Ding-Yi Chen , 2009. # Cheng-Chia Tseng , 2011-2012,2014. # Walter Cheuk , 2012. # fujiwara , 2015. #zanata # tomoe musashi , 2016. #zanata # Cheng-Chia Tseng , 2017. #zanata # Cheng-Chia Tseng , 2018. #zanata # Peter Pan , 2018. #zanata # fujiwara , 2018. #zanata # Peter Pan , 2019. #zanata # fujiwara , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: ibus 1.5.21\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2019-11-25 09:53+0000\n" "Last-Translator: pan93412 \n" "Language-Team: Chinese \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Zanata 4.6.2\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "預先載入引擎" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "當 IBus 啟動時預先載入引擎" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "引擎順序" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "輸入法清單中儲存的引擎順序" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME 切換器視窗彈出延遲的毫秒數" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "儲存的版本號碼" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "無 ASCII 之拉丁鍵盤配置" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "US 鍵盤配置附加到拉丁鍵盤配置。variant 可以省略。" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "使用 xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "當 ibus 引擎切換之時,若 .xmodmap 或 .Xmodmap 存在的話,則執行 xmodmap。 " #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "使用系統鍵盤配置" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "使用系統鍵盤 (XKB) 配置" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "內嵌預先編輯文字" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "在應用程式視窗中內嵌預先編輯文字" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "使用全域輸入法" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "在所有應用程式共用同一個輸入法" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "預設啟用輸入法" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "當應用程式取得輸入焦點時,預設將輸入法啟用" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf 保留名稱前綴" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "DConf 鍵的前綴,用來停止名稱轉換" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "觸發用快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "用來開啟或關閉輸入法的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse 的觸發快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "啟用快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "開啟輸入法的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "停用快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "關閉輸入法的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "「下一個引擎」快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "用來切換到清單內下一個輸入法的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "「上一個引擎」快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "用來切換到清單內上一個輸入法的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "自動隱藏" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "屬性面板的行為。0 = 不要顯示,1 = 自動隱藏,2 = 總是顯示" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "語言面板位置" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "在面板總是顯示的情況下跟隨輸入游標" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "顯示屬性面板的毫秒數" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "當焦點落在屬性面板內,或屬性變更時屬性面板的顯示毫秒數。" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "查選表單表排列方向" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "查詢表單的排列方向。0 = 水平,1 = 垂直" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "在系統匣顯示圖示" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "顯示輸入法名稱" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "在語言列顯示輸入法名稱" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB 圖示的 RGBA 值" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "顯示面板屬性圖示的毫秒數" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "使用自訂字型" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "語言面板是否使用自訂字型" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "自訂字型" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "為語言面板自訂字型" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse 的 Unicode 快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "開啟或關閉 Unicode 輸入的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse 的繪文字快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "開啟繪文字輸入或關閉的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "繪文字對話窗當中繪文字字元的自訂字型名稱" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "繪文字字典的預設語言" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "請在繪文字對話窗當中選擇繪文字字典語言。$lang 的值會套用到 /usr/share/ibus/" "dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "繪文字對話窗中的喜愛繪文字清單" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "您可以在繪文字清單中顯示喜愛的繪文字,若有列出任何字元的話。" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "繪文字對話盒中喜愛的繪文字註解列表" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "您可以為清單中喜愛的繪文字指派註解。" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "是否可以只部分符合繪文字註解" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "比對時是否可以只有部分字串符合繪文字註解,而非精確符合。" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "以指定長度符合繪文字註解" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "以超過指定字數符合部分繪文字註解,而非精確符合。" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "選擇部分符合繪文字註解的條件" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "選擇下列部分符合繪文字註解的條件之一:0 == 前綴符合,1 == 後綴符合, 2 == 內含" "符合" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "每次開啟時載入 Emoji 資料" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "如果為 True 則在每次開啟時載入 Emoji 資料,載入資料大約需要 10MB 的記憶體大" "小。當設定為 False 時則在第一次開啟 Emoji 對話框時載入 Emoji 資料。" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "每次開啟時載入 Unicode 資料" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "如果為 True 則在每次開啟時載入 Unicode 資料。載入資料需要大約 15MB 大小的記憶" "體。如果設定為 False 則在第一次開啟 Emoji 對話框時載入 Unicode 資料,就算設定" "為 True,Unicode 資料永遠都會在 Emoji 資料載入後才載入。" #: 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:209 msgid "Other" msgstr "其他" #: setup/emojilang.py:67 msgid "Select a language" msgstr "選取語言" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "取消(_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "確定(_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "其他…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "關於" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "關閉(_C)" #: 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 "選取輸入法" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "加入(_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "輸入法" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "鍵盤" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus 偏好設定" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "使用含 Shift 鍵之快捷鍵來切換至前個輸入法" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus 幕後程式並非執行中。您是否要啟動它?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus 幕後程式無法在 %d 秒後啟動" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "為 %s 選取鍵盤快捷鍵" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "切換輸入法" #: setup/setup.ui:11 msgid "Horizontal" msgstr "水平" #: setup/setup.ui:14 msgid "Vertical" msgstr "垂直" #: setup/setup.ui:25 msgid "Top left corner" msgstr "左上角" #: setup/setup.ui:28 msgid "Top right corner" msgstr "右上角" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "左下角" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "右下角" #: setup/setup.ui:37 msgid "Custom" msgstr "自訂" #: setup/setup.ui:48 msgid "Do not show" msgstr "不要顯示" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "自動隱藏" #: setup/setup.ui:54 msgid "Always" msgstr "總是" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "用來切換到清單內下一個輸入法的快捷鍵" #: setup/setup.ui:115 msgid "Next input method:" msgstr "下一個輸入法:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "用來切換到清單內上一個輸入法的快捷鍵" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "上一個輸入法:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "啟用或停用:" #: setup/setup.ui:238 msgid "Enable:" msgstr "啟用:" #: setup/setup.ui:291 msgid "Disable:" msgstr "停用:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "鍵盤快捷鍵" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "設定查詢表單內候選字詞的排列方向" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "候選詞排列方向:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "設定 IBus 如何顯示或隱藏語言列的行為" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "顯示屬性面板:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "語言面板位置:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "當選取時在語言列上輸入法名稱" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "在應用程式視窗內嵌預先編輯文字" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "在應用程式視窗內嵌輸入法的預先編輯文字" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "使用自訂字型:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "字型與風格" #: setup/setup.ui:579 msgid "General" msgstr "通用" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "加入選取的輸入法到已啟用的輸入法內" #: setup/setup.ui:682 msgid "_Remove" msgstr "移除(_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "從已啟用的輸入法中移除所選的輸入法" #: setup/setup.ui:700 msgid "_Up" msgstr "向上(_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "上移所選取的輸入法" #: setup/setup.ui:718 msgid "_Down" msgstr "向下(_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "下移所選取的輸入法" #: setup/setup.ui:736 msgid "_About" msgstr "關於(_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "顯示所選取的輸入法資訊" #: setup/setup.ui:754 msgid "_Preferences" msgstr "偏好設定(_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "顯示選取輸入法的設定" #: setup/setup.ui:812 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 "" "您可以透過按下鍵盤快捷鍵,或是點按面板圖示的方式,來從上列清單中選" "取的輸入法之中切換使用中的輸入法。" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "啟用繪文字符號或 Unicode 名稱轉換的快捷鍵" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "繪文字符號:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "啟用 Unicode 碼位轉換的快捷鍵" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Unicode 碼位:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "設定繪文字對話框上的 Unicode 候選字型" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Unicode 字體:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "設定繪文字對話窗中的繪文字註釋語言" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "繪文字註釋語言:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "部分繪文字註解符合下列條件以及至少字數:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "是否繪文字註解可以用部分字串符合取代精確符合" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "前綴符合" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "後綴符合" #: setup/setup.ui:1130 msgid "Containing match" msgstr "內含符合" #: setup/setup.ui:1176 msgid "Emoji" msgstr "繪文字" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "鍵盤配置" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "全域輸入法設定值" #: setup/setup.ui:1298 msgid "Advanced" msgstr "進階" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "在登入時啟動 IBus" #: setup/setup.ui:1358 msgid "Startup" msgstr "啟動" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "活動" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "動物與自然" #: src/ibusemojigen.h:32 msgid "Component" msgstr "元件" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "旗幟" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "食物與飲品" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "物體" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "人們 & 身體" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "笑臉 & 表情" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "符號" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "旅行與地點" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "基本拉丁字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "拉丁字-1 補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "拉丁字擴充-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "拉丁字擴充-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "IPA 國際音標擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "佔位修飾字元" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "組合式變音標記" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "希臘字與科普特字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "西里爾字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "西里爾字補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "阿美尼亞文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "希伯來文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "阿拉伯文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "敘利亞文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "阿拉伯文補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "塔納文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "Nko 西非書面文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "撒馬利亞字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "曼達文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "敘利亞文補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "阿拉伯文擴充-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "天城文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "孟加拉文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "古爾穆基文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "古吉拉特文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "歐利亞文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "泰米爾文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "泰盧固文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "卡納達文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "馬拉亞拉姆文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "僧伽羅文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "泰文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "寮文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "藏文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "緬甸文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "喬治亞文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "韓文字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "衣索比亞文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "衣索比亞文補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "切羅基文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "統一加拿大原住民音節" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "歐甘文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "盧恩文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "他加祿文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "哈努諾文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "布希德文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "塔格巴努亞文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "高棉文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "蒙古文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "統一加拿大原住民音節擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "林布文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "傣哪文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "新傣仂文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "高棉符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "布吉文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "老傣文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "組合式變音標記擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "巴厘文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "巽他文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "巴塔克文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "雷布查文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "桑塔利文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "西里爾字擴充-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "喬治亞文擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "巽他文補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "吠陀梵文擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "音標擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "音標擴充補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "組合式變音標記補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "拉丁字擴充增補" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "希臘字擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "一般標點符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "上標和下標" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "貨幣符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "符號的組合式變音標記" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "類文字符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "數字形式" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "箭頭" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "數學運算子" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "零雜技術符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "控制圖案" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "光學字元辨識" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "括圈字母數字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "方塊繪製" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "區塊元件" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "幾何形狀" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "零雜符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "裝飾符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "零雜數學用符號-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "補充箭號-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "盲人點字樣式" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "補充箭號-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "雜合數學用符號-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "補充數學運算符" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "混合符號與鍵號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "格拉哥里字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "拉丁字擴充-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "科普特文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "喬治亞文補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "提非納格字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "衣索比亞文擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "西里爾字擴充-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "補充標點符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "中日韓部首補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "康熙部首" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "表意文字描述字元" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "中日韓符號和標點符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "平假名" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "片假名" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "注音符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "韓文相容字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "日本漢文訓點號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "注音符號擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "中日韓筆劃部件" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "片假名注音擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "括圈中日韓文字和月份" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "中日韓相容字元" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "中日韓統一表意文字擴充 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "易經六十四卦象符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "中日韓統一表意文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "彝文音節字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "彝文字根" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "老傈僳文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "瓦伊文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "西里爾字擴充-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "巴蒙文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "聲調修飾符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "拉丁字擴充-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "錫爾赫特文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "常用印度數字圖樣" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "八思巴文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "索拉什特拉文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "天城文擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "克耶文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "勒姜文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "韓文字母擴充-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "爪哇文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "緬甸文擴充-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "占文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "緬甸文擴充-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "傣端文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "曼尼普爾文擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "衣索比亞文擴充-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "拉丁字擴充-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "切羅基文補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "曼尼普爾文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "韓文音節文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "韓文字母擴充-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "高段代理區" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "高段私用代理區" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "低段代理區" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "私用區塊" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "中日韓相容表意文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "字母表現形式" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "阿拉伯文表現形式-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "字形變體選取符" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "直書形式" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "組合式半形符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "中日韓相容形式" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "小寫形式變體" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "阿拉伯文表現形式-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "半寬與全寬形式" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "特殊區域" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "線形 B 音節文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "線形 B 表意文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "愛琴海數字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "古希臘數字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "古代符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "費斯托斯泥圓盤文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "呂基亞文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "卡里亞文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "科普特潤餘數字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "古意大利文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "歌德文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "古彼爾姆文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "烏加里特楔形文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "古波斯文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "猶他大學音標" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "肅伯納字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "奥斯曼亞字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "歐塞奇文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "艾爾巴桑文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "高加索阿爾巴尼亞文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "線形文字 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "塞浦路斯音節字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "規範阿拉米文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "帕爾邁拉文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "納巴泰文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "哈坦文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "腓尼基字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "呂底亞文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "麥羅埃文碑銘體" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "麥羅埃文通俗體" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "佉盧字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "古南阿拉伯文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "古北阿拉伯文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "摩尼教文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "阿維斯陀文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "帕提亞文碑銘體" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "巴列維文碑銘體" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "詩篇巴列維文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "古突厥文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "古匈牙利文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "哈乃斐羅興亞文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "魯米數字符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "古粟特字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "粟特字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "埃利邁文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "婆羅米字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "凱提字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "索朗桑朋文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "查克馬文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "馬哈佳尼文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "夏拉達文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "古僧伽羅文數字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "可吉文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "穆爾坦尼文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "庫達瓦迪文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "帕拉瓦文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "紐瓦文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "特忽塔文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "悉曇文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "莫迪文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "蒙古文補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "塔克里文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "阿洪姆文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "多格拉文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "瓦蘭齊地文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "南迪城文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "札那巴札爾方塊字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "索永布文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "包欽浩文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "比奇舒奇文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "象雄文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "馬薩拉姆共地文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "古吉拉共地文字" # ref: https://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%B9%B3%E9%9D%A2%E6%98%A0%E5%B0%84 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "瑪卡莎文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "泰米爾文補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "楔形文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "楔形數字和標點符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "古王國時期楔形文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "古埃及聖書字碑銘體" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "埃及聖書體格式控制" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "安那托利亞文碑銘體" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "巴蒙文補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "蒙羅文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "巴撒符文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "救世苗文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "梅德法伊德林文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "柏格理苗文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "表意文字符號和標點" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "西夏文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "西夏文部件" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "假名補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "假名擴充-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "小假名擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "女書文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "杜普雷速記" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "速記格式控制符" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "拜占庭音樂符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "音樂符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "古希臘音樂譜記號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "瑪雅數字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "太玄經符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "算籌記數式" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "數學用字母數字符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "薩頓手語符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "格拉哥里字母補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "創世紀苗文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "萬秋文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "門德語奇卡奎文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "阿德拉姆文" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "印度西亞克數字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "奧斯曼西亞克數字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "阿拉伯文數學用字母符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "麻將牌面" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "西洋骨牌牌面" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "撲克牌" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "括圈字母數字補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "括圈表意文字補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "雜合符號和象形圖" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "表情圖示" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "裝飾雜錦圖" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "運輸和地圖符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "煉金術符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "幾何圖形擴充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "補充箭頭-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "補充符號與象形圖" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "西洋棋符號" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "符號和象形文字擴充-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "中日韓統一表意文字擴充 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "中日韓統一表意文字擴充 C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "中日韓統一表意文字擴充 D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "中日韓統一表意文字擴充 E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "中日韓統一表意文字擴充 F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "中日韓相容表意文字補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "標籤" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "字形變體選取符補充" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "補充私用區-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "補充私用區-B" #: tools/main.vala:51 msgid "List engine name only" msgstr "僅列出引擎名稱" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "無法連接 IBus。\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "語言:%s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "尚未設定引擎。\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "無法設定全域引擎。\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "無法取得全域引擎。\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "讀取系統註冊快取。" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "讀取註冊快取 FILE。" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "註冊快取無效。\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "寫入系統註冊快取。" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "寫入註冊快取 FILE。" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "使用引擎基模位置取代 ibus 核心,可以透過逗號分割字串。" #: tools/main.vala:381 msgid "Resetting…" msgstr "重設中…" #: tools/main.vala:399 msgid "Done" msgstr "完成" #: tools/main.vala:444 msgid "Set or get engine" msgstr "設定引擎或取得引擎" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "離開 ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "顯示可用的引擎" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(尚未實作)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "重新啟動 ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "顯示版本" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "顯示註冊快取的內容" #: tools/main.vala:451 msgid "Create registry cache" msgstr "建立註冊快取" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "列印 ibus-daemon 的 D-Bus 位址" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "顯示組態值" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "重設組態值" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "將對話窗中的繪文字儲存到剪貼簿" #: tools/main.vala:458 msgid "Show this information" msgstr "顯示此資訊" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "用法:%s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "指令:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s 為未知指令!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "喜愛" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "其他" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "開啟 Unicode 選擇" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "返回繪文字選擇" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "上一頁" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "下一頁" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "顯示繪文字變化" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "關閉" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "選單" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "點擊顯示警告訊息" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "載入 Unicode 字典:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "碼點:%s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "有繪文字變化" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "描述:%s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "無" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "註釋:%s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "名稱:%s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "別名:%s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "繪文字選擇" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Unicode 選擇" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "無法取得目前的文字應用程式,請重新取回您應用程式的焦點。例如按幾次 Esc 退出繪" "文字輸入模式後,按一下桌面再重按您的文字應用程式一次。" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "已取消繪文字的選擇。" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "已將繪文字複製到您的剪貼簿。" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "繪文字對話盒之繪文字字元用「FONT」字型" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "FONT" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "繪文字對話盒的「LANG」語言註解。例:「en」" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "LANG" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "可以部分符合繪文字註解" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "符合指定整數長度" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "符合指定整數的條件" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus 面板" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus 為 Linux/Unix 上的智慧型輸入法框架。" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "Ding-Yi Chen 陳定彞 , 2009.\n" "Cheng-Chia Tseng , 2010-17." #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "偏好設定" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "重新啟動" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "結束" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/or.gmo0000644000000000000000000004761413623751604011217 00000000000000   ! 3 7 #M q   o ! <' d m t     H 5K R#^ ((@1rD %- HS.d0c    ,@7Cx9R)X^0 .M%]&?^f(z911k2-.&E@l'" 8/h@DWD<.-M4{/7'Go>  ;\chow~   Dr<6a/2Q -  !!!G!#"-'"dU"5""H#PW##4#q#ck$$n$/Y%G%s%sE&&l''<(e:)&))C)+*X>*"**k*;+{-%---0-4 .,@.-m..d.////k0B1IT1A1~1_2x22344H35g|5b56G6V~6%6W6]S77Q8Oj8w8N29K9Z9E(:bn:[:-;;Z<V=ue=d=H@>u>>v?fK@;@.@KAiAFB>IBC>DDEHFFVG'G0HeHHH// ~'8ZN2oM xnb96pqD^Y@g`[ ?j+GmT%FV*ArXJ0{Sd]\h";B1| uH($5E4t7&k,a.-LUyes<Pc#}:!3%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Embed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonGeneralGet global engine failed. HorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s List engine name onlyModifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsRestartRestart ibus-daemonSaved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow setup of the selected input methodShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutVerticalWrite the registry cache FILE.Write the system registry cache._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:48+0000 Last-Translator: Manoj Kumar Giri Language-Team: Oriya Language: or MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s ଟି ଗୋଟିଏ ଅଜଣା ନିର୍ଦ୍ଦେଶ! (କାର୍ଯ୍ୟକାରୀ ହୋଇନାହିଁ)...ଅକ୍ଷରରୂପ ଏବଂ ଶୈଳୀସର୍ବସାଧାରଣ ନିବେଶ ପ୍ରଣୀଳୀ ବିନ୍ୟାସକିବୋର୍ଡ ବିନ୍ୟାସକିବୋର୍ଡ ସଂକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକଆରମ୍ଭIBus ବୁଦ୍ଧିମାନ ନିବେଶ ପରିପଥ ମୂଖ୍ୟ ପୃଷ୍ଠା: https://github.com/ibus/ibus/wiki ବିବରଣୀବଚ୍ଛିତ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ ନିବେଶ ପ୍ରଣାଳୀରେ ଯୋଗକରନ୍ତୁଉନ୍ନତସର୍ବଦାଲେଖକ: %s ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଲୁଚାନ୍ତୁତଳପାଖ ବାମ କୋଣତଳ ପାଖ ଡ଼ାହାଣ କୋଣIBus ସହିତ ସଂଯୋଗ ସ୍ଥାପନ କରିପାରିବେ ନାହିଁ। ପ୍ରାର୍ଥୀ ଅନୁସ୍ଥାପନ:ଆଦେଶଗୁଡିକ: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.ପଞ୍ଜିକରଣ କ୍ୟାଶେ ସୃଷ୍ଟିକରନ୍ତୁଇଚ୍ଛାରୂପୀଇଚ୍ଛାରୂପୀ ଅକ୍ଷରରୂପଭାଷା ତାଲିକା ପାଇଁ ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ନାମDConf ନାମ ଉପସର୍ଗଗୁଡ଼ିକୁ ସଂରକ୍ଷିତ ରଖିଥାଏବର୍ଣ୍ଣନା: ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ନିଷ୍କ୍ରିୟ କରନ୍ତୁନିଷ୍କ୍ରିୟ କରନ୍ତୁ:ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟନିବେଶ ପଦ୍ଧତିର ପ୍ରୀଡିତ ପାଠ୍ୟକୁ ପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ କରନ୍ତୁପୂର୍ବନିର୍ଦ୍ଧାରିତ ଭାବରେ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ କରନ୍ତୁପୂର୍ବନିର୍ଦ୍ଧାରିତ ଭାବରେ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ କରନ୍ତୁ ଯେତେବେଳେ ପ୍ରୟୋଗକୁ ନିବେଶ ଲକ୍ଷ୍ଯ ମିଳିଥାଏସକ୍ରିୟ ଅଥବା ନିଷ୍କ୍ରିୟ:ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ସକ୍ରିୟ କରନ୍ତୁସକ୍ରିୟ କରନ୍ତୁ:ଯନ୍ତ୍ର କ୍ରମibus-ଡେମନରୁ ପ୍ରସ୍ଥାନ କରନ୍ତୁସାଧାରଣସର୍ବସାଧାରଣ ଯନ୍ତ୍ର ପାଇବାରେ ବିଫଳ। ଭୂ-ସମାନ୍ତରାଳIBus ପସନ୍ଦIBus ଡେମନ %d ସେକଣ୍ଡରେ ଆରମ୍ଭ ହୋଇ ପାରିଲା ନାହିଁIBus ଆରମ୍ଭ ହୋଇସାରିଛି! ଯଦି ଆପଣ IBus ବ୍ୟବହାର କରି ନପାରନ୍ତି, ତେବେ ଦୟାକରି ନିମ୍ନଲିଖିତ ଧାଡ଼ିଗୁଡ଼ିକୁ $HOME/.bashrcରେ ଯୋଗ କରନ୍ତୁ, ତାପରେ ଆପଣଙ୍କର ଡେସ୍କଟପକୁ ପୁଣି ଲଗଇନ କରନ୍ତୁ। export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus ହେଉଛି Linux/Unix ପାଇଁ ଗୋଟିଏ ବୁଦ୍ଧିମାନ ନିବେଶ ପରିପଥ।ନିବେଶ ପ୍ରଣାଳୀKbdକି ସଂକେତ:କିବୋର୍ଡ ବିନ୍ୟାସ: %s କିବୋର୍ଡ ସକ୍ଷିପ୍ତପଥଭାଷା ଫଳକ ଅବସ୍ଥାନଭାଷା ଫଳକ ଅବସ୍ଥାନ:ଭାଷା: %s କେବଳ ଯନ୍ତ୍ର ନାମକୁ ତାଲିକାଭୁକ୍ତ କରନ୍ତୁରୂପାନ୍ତରକ:ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତିଗୁଡ଼ିକରେ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ ତଳକୁ ଘୁଞ୍ଚାନ୍ତୁସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତି ତାଲିକାରେ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ ଉପରକୁ ଘୁଞ୍ଚାନ୍ତୁପରବର୍ତ୍ତି ଯନ୍ତ୍ର ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକପରବର୍ତ୍ତି ନିବେଶ ପ୍ରଣାଳୀ:କୋଣସି ଯନ୍ତ୍ର ସେଟ ହୋଇନାହିଁ। ଅବଲୋକନ ସାରଣୀର ଅନୁସ୍ଥାପନଅବଲୋକନ ସାରଣୀର ଅନୁସ୍ଥାପନ। 0 = ଭୂ-ସମାନ୍ତର, 1 = ଭୂ-ଲମ୍ବଅନ୍ୟାନ୍ୟଦୟାକରି ଗୋଟିଏ କି (କିମ୍ବା ଗୋଟିଏ କି ସଂଯୋଜନ) ଦବାନ୍ତୁ।ଦୟାକରି ଗୋଟିଏ କି (କିମ୍ବା ଗୋଟିଏ କି ସଂଯୋଜନ) ଦବାନ୍ତୁ। କିକୁ ଛାଡ଼ିଦେଲାପରେ ସଂଳାପଟି ବନ୍ଦ ହୋଇଯିବ।IME ପରିବର୍ତ୍ତନକାରୀ ୱିଣ୍ଡୋ ପାଇଁ ପପ୍‌ଅପ୍‌ ବିଳମ୍ବ ମିଲିସେକେଣ୍ଡରେପସନ୍ଦନାମ ପରିବର୍ତ୍ତନକୁ ଅଟକାଇବା ପାଇଁ DConf କିଗୁଡ଼ିକର ଉପସର୍ଗଗୁଡ଼ିକଯନ୍ତ୍ରକୁ ପ୍ରାକ ଧାରଣ କରନ୍ତୁibus ଆରମ୍ଭ ସମୟରେ ଯନ୍ତ୍ର ପ୍ରାକ ଧାରଣ କରନ୍ତୁପୂର୍ବ ଯନ୍ତ୍ରର ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀ:ibus-ଡେମନର D-Bus ଠିକଣାକୁ ମୁଦ୍ରଣ କରନ୍ତୁବିଦାୟ ନିଅନ୍ତୁପଞ୍ଜିକରଣ କ୍ୟାଶେ ଫାଇଲକୁ ପଢ଼ନ୍ତୁ।ତନ୍ତ୍ର ପଞ୍ଜିକରଣ କ୍ୟାଶେକୁ ପଢ଼ନ୍ତୁ।ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତିରୁ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ କାଢ଼ିଦିଅନ୍ତୁପୁନଃଚାଳନibus-ଡେମନକୁ ପୁନଃପ୍ରାରମ୍ଭ କରନ୍ତୁନିବେଶ ପ୍ରଣାଳୀ ତାଲିକାରେ ସଂରକ୍ଷିତ ଯନ୍ତ୍ର କ୍ରମସଂରକ୍ଷିତ ସଂସ୍କରଣ କ୍ରମ ସଂଖ୍ୟାଗୋଟିଏ ନିବେଶ ପ୍ରଣୀଳୀ ବାଛନ୍ତୁ%s ପାଇଁ କିବୋର୍ଡ ସକ୍ଷିପ୍ତପଥ ବାଛନ୍ତୁIBus ପସନ୍ଦଗୁଡ଼ିକୁ ସେଟକରନ୍ତୁସର୍ବସାଧାରଣ ଯନ୍ତ୍ର ସେଟ କରିବାରେ ବିଫଳ। ଯନ୍ତ୍ରକୁ ସେଟ କରନ୍ତୁ କିମ୍ବା ଆଣନ୍ତୁଭାଷା ସୂଚକକୁ ଦର୍ଶାଇବା ଅଥବା ଲୁଚାଇବା ପାଇଁ ibus ର ଆଚରଣକୁ ସେଟକରନ୍ତୁଅବଲୋକନ ସାରଣୀରେ ବ୍ୟକ୍ତିମାନଙ୍କର ଅନୁସ୍ଥାପନ ସେଟକରନ୍ତୁସମସ୍ତ ପ୍ରୟୋଗଗୁଡ଼ିକ ମଧ୍ଯରେ ଏକା ପ୍ରକାରର ନିବେଶ ପଦ୍ଧତିକୁ ସହଭାଗ କରନ୍ତୁଉପଲବ୍ଧ ଯନ୍ତ୍ରଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁତନ୍ତ୍ର ଟ୍ରେରେ ଚିତ୍ରସଂକେତଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁବଚ୍ଛିତ ନିବେଶ ପଦ୍ଧତିର ସୂଚନା ଦର୍ଶାନ୍ତୁନିବେଶ ପଦ୍ଧତି ନାମ ଦର୍ଶାନ୍ତୁଭାଷା ତାଲିକା ପାଇଁ ନିବେଶ ପଦ୍ଧତି ନାମ ଦର୍ଶାନ୍ତୁନିବେଶ ପଦ୍ଧତି ନାମକୁ ଭାଷା ସୂଚକରେ ଦର୍ଶାନ୍ତୁ ଯେତେବେଳେ ଯାଞ୍ଚବାକ୍ସକୁ ଯାଞ୍ଚକରୁଛନ୍ତିବଚ୍ଛିତ ନିବେଶ ପ୍ରଣାଳୀର ବ୍ୟବସ୍ଥାକୁ ଦର୍ଶାନ୍ତୁପଞ୍ଜିକରଣ କ୍ୟାଶେର ବିଷୟବସ୍ତୁ ଦର୍ଶାନ୍ତୁଏହି ସୂଚନାକୁ ଦର୍ଶାନ୍ତୁସଂସ୍କରଣ ଦେଖାନ୍ତୁଲଗଇନ ସମୟରେ ibus କୁ ଆରମ୍ଭ କରନ୍ତୁIBus ଡେମନ ଚାଲୁ ନାହିଁ। ଆପଣ ଏହାକୁ ଆରମ୍ଭ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି?ପଞ୍ଜିକରଣ କ୍ୟାଶେ ଅବୈଧ ଅଟେ। ସଂରକ୍ଷିତ ସଂସ୍କରଣ କ୍ରମ ସଂଖ୍ୟାକୁ ପୂର୍ବରୁ ସ୍ଥାପିତ ibus ଏବଂ ପ୍ରଚଳିତ ibus ମଧ୍ଯରେ ପାର୍ଥକ୍ୟକୁ ଯାଞ୍ଚ କରିବା ପାଇଁ ବ୍ୟବହାର କରାଯାଇଥାଏ।ତାଲିକାରେ ପରବର୍ତ୍ତୀ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକତାଲିକାରେ ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକତାଲିକାରେ ପରବର୍ତ୍ତୀ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକତାଲିକାରେ ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକନିବେଶ ପଦ୍ଧତିକୁ ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥ କି ଗୁଡ଼ିକନିବେଶ ପଦ୍ଧତିକୁ ଅନ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥ କି ଗୁଡ଼ିକନିବେଶ ପଦ୍ଧତିକୁ ଅନ କିମ୍ବା ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକଉପର ପାଖ ବାମ କୋଣଉପର ପାଖ ଡ଼ାହାଣ କୋଣସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ଟ୍ରିଗର କରନ୍ତୁgtk_accelerator_parse ପାଇଁ ସଂକ୍ଷିପ୍ତ ପଥ ଚାବିଗୁଡ଼ିକୁ ସକ୍ରିୟ କରନ୍ତୁବ୍ୟବହାର: %s COMMAND [OPTION...] ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ବ୍ୟବହାର କରନ୍ତୁଭାଷା ତାଲିକା ପାଇଁ ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ନାମକୁ ବ୍ୟବହାର କରନ୍ତୁଇଚ୍ଛାରୂପଣ ଅକ୍ଷରରୂପ ବ୍ୟବହାର କରନ୍ତୁ:ସର୍ବସାଧାରଣ ନିବେଶ ପ୍ରଣୀଳୀକୁ ବ୍ୟବହାର କରନ୍ତୁshift ସହିତ ସଂକ୍ଷିପ୍ତ ପଥକୁ ପୂର୍ବ ନିବେଶ ପଦ୍ଧତିକୁ ବ୍ୟବହାର କରନ୍ତୁତନ୍ତ୍ର କିବୋର୍ଡ (XKB) ବିନ୍ୟାସକୁ ବ୍ୟବହାର କରନ୍ତୁତନ୍ତ୍ର କିବୋର୍ଡ ବିନ୍ୟାସକୁ ବ୍ୟବହାର କରନ୍ତୁଭୂଲମ୍ବପଞ୍ଜିକରଣ କ୍ୟାଶେ ଫାଇଲକୁ ଲେଖନ୍ତୁ।ତନ୍ତ୍ର ପଞ୍ଜିକରଣ କ୍ୟାଶେକୁ ଲେଖନ୍ତୁ।ବିବରଣୀ (_A)ଯୋଗ କରନ୍ତୁ (_A)ପ୍ରୟୋଗ କରନ୍ତୁ (_A)ବାତିଲ କରନ୍ତୁ (_C)ବନ୍ଦ କରନ୍ତୁ (_C)ଲିଭାନ୍ତୁ (_D)ତଳ (_D)ଠିକ ଅଛି (_O)ପସନ୍ଦ (_P)କାଢ଼ନ୍ତୁ (_R)ଉପର (_U)default:LTRଭାଷା: %s ନିବେଶ ପ୍ରଣାଳୀଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରୁଅଛିମନୋଜ କୁମାର ଗିରି ibus-1.5.22/po/he.po0000644000000000000000000027124313623751600011020 00000000000000# translation of ibus.pot to Hebrew # Hebrew translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2020 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Yaron Shahrabani , 2020. msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2020-01-05 18:49+0000\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Weblate 3.9.1\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "לטעון מנועים מראש" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "לטעון מנועים במהלך הטעינה של ibus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "סדר מנועים" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "סדר מנועים שמור ברשימת שיטות קלט" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "השהיית חלונית קופצת במילישניות לחלון בורר IME" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "מספר גרסה שמור" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "להשתמש בפריסת המקלדת של המערכת" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "להשתמש בפריסת המקלדת של המערכת (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "הטעמת טקסט שנערך מראש" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "הטמעת טקסט שנערך מראש בחלון היישום" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "להשתמש בשיטת קלט גלובלית" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "לשתף את אותה שיטת הקלט בין כל היישומים" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "הפעלת שיטת קלט כבררת מחדל" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "הפעלת שיטת שלט כבררת מחדל כאשר היישום מקבל מיקוד על קלט" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "שימור קידומות שמות ב־DConf" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "קידומות של מפתחות ב־DConf להפסקת המרת שמות עבורן" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "מקשי קיצור להקפצה" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "מקשי הקיצור להפעלה או השבתה של שיטת קלט" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "מקשי קיצור להקפצה של gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "הפעלת מקשי קיצור" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "מקשי הקיצור להפעלת שיטת קלט" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "השבתת מקשי קיצור" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "מקשי הקיצור לכיבוי שיטת קלט" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "מקשי הקיצור למנוע הבא" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "מקשי הקיצור למעבר לשיטת הקלט הבאה ברשימה" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "מקשי הקיצור למנוע הקודם" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "מקשי הקיצור למעבר לשיטת הקלט הקודמת ברשימה" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "הסתרה אוטומטית" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "התנהגות חלונית המאפיינים. 0 = לא להציג, 1 = להסתיר אוטומטית, 2 = להציג תמיד" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "מיקום חלונית שפה" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "לעקוב אחר סמן הקלט במקרה שהחלונית תמיד מופיעה" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "המילישניות להצגת חלונית המאפיינים" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "המילישניות להצגת חלונית מאפיינים לאחר שינויים במיקוד או במאפיינים." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "כיוון טבלת החיפוש" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "כיוון טבלת החיפוש. 0 = אופקית, 1 = אנכית" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "הצגת סמל במגש המערכת" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "להציג את שם שיטת הקלט" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "הצגת שם שיטת הקלט בסרגל השפה" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 #, fuzzy msgid "The milliseconds to show the panel icon for a property" msgstr "המילישניות להצגת חלונית המאפיינים" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "להשתמש בגופן מותאם אישית" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "להשתמש בשם של גופן בהתאמה אישית ללוח השפה" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "גופן בהתאמה אישית" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "שם גופן בהתאמה אישית לחלונית גופן" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "מקשי קיצור להקפצה של gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "מקשי הקיצור להפעלה או השבתה של שיטת קלט" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 #, fuzzy msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "מקשי קיצור להקפצה של gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 #, fuzzy msgid "The shortcut keys for turning emoji typing on or off" msgstr "מקשי הקיצור להפעלה או השבתה של שיטת קלט" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "שם גופן בהתאמה אישית לחלונית גופן" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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 רד הט בע״מ." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "אחר" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "נא לבחור שיטת קלט" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "על אודות" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" 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 "נא לבחור שיטת קלט" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "הו_ספה" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "שיטת קלט" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "העדפות IBus" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "יש להשתמש במקש קיצור עם shift כדי לעבור לשיטת הקלט הקודמת" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "הסוכן של IBus אינו פעיל. להפעיל אותו?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "לא ניתן להפעיל את הסוכן של IBus תוך %d שניות" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "נא לבחור קיצור מקלדת עבור %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "החלפת שיטות קלט" #: setup/setup.ui:11 msgid "Horizontal" msgstr "אופקי" #: setup/setup.ui:14 msgid "Vertical" msgstr "אנכי" #: setup/setup.ui:25 msgid "Top left corner" msgstr "פינה שמאלית עליונה" #: setup/setup.ui:28 msgid "Top right corner" msgstr "פינה ימנית עליונה" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "פינה שמאלית תחתונה" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "פינה ימנית תחתונה" #: setup/setup.ui:37 msgid "Custom" msgstr "בהתאמה אישית" #: setup/setup.ui:48 msgid "Do not show" msgstr "לא להציג" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "להסתיר אוטומטית" #: setup/setup.ui:54 msgid "Always" msgstr "תמיד" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "מקשי הקיצור להחלפה לשיטת הקלט הבאה ברשימה" #: setup/setup.ui:115 msgid "Next input method:" msgstr "שיטת הקלט הבאה:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "מקשי הקיצור להחלפה לשיטת הקלט הקודמת ברשימה" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "שיטת הקלט הקודמת:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "…" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "הפעלה או השבתה:" #: setup/setup.ui:238 msgid "Enable:" msgstr "הפעלה:" #: setup/setup.ui:291 msgid "Disable:" msgstr "השבתה:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "קיצורי מקלדת" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "הגדרת כיוון המועמדים בטבלת החיפוש" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "כיוון המועמדים:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "הגדרת ההתנהגות של ibus בנוגע להצגת או הסתרת סרגל השפה" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "הצגת לוח מאפיינים:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "מיקום לוח השפה:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "להציג את שם שיטת הקלט בסרגל השפה כשהתיבה מסומנת" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "הטמעת טקסט שנערך מראש בחלון היישום" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "הטמעת הטקסט שנערך מראש של שיטת קלט בחלון היישום" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "להשתמש בגופן בהתאמה אישית:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "גופן וסגנון" #: setup/setup.ui:579 msgid "General" msgstr "כללי" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "להוסיף את שיטת הקלט הנבחרת לשיטות הקלט הפעילות" #: setup/setup.ui:682 msgid "_Remove" msgstr "הס_רה" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "להסיר את שיטת הקלט הנבחרת משיטות הקלט הפעילות" #: setup/setup.ui:700 msgid "_Up" msgstr "למ_עלה" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "להעלות את שיטת הקלט ברשימת שיטות הקלט הפעילות" #: setup/setup.ui:718 msgid "_Down" msgstr "למ_טה" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "להוריד את שיטת הקלט ברשימת שיטות הקלט הפעילות" #: setup/setup.ui:736 msgid "_About" msgstr "על _אודות" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "להציג מידע על שיטת הקלט הנבחרת" #: setup/setup.ui:754 msgid "_Preferences" msgstr "הע_דפות" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "להציג את הגדרות שיטת הקלט הנבחרת" #: setup/setup.ui:812 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 "" "ניתן להחליף את שיטת הקלט באופן מחזורי מתוך הנבחרות שברשימה הבאה על " "ידי לחיצה על מקשי הקיצור במקלדת או על ידי לחיצה על הסמל שבלוח." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "מקשי הקיצור להפעלה או השבתה של שיטת קלט" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "להשתמש בגופן בהתאמה אישית:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "פריסת מקלדת" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "הגדרות גלובליות לשיטות קלט" #: setup/setup.ui:1298 msgid "Advanced" msgstr "מתקדם" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "להפעיל את ibus עם הכניסה למערכת" #: setup/setup.ui:1358 msgid "Startup" msgstr "התחלה" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "אנכי" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "List engine name only" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Can't connect to IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "language: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "No engine is set.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Set global engine failed.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Get global engine failed.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Read the system registry cache." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Read the registry cache FILE." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "The registry cache is invalid.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Write the system registry cache." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Write the registry cache FILE." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Set or get engine" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Exit ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "Show available engines" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Not implemented)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Restart ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "Show version" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Show the content of registry cache" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Create registry cache" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Print the D-Bus address of ibus-daemon" #: tools/main.vala:453 #, fuzzy msgid "Show the configuration values" msgstr "Show this information" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "Show this information" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Usage: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Commands:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s is unknown command!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "אחר" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_סגירה" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "תיאור:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "עדכון IBus" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus היא אפיק קלט חכם ללינוקס/יוניקס." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Yaron Shahrabani " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "העדפות" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "הפעלה מחדש" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "יציאה" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:RTL" #~ 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 = בהתאמה אישית" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Super+רווח הוא מקש הקיצור כבררת המחדל מעכשיו." ibus-1.5.22/po/lv.po0000644000000000000000000026143513623751601011050 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:47+0000\n" "Last-Translator: Tranzistors \n" "Language-Team: Latvian \n" "Language: lv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " "2);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Pārlādēt dzinējus" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Laicīgi ielādēt dzinējus ibus ielādes laikā" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Izmantot sistēmas tastatūras izkārtojumu" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Izmantot sistēmas tastatūras (XKB) izkārtojumu " #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Iegult pirmsrediģēšanas tekstu" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Iegult pirmsrediģēšanas tekstu lietotnes logā" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Izmantot globālo ievades metodi" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Starp lietotnēm izmantot vienu un to pašu ievades metodi" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Aktivēt ievades metodi pēc noklusējuma" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 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/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Trigera saīsņu taustiņi" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 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" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Aktivēt īsinājuma taustiņus" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Saīsņu taustiņi, lai ieslēgtu ievades metodi " #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Deaktivēt īsinājumu taustiņus" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Saīsņu taustiņi, lai izslēgtu ievades metodi " #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Nākošā dzinēja saīsņu taustiņi" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 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/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Iepriekšējā dzinēja saīsņu taustiņi" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 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/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Autom. slēpšana" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Valodas paneļa pozīcija" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Apsekošanas tabulas novietojums" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Apsekošanas tabulas novietojums. 0 = horizontāls, 1 = vertikāls" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Rādīt ikonu sistēmas ikonu joslā" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Rādīt ievades metodes nosaukumu" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Parādīt ievades metodes nosaukumu valodas joslā" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Izmantot izvēles fontu" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Izmantojamais izvēles fonta nosaukums valodas panelim" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Izvēlēts fonts" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Izvēlētā fonta nosaukums valodas panelim" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Saīsņu taustiņi, lai ieslēgtu vai izslēgtu ievades metodi" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 #, fuzzy msgid "The shortcut keys for turning emoji typing on or off" msgstr "Saīsņu taustiņi, lai ieslēgtu vai izslēgtu ievades metodi" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "Izvēlētā fonta nosaukums valodas panelim" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Autortiesības (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Cits" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "Izvēlieties ievades metodi" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "At_celt" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_Labi" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Par" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Aizvērt" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Valoda: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Tastatūras izkārtojums: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autors: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Apraksts:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Izvēlieties ievades metodi" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Pievienot" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Ievades metode" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus iestatījumi" #: setup/ibus-setup.desktop:4 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:67 msgid "Key code:" msgstr "Taustiņa kods:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modifikatoru taustiņi:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Pielietot" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Dzēst" #: 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 "" "Lūdzu, nospiediet taustiņu (vai taustiņu kombināciju).\n" "Dialoga logs tiks aizvērts, kad taustiņš tiks atlaists." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Lūdzu, nospiediet taustiņu (vai taustiņu kombināciju)" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Izvēlieties tastatūras saīsni priekš %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horizontāli" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertikāli" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Augšējais kreisais stūris" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Augšējais labais stūris" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Apakšējais kreisais stūris" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Apakšējais labais stūris" #: setup/setup.ui:37 msgid "Custom" msgstr "Izvēlēts" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "Vienmēr" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Nākamā ievades metode" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Iepriekšējā ievades metode:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Aktivēt vai deaktivēt:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Aktivēt:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Deaktivēt:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Tastatūras īsceļi" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Iestatīt kandidātu orientāciju apsekošanas tabulā" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Kandidātu orientācija:" #: setup/setup.ui:407 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:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Valodas paneļa pozīcija:" #: setup/setup.ui:494 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:508 msgid "Embed preedit text in application window" msgstr "Iegult pirmsrediģēšanas tekstu lietotnes logā" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "Iegult ievades metodes pirmsrediģēšanas tekstu lietotnes logā" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Lietot izvēlētu fontu:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Fonts un stils" #: setup/setup.ui:579 msgid "General" msgstr "Vispārīgi" #: setup/setup.ui:671 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:682 msgid "_Remove" msgstr "_Izņemt" #: setup/setup.ui:689 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:700 msgid "_Up" msgstr "_Augšup" #: setup/setup.ui:707 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:718 msgid "_Down" msgstr "_Lejup" #: setup/setup.ui:725 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:736 msgid "_About" msgstr "P_ar" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Parādīt informāciju par izvēlēto ievades metodi" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Iestatījumi" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Rādīt izvēlētās ievadies metodes iestatījumus" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Saīsņu taustiņi, lai ieslēgtu vai izslēgtu ievades metodi" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Lietot izvēlētu fontu:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Tastatūras izkārtojums" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Globālās ievades metodes iestatījumi" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Paplašināti" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Inteliģentā ievades kopne\n" "Mājas lapa: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Startēt ibus līdz ar pieslēgšanos" #: setup/setup.ui:1358 msgid "Startup" msgstr "Startēšana" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Vertikāli" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Cits" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Aizvērt" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "Apraksts:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "IBus iestatījumi" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus ir inteliģenta ievades kopne Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "Arvis Lācis\n" "Pēteris Krišjānis\n" "Rūdolfs Mazurs" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Iestatījumi" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Pārstartēt" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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" ibus-1.5.22/po/tr.po0000644000000000000000000031016613623751602011051 00000000000000# Turkish translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2020 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Serdar Sağlam , 2019. #zanata # Oğuz Ersen , 2019, 2020. msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2020-01-03 13:37+0000\n" "Last-Translator: Oğuz Ersen \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n>1);\n" "X-Generator: Weblate 3.9.1\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Motorları önceden yükle" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Ibus başlatılırken motorları önceden yükle" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Motor sırası" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Giriş yöntemi listesinde kayıtlı motor sırası" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME değiştirici penceresi için açılır pencere gecikme milisaniyesi" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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 değiştirici penceresini gösterecek açılır pencere gecikmesini milisaniye " "olarak ayarlayın. Varsayılan değer 400'dür. 0 = Pencereyi hemen göster. 0 < " "Milisaniye cinsinden gecikme. 0 > Pencereyi gösterme ve önceki/sonraki " "motorlara geçiş yap." #: data/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Kaydedilen versiyon numarası" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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 "" "Kaydedilen versiyon numarası, daha önce kurulmuş olan ibus ile mevcut " "ibus'un biri arasındaki farkı kontrol etmek için kullanılacaktır." #: data/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "ASCII içermeyen Latin düzenleri" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "ABD düzeni Latin düzenlerine eklenir. varyant göz ardı edilebilir." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmap kullan" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "İbus motorları değiştirildiğinde .xmodmap veya .Xmodmap mevcutsa xmodmap " "komutunu çalıştır." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Sistem klavye düzenini kullan" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Sistem klavye (XKB) düzenini kullan" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Ön-Düzenleme Metnini Ekle" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Uygulama Penceresinde Ön-Düzenleme Metnini Ekle" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Global giriş yöntemini kullan" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Tüm uygulamalar ile aynı giriş yöntemini paylaş" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Giriş yöntemini varsayılan olarak etkinleştir" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "Uygulama giriş odağı aldığında varsayılan olarak giriş yöntemini etkinleştir" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf isim koruma önekleri" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "İsim dönüştürmeyi durdurmak için DConf anahtarlarının önekleri" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Tetikleme kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Giriş yöntemini açmak veya kapatmak için kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse için tetikleme kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Etkinleştirme kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Giriş yöntemini açmak için kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Devre dışı bırakma kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Giriş yöntemini kapatmak için kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Sonraki motor kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "Listedeki bir sonraki giriş yöntemine geçmek için kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Önceki motor kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "Listedeki bir önceki giriş yöntemine geçmek için kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Otomatik gizle" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Özellik panelinin davranışı. 0 = Gösterme, 1 = Otomatik gizle, 2 = Her zaman " "göster" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Dil panelinin konumu" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "Panelin her zaman gösterilmesi durumunda giriş imlecini takip et" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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 "" "Değer doğruysa, panelin her zaman gösterilmesi durumunda panel giriş " "imlecini izler. Yanlışsa, panel sabit bir yerde gösterilir." #: data/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Özellik panelinin gösterileceği milisaniye süresi" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Odaklanıldığında veya özellikler değiştirildiğinde özellik panelinin " "gösterileceği milisaniye süresi." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Arama tablosunun yönü" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Arama tablosunun yönü: 0 = Yatay, 1 = Dikey" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Simgeyi sistem tepsisinde göster" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Giriş yöntemi adını göster" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Giriş yöntemi adını dil çubuğunda göster" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB simgesinin RGBA değeri" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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 simgesi yerleşim stringini gösterir ve string RGBA değeri ile " "oluşturulur. RGBA değeri; 1. X11'den bir renk adı, 2. 'r', 'g' ve 'b' " "kırmızı, yeşil ve mavinin onaltılık basamakları olmak üzere '#rrggbb' " "şeklinde bir onaltılık değer, 3. 'rgb(r,g,b)' biçimindeki bir RGB rengi veya " "4. 'r', 'g' ve 'b' 0 ila 255 aralığındaki tamsayılar veya %0 ile %100 " "aralığındaki yüzde değerleri ve 'a', alfa'nın 0 ile 1 aralığındaki bir " "ondalık sayı değeri olmak üzere 'rgba(r,g,b,a)' biçimindeki bir RGBA rengi " "olabilir." #: data/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "Bir özellik için panel simgesinin gösterileceği milisaniye süresi" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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 "" "Özellik, IBusEngineDesc'deki icon-prop-key değeri ile belirtilirse, motorlar " "her değiştirildiğinde, panel simgesini motor simgesinden bir özellik " "simgesine göstermek için milisaniye süresi. Değer 0 ise, gecikme süresi " "yoktur ve hemen özellik simgesi gösterilir." #: data/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Özel yazı tipi kullan" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Dil paneli için özel yazı tipi ismi kullan" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Özel yazı tipi" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Dil paneli için özel yazı tipi ismi" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse için Unicode kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Unicode yazmayı açmak veya kapatmak için kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse için emoji kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "Emoji yazmayı açmak veya kapatmak için kısayol tuşları" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "Emoji iletişim kutusundaki emoji karakterleri için özel yazı tipi adı" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Emoji sözlüğü için varsayılan dil" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Emoji iletişim kutusunda varsayılan bir emoji sözlük dili seçin. $lang " "değeri /usr/share/ibus/dicts/emoji-$lang.dict ögesine uygulanır" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "emoji iletişim kutusundaki favori emoji listesi" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Bu listede herhangi bir karakter varsa, favori emojileri emoji listesinde " "gösterebilirsiniz." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "emoji iletişim kutusundaki favori emoji ek açıklama listesi" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "Bu listeden favori bir emoji için bir açıklama atayabilirsiniz." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "Emoji ek açıklamalarının kısmen eşleşip eşleşemeyeceği" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Emoji ek açıklamalarının tam eşleme yerine kısmi bir string ile eşleşip " "eşleşemeyeceği." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Belirtilen uzunluktaki emoji ek açıklamalarıyla eşleştir" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Emoji ek açıklamalarını, tam eşleşme yerine belirtilen sayıda karakterden " "fazlasıyla kısmen eşleştir." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "Emoji ek açıklamalarını kısmen eşleştirmek için bir koşul seçin" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Emoji ek açıklamalarını kısmen eşleştirmek için aşağıdaki koşullardan birini " "seçin: 0 == Önek eşlemesi, 1 == Sonek eşleşmesi, 2 == İçerilen eşleşme" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Emoji verilerini başlatma anında yükle" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Değer doğruysa, emoji verilerini başlatma anında yükle. Verileri yüklemek " "için yaklaşık 10 MB bellek gerekmektedir. Yanlışsa, emoji verilerini " "başlangıçta emoji iletişim kutusunu açarken yükle." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Unicode verilerini başlatma anında yükle" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Değer doğruysa, Unicode verilerini başlatma anında yükle. Verileri yüklemek " "için yaklaşık 15 MB bellek gerekmektedir. Yanlışsa, Unicode verilerini " "başlangıçta emoji iletişim kutusunu açarken yükle. Doğru olsa bile, Unicode " "verileri, emoji verileri yüklendikten sonra her zaman yüklenir." #: 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:209 msgid "Other" msgstr "Diğer" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Bir dil seç" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_İptal" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_Tamam" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Daha fazla…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Hakkında" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Kapat" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Dil: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Klavye düzeni: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Yazar: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Açıklama:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Bir giriş yöntemi seç" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Ekle" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Giriş Yöntemi" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus Tercihleri" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "IBus Tercihlerini Ayarla" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Klavye kısayolları" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Tuş kodu:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Değiştiriciler:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Uygula" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Sil" #: 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 "" "Lütfen bir tuşa (veya tuş kombinasyonuna) basın.\n" "Tuş serbest bırakıldığında iletişim kutusu kapatılacaktır." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Lütfen bir tuşa (veya bir tuş kombinasyonuna) basın" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "Önceki giriş yöntemine geçmek için kısayol ile shift tuşunu kullanın" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus arka plan programı çalışmıyor. Başlatmak ister misiniz?" #: setup/main.py:536 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 başlatıldı! IBus'ı kullanamıyorsanız, $HOME/.bashrc dosyanıza aşağıdaki " "satırları ekleyin; ardından masaüstünüze yeniden giriş yapın.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: setup/main.py:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus arka plan programı %d saniye içinde başlatılamadı" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s için klavye kısayolunu seçin" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "giriş yöntemlerini değiştirme" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Yatay" #: setup/setup.ui:14 msgid "Vertical" msgstr "Dikey" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Sol üst köşe" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Sağ üst köşe" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Sol alt köşe" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Sağ alt köşe" #: setup/setup.ui:37 msgid "Custom" msgstr "Özel" #: setup/setup.ui:48 msgid "Do not show" msgstr "Gösterme" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Otomatik gizle" #: setup/setup.ui:54 msgid "Always" msgstr "Her zaman" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "Listedeki bir sonraki giriş yöntemine geçmek için kısayol tuşları" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Sonraki giriş yöntemi:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Listedeki bir önceki giriş yöntemine geçmek için kısayol tuşları" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Önceki giriş yöntemi:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Etkinleştir veya devre dışı bırak:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Etkinleştir:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Devre dışı bırak:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Klavye Kısayolları" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Arama tablosunda adayların yönünü ayarla" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Adayların yönü:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Ibus'un dil çubuğunun nasıl gösterileceğini veya gizleneceğini ayarla" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Özellik panelini göster:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Dil panelinin konumu:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "Onay kutusunu işaretlerken giriş yönteminin adını dil çubuğunda göster" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Uygulama penceresinde ön-düzenleme metnini ekle" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "Uygulama penceresinde, giriş yönteminin ön-düzenleme metnini ekle" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Özel yazı tipi kullan:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Yazı Tipi ve Stili" #: setup/setup.ui:579 msgid "General" msgstr "Genel" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "Seçilen giriş yöntemini etkin giriş yöntemlerine ekle" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Kaldır" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "Seçilen giriş yöntemini etkin giriş yöntemlerinden kaldır" #: setup/setup.ui:700 msgid "_Up" msgstr "_Yukarı" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "Seçilen giriş yöntemini etkin giriş yöntemleri listesinde yukarı taşı" #: setup/setup.ui:718 msgid "_Down" msgstr "_Aşağı" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "Seçilen giriş yöntemini etkin giriş yöntemleri listesinde aşağı taşı" #: setup/setup.ui:736 msgid "_About" msgstr "_Hakkında" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Seçilen giriş yönteminin bilgilerini göster" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Tercihler" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Seçilen giriş yönteminin ayarlarını göster" #: setup/setup.ui:812 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 "" "Etkin giriş yöntemi, klavye kısayol tuşlarına basarak veya panel " "simgesine tıklayarak yukarıdaki listede seçilenler arasında değiştirilebilir." "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" "Emoji ek açıklamalarının veya Unicode isimlerinin dönüşümlerini " "etkinleştirmek için kısayol tuşları" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Emoji ek açıklaması:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Unicode kod noktası dönüşümlerini etkinleştirmek için kısayol tuşları" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Unicode kod noktası:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "Emoji iletişim kutusunda Unicode adaylarının yazı tipini ayarla" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Unicode yazı tipi:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Emoji iletişim kutusunda emoji ek açıklamalarının dilini ayarla" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Emoji ek açıklaması dili:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Emoji ek açıklamalarını kısmen aşağıdaki koşulla ve karakter sayısından daha " "fazlasıyla eşleştir:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Emoji ek açıklamalarının tam eşleşme yerine kısmi bir string ile eşleşip " "eşleşemeyeceği" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Önek eşleşmesi" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Sonek eşleşmesi" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Eşleşme içeren" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emoji" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Klavye Düzeni" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Global giriş yöntemi ayarları" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Gelişmiş" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Akıllı giriş veri yolu\n" "Ana sayfa: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Girişte ibus'ı başlat" #: setup/setup.ui:1358 msgid "Startup" msgstr "Başlangıç" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Aktiviteler" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Hayvanlar & Doğa" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Bileşen" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Bayraklar" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Yiyecek & İçecek" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Nesneler" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "İnsanlar & Vücut" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "Gülüşler & Duygular" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Semboller" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Seyahat & Yerler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Temel Latin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Latin-1 İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Latin Genişletilmiş-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Latin Genişletilmiş-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "IPA Uzantıları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Boşluk Değiştirici Harfler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Birleşik Aksan İşaretleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Yunan ve Kıpti" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Kiril" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Kiril İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Ermeni" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "İbrani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Arap" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Süryani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Arap İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "NKo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Samiriyeli" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandaik" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Süryani İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Arap Genişletilmiş-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Devanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Gujarati" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Oriya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tamil" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Telugu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Kannada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malayalam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Sinhala" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Taylandlı" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Lao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tibet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Myanmar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Gürcü" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Hangul Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Etiyopya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Etiyopya İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Cherokee" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Birleşik Kanada Yerli Heceleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Runik" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Tagalog" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunoo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buhid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Tagbanwa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Kmer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Moğol" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Birleşik Kanada Yerli Heceleri Genişletilmiş" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai Le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Yeni Tai Lue" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Kmer Sembolleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Bugis" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Tai Tham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Birleşik Aksan İşaretleri Genişletilmiş" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Bali" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Sunda" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepcha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ol Chiki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Kiril Genişletilmiş-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "Gürcü Genişletilmiş" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Sunda İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Vedik Uzantılar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Fonetik Uzantılar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Fonetik Uzantılar İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Birleşik Aksan İşaretleri İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Latin Genişletilmiş Ek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Yunan Genişletilmiş" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Genel Noktalama İşaretleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Üst Simgeler ve Alt Simgeler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Para Birimi Sembolleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Semboller için Birleşik Aksan İşaretleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Harf Benzeri Semboller" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Sayı Formları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Oklar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Matematiksel Operatörler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Çeşitli Teknik" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Kontrol Resimleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Optik Karakter Tanıma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Kapalı Alfanumerik" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Kutu Çizimi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Blok Elemanları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Geometrik Şekiller" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Çeşitli Semboller" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Dingbat'ler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Çeşitli Matematiksel Semboller-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "İlave Oklar-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Braille Desenleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "İlave Oklar-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Çeşitli Matematiksel Semboller-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "İlave Matematiksel Operatörler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Çeşitli Semboller ve Oklar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Glagolitik" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Latin Genişletilmiş-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Kıpti" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Gürcü İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Etiyopya Genişletilmiş" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Kiril Genişletilmiş-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "İlave Noktalama İşaretleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "CJK Radikaller İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Kangxi Radikaller" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "İdeografik Açıklama Karakterleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "CJK Sembolleri ve Noktalama İşaretleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Hangul Uyumlu Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Bopomofo Genişletilmiş" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "CJK Çizgileri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Katakana Fonetik Uzantılar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Kapalı CJK Harfleri ve Ayları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "CJK Uyumluluğu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "CJK Birleşik İdeograflar Uzantı A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Yijing Altıgen Sembolleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "CJK Birleşik İdeograflar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Yi Heceleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Yi Radikaller" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Vai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Kiril Genişletilmiş-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Değiştirici Ton Harfleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Latin Genişletilmiş-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Syloti Nagri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Ortak Hint Sayı Formları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Phags-pa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurashtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Devanagari Genişletilmiş" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Hangul Jamo Genişletilmiş-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Cava" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Myanmar Genişletilmiş-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Cham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Myanmar Genişletilmiş-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tai Viet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Meetei Mayek Uzantılar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Etiyopya Genişletilmiş-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Latin Genişletilmiş-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Cherokee İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Hangul Heceleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Hangul Jamo Genişletilmiş-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Yüksek Temsilciler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Yüksek Özel Kullanımlı Temsilciler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Düşük Temsilciler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Özel Kullanım Alanı" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "CJK Uyumluluk İdeografları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Alfabetik Sunum Formları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Arapça Sunum Formları-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Varyasyon Seçiciler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Dikey Formlar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Birleşik Yarım İşaretler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "CJK Uyumluluk Formları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Küçük Form Varyantları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Arapça Sunum Formları-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Yarım ve Tam Genişlik Formları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Özel Karakterler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Doğrusal B Heceler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Doğrusal B İdeogramlar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Ege Sayıları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Antik Yunan Sayıları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Antik Semboller" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Phaistos Diski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Likya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Karya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Kıpti Epakt Sayıları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Eski İtalik" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gotik" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Eski Permik" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ugarit" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Eski Fars" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Deseret" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Shavian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmanya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Elbasan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Kafkas Arnavut" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Doğrusal A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Kıbrıs Heceler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "İmparatorluk Aramice" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Palmira" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nebati" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Hatran" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Fenike" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lidya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Meroitik Hiyeroglifler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Meroitik El Yazısı" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Kharoshthi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Eski Güney Arap" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Eski Kuzey Arap" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Mani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Avestan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Kitabe Parthia" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Kitabe Pehlevi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Mezmur Pehlevi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Eski Türk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Eski Macar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "Hanifi Rohingya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Rumi Sayısal Semboller" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "Eski Soğd" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "Soğd" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "Elam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Brahmi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaithi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Sora Sompeng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Chakma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Mahajani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Sharada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Sinhala Arkaik Sayıları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Khojki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Multani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Khudawadi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Grantha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Newa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Tirhuta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Siddham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Modi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Moğol İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Dogra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Warang Citi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "Nandinagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Zanabazar Kare" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Soyombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Masaram Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Gunjala Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Makasar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "Tamil İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Çivi Yazısı" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Çivi Yazısı Sayılar ve Noktalama İşaretleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Erken Hanedan Çivi Yazısı" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Mısır Hiyeroglifleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "Mısır Hiyeroglif Format Kontrolleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Anadolu Hiyeroglifleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Bamum İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mro" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Bassa Vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Pahawh Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Medefaidrin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Miao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "İdeografik Semboller ve Noktalama İşaretleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Tangut" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Tangut Bileşenler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Kana İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Kana Genişletilmiş-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "Küçük Kana Uzantı" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Nushu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Duployan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Kestirme Format Kontrolleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Bizans Müzikal Semboller" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Müzikal Semboller" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Antik Yunan Müzik Notaları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "Maya Rakamları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Tai Xuan Jing Sembolleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Sayma Çubuğu Sayıları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Matematiksel Alfanumerik Semboller" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Sutton İşaret Yazısı" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Glagolitik İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "Nyiakeng Puachue Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "Wancho" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Mende Kikakui" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "Hint Siyaq Sayıları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "Osmanlı Siyaq Sayıları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Arapça Matematiksel Alfabetik Semboller" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Mahjong Taşları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Domino Taşları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "İskambil Kağıtları" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Kapalı Alfanumerik İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Kapalı İdeografik İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Çeşitli Semboller ve Piktograflar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "İfadeler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Süsleme Dingbat'leri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Ulaşım ve Harita Sembolleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Simya Sembolleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Geometrik Şekiller Genişletilmiş" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "İlave Oklar-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "İlave Semboller ve Piktograflar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "Satranç Sembolleri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "Semboller ve Piktograflar Genişletilmiş-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "CJK Birleşik İdeograflar Uzantı B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "CJK Birleşik İdeograflar Uzantı C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "CJK Birleşik İdeograflar Uzantı D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "CJK Birleşik İdeograflar Uzantı E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "CJK Birleşik İdeograflar Uzantı F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "CJK Uyumluluk İdeografları İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Etiketler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Varyasyon Seçiciler İlave" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "İlave Özel Kullanım Alanı-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "İlave Özel Kullanım Alanı-B" #: tools/main.vala:51 msgid "List engine name only" msgstr "Yalnızca motor adını listele" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus'a bağlanılamıyor.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "dil: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Motor ayarlanmadı.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Global motor ayarlanamadı.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Global motor alınamadı.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Sistem kayıt önbelleğini oku." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Kayıt önbellek DOSYASI'nı oku." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "Kayıt önbelleği geçersiz.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Sistem kayıt önbelleğini yaz." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Kayıt önbelleği DOSYASI'nı yaz." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "Ibus çekirdeği yerine, virgülle ayrılmış değerler olabilecek motor şema " "yollarını kullan." #: tools/main.vala:381 msgid "Resetting…" msgstr "Sıfırlanıyor…" #: tools/main.vala:399 msgid "Done" msgstr "Bitti" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Motoru ayarla veya al" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon'dan çık" #: tools/main.vala:446 msgid "Show available engines" msgstr "Mevcut motorları göster" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Uygulanmadı)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon'u yeniden başlat" #: tools/main.vala:449 msgid "Show version" msgstr "Versiyonu göster" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Kayıt önbelleğinin içeriğini göster" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Kayıt önbelleği oluştur" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon'un D-Bus adresini yazdır" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Yapılandırma değerlerini göster" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Yapılandırma değerlerini sıfırla" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "İletişim kutusundaki emojiyi panoya kaydet " #: tools/main.vala:458 msgid "Show this information" msgstr "Bu bilgiyi göster" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Kullanım: %s KOMUT [SEÇENEK...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Komutlar:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s, bilinmeyen komut!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Favoriler" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Diğer" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Unicode seçimini aç" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Emoji seçimini geri getir" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Sayfa Aşağı" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Sayfa Yukarı" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Emoji çeşitlerini göster" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Kapat" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Menü" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Bir uyarı mesajı görmek için tıklayın" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Unicode sözlük yükleme:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Kod noktası: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Emoji çeşitleri var" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Açıklama: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Hiçbiri" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Ek açıklamalar: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "İsim: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Takma ad: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Emoji Seçimi" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Unicode Seçimi" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "Mevcut metin uygulaması alınamadı. Lütfen uygulamanızı yeniden odaklayın. " "Örn. emoji yazma modunu bırakmak için Esc tuşuna birkaç kez basın, " "masaüstünüze ve metin uygulamanıza tekrar tıklayın." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Bir emoji seçmek için iptal edildi." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Bir emoji panonuza kopyalandı." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "Emoji iletişim kutusundaki emoji karakterleri için \"YAZI TİPİ\"" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "YAZI TİPİ" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "Emoji iletişim kutusundaki ek açıklamalar için \"DİL\". Örn. \"tr\"" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "DİL" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Emoji ek açıklamaları kısmen eşleşebilir" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Belirtilen tamsayı uzunluğuyla eşleştir" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Belirtilen tamsayı koşuluyla eşleştir" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus Paneli" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus, Linux/Unix için akıllı bir giriş veri yoludur." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "Serdar Sağlam , 2019.\n" "Oğuz Ersen , 2019" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Tercihler" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Yeniden başlat" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "Çık" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "varsayılan:LTR (soldan sağa)" ibus-1.5.22/po/pl.gmo0000644000000000000000000012613613623751604011207 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIf/;h.khhhhh/hi4iNibii jjGjj jkkk -k 7kXk_k#wkkkk kkk*l3lRlql l l ll lllll mm m m)m:mCmXmhmymmmm mmmmmn")n Ln Zn#enn-n-n-o-.o-\o-o)oopp!p4p;p CpNpjp.{pp4q-qr r)r+Ir3ur+rr r!r s%sT Ze"Ą/ɄS-M{]|  Ç ͇ ׇlXg.7:'#b É݉;ZoÊȊ  X"Y{Ջً / 6 A K Wc)h#Ռڌ ! 1> ] jv ɍ9BHb hrw| Ύڎ &# J5WqC CO6g$FÐ* 5*U-ё00I7 'Òae n |#A"-#P6t,5ؔ-D%9j5 %6U7u'-՗M$Q5v!4Θ1 9Dau Ǚ # ,6Qi К%%%;a t#Лٛ !*DMbip2wl2]J<D2*|]OڟP*R{SΠB"Ce65FB]G (H!]/U04B1w=" ,"OshܥN!H'j!+Ȧ  "30ed+ʧ/_& =>, BP Wair y  *%ݫ !,1JWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2020-01-03 17:09+0000 Last-Translator: Piotr Drąg Language-Team: Polish Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; X-Generator: Weblate 3.9.1 „CZCIONKA” dla znaków emoji w oknie emoji„JĘZYK” uwag w oknie emoji, np. „pl”%s jest nieznanym poleceniem. (Niezaimplementowane)…Czcionka i stylUstawienia globalnej metody wprowadzaniaUkład klawiaturySkróty klawiszoweUruchamianieIBus Inteligentna magistrala wprowadzania Strona domowa: https://github.com/ibus/ibus/wiki 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.O programieSportDodaje wybraną metodę wprowadzania do włączonych metod wprowadzaniaAdlamZaawansowaneCyfry egejskieAhomSymbole alchemiczneAlias: %sAlfabetyczne formy prezentacyjneZawszeHieroglify anatolijskieStarożytna grecka notacja muzycznaStarożytne cyfry greckieSymbole starożytneZwierzęta i przyrodaUwagi: %sArabskiRozszerzony arabski AArabskie matematyczne symbole alfabetyczneArabskie formy prezentacyjne AArabskie formy prezentacyjne BUzupełnienie arabskiegoOrmiańskiStrzałkiAutor: %s Automatyczne ukrywanieAwestyjskiBalijskiBamumUzupełnienie bamumPodstawowy łacińskiBassa vahBatakBengalskiBhaiksukiElementy blokoweBopomofoRozszerzone bopomofoDolny lewy rógDolny prawy rógRysowanie ramekBrahmiPismo Braille’aWróć do wyboru emojiBugińskiBuidBizantyjskie symbole muzyczneZnaki zgodności CJKFormy zgodności CJKIdeogramy zgodności CJKDodatkowe ideogramy zgodności CJKRadykały CJKKreski CJKSymbole i znaki interpunkcyjne CJKUjednolicone ideogramy CJKRozszerzenie A ujednoliconych ideogramów CJKRozszerzenie B ujednoliconych ideogramów CJKRozszerzenie C ujednoliconych ideogramów CJKRozszerzenie D ujednoliconych ideogramów CJKRozszerzenie E ujednoliconych ideogramów CJKRozszerzenie F ujednoliconych ideogramów CJKNie można połączyć z usługą IBus. Anulowano, aby wybrać emoji.Orientacja kandydatów:KaryjskiKaukasko-albańskiCzakmaCzamskiCzirokeskiUzupełnienie czirokeskiegoSymbole szachoweWarunek częściowego dopasowywania uwag emojiWybór domyślnego języka słowników emoji w oknie emoji. Wartość $lang jest zastosowywana do /usr/share/ibus/dicts/emoji-$lang.dictWybór jednego z następujących warunków częściowego dopasowywania uwag emoji: 0 == dopasowywanie przedrostka, 1 == dopasowywanie przyrostka, 2 == dopasowywanie w środkuKliknięcie wyświetli komunikat ostrzeżeniaZamknijKod znaku: %sSkładające znaki diakrytyczneRozszerzone składające znaki diakrytyczneUzupełnienie składających znaków diakrytycznychSkładające znaki diakrytyczne dla symboliSkładające półznakiPolecenia: Wspólne indyjskie formy liczboweSkładnikDopasowanie w środkuObrazy znaków sterującychSkopiowano emoji do schowka.KoptyjskiKoptyjskie cyfry epaktaCopyright © 2007-2010 Peng Huang Copyright © 2007-2010 Red Hat, Inc.Cyfry w chińskim zapisie pałeczkowymTworzy pamięć podręczną rejestruPismo klinoweCyfry i interpunkcja pisma klinowegoSymbole walutoweNiestandardowaNazwa niestandardowej czcionkiNazwa niestandardowej czcionki dla znaków emoji w oknie emojiNazwa niestandardowej czcionki dla panelu językówSylabariusz cypryjskiCyrylicaRozszerzona cyrylica ARozszerzona cyrylica BRozszerzona cyrylica CUzupełnienie cyrylicyDConf zachowuje przedrostki nazwDomyślny język dla słownika emojiOpis: Opis: %sDeseretDewanagariRozszerzone dewanagariOzdoby drukarskieSkróty klawiszowe wyłączaniaWyłączone:Bez wyświetlaniaDograKlocki dominaGotoweStenografia Duployé’aWczesnodynastyczne pismo klinoweModyfikatory formatu hieroglifów egipskichHieroglify egipskieElbasańskiElamickiOsadzanie wcześniej wprowadzonego tekstuOsadzanie wcześniej wprowadzonego tekstu w oknie aplikacjiOsadzanie wcześniej wprowadzonego tekstu metody wprowadzaniaOsadzanie wcześniej wprowadzonego tekstu metody wprowadzania w oknie aplikacjiEmojiWybór emojiJęzyk uwag emoji:Uwaga emoji:Uwagi emoji mogą być częściowo dopasowywaneKlawisz skrótu emoji dla „gtk_accelerator_parse”EmotikonyDomyślne włączanie metody wprowadzaniaDomyślne włączanie metody wprowadzania, kiedy aplikacja uzyskuje aktywność wprowadzaniaWłączenie lub wyłączenie:Skróty klawiszowe włączaniaWłączone:Uzupełnienie otoczonych symboli alfanumerycznychOtoczone symbole alfanumeryczneOtoczone litery i miesiące CJKUzupełnienie otoczonych ideogramówKolejność mechanizmówEtiopskiRozszerzony etiopskiRozszerzony etiopski AUzupełnienie etiopskiegoKończy działanie usługi ibus-daemonCZCIONKAUzyskanie obecnej aplikacji tekstowej się nie powiodło. Proszę ponownie ją aktywować. Można np. nacisnąć klawisz Esc kilka razy, aby zwolnić tryb pisania emoji, albo kliknąć pulpit i kliknąć aplikację tekstową jeszcze raz.UlubioneFlagiPodążanie za kursorem wprowadzania, kiedy panel jest zawsze wyświetlanyJedzenie i napojeOgólneOgólne znaki interpunkcyjneKształty geometryczneRozszerzone kształty geometryczneGruzińskiRozszerzony gruzińskiUzupełnienie gruzińskiegoUzyskanie globalnego mechanizmu się nie powiodło. GłagolicaUzupełnienie głagolicyGockiGranthaGrecki rozszerzonyGrecki i koptyjskiGudżaratiGondi gunjalaGurmukhiFormy połowy i pełnej szerokościDzamo zgodności dla hangylDzamo hangylRozszerzony dzamo hangyl ARozszerzony dzamo hangyl BSylaby HangylRohingya hanifiHanunooMa warianty emojiHatranHebrajskiAutomatyczne ukrywanieStarsze surogaty prywatnego użytkuStarsze surogatyHiraganaPoziomoPanel IBusPreferencje usługi IBusNie można uruchomić usługi IBus od %d sUsługa IBus została uruchomiona. Jeśli nie można używać IBus, należy dodać poniższe wiersze do pliku $HOME/.bashrc i zalogować się ponownie. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus jest inteligentną magistralą wprowadzania dla systemu Linux/UNIX.Rozszerzenia IPAZnaki opisu ideograficznegoIdeograficzne symbole i znaki interpunkcyjneCzy uwagi emoji mogą być dopasowywane z częściowym ciągiem, zamiast z dokładnym dopasowaniemJeśli jest ustawione na wartość „true”, to panel podążą za kursorem wprowadzania, kiedy panel jest zawsze wyświetlany. Jeśli jest ustawione na wartość „false”, to panel jest wyświetlany w stałym położeniu.Aramejski imperialnyIndyjskie cyfry siyaqMetoda wprowadzaniaInskrypcyjny pahlawiInskrypcyjny partyjskiJawajskiKaithiRozszerzony kana AUzupełnienie kanaKanbunRadykały KangxiKannadaKatakanaRozszerzenia fonetyczne katakanaKayah LiKBDKod klawisza:Układ klawiatury: %s Skróty klawiszoweCharostiKhmerskiSymbole khmerskieChodżyckiKhudawadiJĘZYKPozycja panela językówPozycja panelu języków:Język: %s LaotańskiŁaciński rozszerzony dodatkowyRozszerzony łaciński ARozszerzony łaciński BRozszerzony łaciński CRozszerzony łaciński DRozszerzony łaciński EUkłady łacińskie niemające ASCIIUzupełnienie Latin-1LepczowskiSymbole literopodobneLimbuLinearne AIdeogramy pisma linearnego BSylabariusz pisma linearnego BWyświetla tylko nazwę mechanizmuLisuWczytywanie danych unikodu podczas uruchamianiaJeśli jest ustawione na wartość „true”, to wczytuje dane unikodu podczas uruchamiania. Wymaga około 15 MB pamięci. Jeśli jest ustawione na wartość „false”, to wczytuje dane unikodu podczas otwierania okna emoji. Dane unikodu są zawsze wczytywane po wczytaniu danych emoji, nawet jeśli ustawiono na wartość „true”.Wczytywanie danych emoji podczas uruchamianiaJeśli jest ustawione na wartość „true”, to wczytuje dane emoji podczas uruchamiania. Wymaga około 10 MB pamięci. Jeśli jest ustawione na wartość „false”, to wczytuje dane emoji podczas otwierania okna emoji.Wczytywanie słownika unikodu:Młodsze surogatyLicyjskiLidyjskiMahajańskiKlocki MahjongMakasarMalajalamMandejskiManichejskiMarchenGondi masaramaCzęściowe dopasowywanie uwag emoji o więcej niż tej liczbie znaków, zamiast dokładnego dopasowywania.Częściowe dopasowywanie uwag emoji o tym warunku i więcej niż tej liczbie znaków:Dopasowywanie uwag emoji o podanej długościDopasowywanie o podanym warunku jako liczba całkowitaDopasowywanie o podanej długości jako liczba całkowitaMatematyczne symbole alfanumeryczneOperatory matematyczneCyfry MajówMedefaidrinMeetei MayekRozszerzenia Meetei MayekPismo ki-ka-kuMenuKursywa meroickaHieroglify meroickieMiaoRóżne symbole matematyczne ARóżne symbole matematyczne BRóżnorodne symboleRóżne symbole i strzałkiRóżne symbole i piktogramyRóżne znaki techniczneModiModyfikujące litery tonówModyfikatory:MongolskiUzupełnienie mongolskiegoWięcej…Przenosi w dół zaznaczoną metodę wprowadzania we włączonych metodach wprowadzaniaPrzenosi w górę zaznaczoną metodę wprowadzania we włączonych metodach wprowadzaniaMroMultaniSymbole muzyczneBirmańskiRozszerzony birmański ARozszerzony birmański BN’KoNabatejskiNazwa: %sNandinagariNowy tai leNewaKlawisze skrótów następnego mechanizmuNastępna metoda wprowadzania:Nie ustawiono żadnego mechanizmu. BrakFormy liczboweNüshuNyiakeng puachue hmongRzeczyOgamicznyOl ChikiStarowęgierskiStaroitalskiPółnocnoarabski epigraficznyStaropermskiStaroperskiStarosogdyjskiPołudniowoarabski epigraficznyStarotureckiOtwórz wybór unikoduOptyczne rozpoznawanie znakówOrientacja tablicy wyszukiwaniaOrientacja tablicy wyszukiwania. 0 = pozioma, 1 = pionowaOrijaOzdoby drukarskie DingbatOsageOsmańskiInneInneOsmańskie cyfry siyaqStrona w dółStrona w góręPahawh hmongPalmyreńskiPau Cin HauOsoby i ciałoPhags-PaDysk z FajstosFenickiRozszerzenia fonetyczneUzupełnienie rozszerzeń fonetycznychKarty do gryProszę nacisnąć klawisz (lub kombinację klawiszy)Proszę nacisnąć klawisz (lub kombinację klawiszy). Okno dialogowe zostanie zamknięte po zwolnieniu klawisza.Opóźnienie wyświetlenia okna przełącznika IME w milisekundachPreferencjeDopasowanie przedrostkaPrzedrostki kluczy DConf zatrzymujące konwersję nazwWcześniejsze wczytanie mechanizmówWcześniejsze wczytanie mechanizmów podczas uruchamiania usługi IBusKlawisze skrótów poprzedniego mechanizmuPoprzednia metoda wprowadzania:Wyświetla adres D-Bus usługi ibus-daemonObszar prywatnego użytkuPsałterzowy pahlawiZakończWartość RGBA ikony XKBOdczytuje PLIK pamięci podręcznej rejestru.Odczytuje pamięć podręczną rejestru systemu.RejangUsuwa zaznaczoną metodę wprowadzania z włączonych metod wprowadzaniaPrzywraca wartości konfiguracjiPrzywracanie…Uruchom ponowniePonownie uruchamia usługę ibus-daemonSymbole numeryczne rumiWykonuje xmodmap, jeśli istnieje .xmodmap lub .Xmodmap, kiedy mechanizmy IBus są przełączane.RunicznySamarytańskiSaurashtraZapisuje emoji w oknie do schowka Kolejność zapisanych mechanizmów na liście metod wprowadzaniaZapisany numer wersjiWybierz językWybór metody wprowadzaniaWybór skrótu klawiszowego dla %sUstawianie preferencji usługi IBusUstawienie czcionki kandydatów unikodu w oknie emojiUstawienie języka uwag emoji w oknie emojiUstawienie globalnego mechanizmu się nie powiodło. Ustawia lub uzyskuje mechanizmUstawia 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.Ustawienie wyświetlania lub ukrywania panela języków usługi IBusUstawienie orientacji kandydatów w tablicy wyszukiwaniaŚaradaTa sama metoda wprowadzania we wszystkich aplikacjachAlfabet ShawaModyfikatory formatu stenograficznegoWyświetla dostępne mechanizmyWyświetlanie wariantów emojiIkona w obszarze powiadamianiaWyświetla informacje o wybranej metodzie wprowadzaniaWyświetlanie nazwy metody wprowadzaniaNazwa metody wprowadzania na panelu językówNazwa metody wprowadzania na panelu języków podczas zaznaczania pola wyboruWyświetlanie panelu właściwości:Wyświetla ustawienia zaznaczonej metody wprowadzaniaWyświetla wartości konfiguracjiWyświetla zawartość pamięci podręcznej rejestruWyświetla tę informacjęWyświetla wersjęSiddhamSyngaleskiArchaiczne cyfry syngaleskieRóżne małe formyRozszerzenie małej kanyUśmieszki i emotikonySogdyjskiSorang sompengSojomboOddzielone litery modyfikująceSpecjalneUruchamianie IBus podczas logowaniaDopasowanie przyrostkaSundajskiUzupełnienie sundajskiegoIndeksy górne i dolneDodatkowe strzałki ADodatkowe strzałki BUzupełnienie strzałek CDodatkowe operatory matematyczneDodatkowe znaki interpunkcyjneUzupełnienie symboli i piktogramówDodatkowy obszar prywatnego użytku ADodatkowy obszar prywatnego użytku BSutton SignWritingSyloti NagriSymboleRozszerzone symbole i piktogramy ASyryjskiUzupełnienie syryjskiegoTagalskiTagbanwaZnacznikiTai leTai ThamTai VietSymbole Tai xuan JingTakriTamilskiUzupełnienie tamilskiegoTanguckiSkładniki tanguckieTeluguThaanaTajskiUsługa IBus nie jest uruchomiona. Uruchomić ją?Zachowanie panela właściwości. 0 = bez wyświetlania, 1 = automatycznie ukrywany, 2 = zawsze wyświetlanyMilisekundy do wyświetlenia panelu właściwościMilisekundy do wyświetlenia panelu właściwości po zmianie aktywności lub właściwości.Milisekundy do wyświetlenia ikony panelu dla właściwościMilisekundy 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.Pamięć podręczna rejestru jest nieprawidłowa. Zapisany numer wersji będzie używany do sprawdzania różnicy między wersją poprzednio zainstalowanego IBus a obecnego.Klawisz skrótu do przełączenia na następną metodę wprowadzania na liścieKlawisz skrótu do przełączenia na poprzednią metodę wprowadzania na liścieKlawisze skrótów do przełączania na następną metodę wprowadzania na liścieKlawisze skrótów do przełączania na poprzednią metodę wprowadzania na liścieKlawisze skrótów do włączania lub wyłączania pisania unikoduKlawisze skrótów do włączania lub wyłączania wpisywania emojiSkróty klawiszowe do wyłączania metody wprowadzaniaSkróty klawiszowe do włączania metody wprowadzaniaKlawisze skrótów do włączania lub wyłączania metody wprowadzaniaKlawisze skrótów do włączania konwersji kodów znaków unikoduKlawisze skrótów do włączania konwersji uwag emoji lub nazw unikoduTybetańskiTifinaghTirhutaGórny lewy rógGórny prawy rógSymbole transportowe i dla mapPodróże i miejscaKlawisze skrótów przełącznikaKlawisz skrótu dla „gtk_accelerator_parse”Układ US jest dołączany do układów łacińskich. Można pominąć „variant”.UgaryckiWybór unikoduKod znaku unikodu:Czcionka unikodu:Klawisze skrótów unikodu dla gtk_accelerator_parseUjednolicony sylabariusz rdzennych KanadyjczykówRozszerzony ujednolicony sylabariusz rdzennych KanadyjczykówUżycie: %s POLECENIE [OPCJA…] Niestandardowa czcionkaNiestandardowa czcionka dla panelu językówNiestandardowa czcionka:Używa ścieżek schematu mechanizmu zamiast rdzenia IBus, które mogą być wartościami oddzielonymi przecinkami.Globalna metoda wprowadzaniaSkrót z klawiszem Shift do przełączania do poprzedniej metody wprowadzaniaSystemowy układ klawiatury (XKB)Systemowe ustawienia układu klawiaturyUżycie xmodmapWaiPrzełączniki wariantów glifówDodatkowe przełączniki wariantów glifówRozszerzenia wedPionowoFormy pionoweWanchoVarang kshitiCzy uwagi emoji mogą być dopasowywane częściowoCzy uwagi emoji mogą być dopasowywane z częściowym ciągiem, zamiast z dokładnym dopasowaniem.Zapisuje PLIK pamięci podręcznej systemu.Zapisuje pamięć podręczną rejestru systemu.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.Radykały YiSylaby YiHeksagramy YijingMożna przydzielić uwagę do ulubionej emoji na tej liście.Wpisane tutaj znaki pojawią się na liście ulubionych emoji.Kwadratowe Zanabazara_O programie_Dodaj_Zastosuj_AnulujZa_mknij_UsuńW _dół_OKP_referencje_UsuńW _górędefault:LTRlista ulubionych uwag emoji w oknie emojilista ulubionych emoji w oknie emojijęzyk: %s przełączanie metod wprowadzaniaPiotr Drąg , 2009-2020ibus-1.5.22/po/gu.po0000644000000000000000000030743013623751600011035 00000000000000# Gujarati translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2018 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2018-02-20 04:22-0500\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Gujarati (http://www.transifex.com/projects/p/ibus/language/" "gu/)\n" "Language: gu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 3.9.6\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "એંજિનોને ફરીથી લોડ કરો" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus શરૂ કરવા દરમ્યાન એંજિનોને ફરીથી લોડ કરો" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "એંજિન ક્રમ" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "ઇનપુટ પદ્દતિ યાદીમાં સંગ્રહેલ એંજિન ક્રમ" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME સ્વીચર વિન્ડો માટે પોપઅપનો મિલીસેકંડનો વિલંબ" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "સંગ્રહેલ આવૃત્તિ નંબર" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "લેટિન લેઆઉટ કે જેની પાસે ASCII નથી" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "US લેઆઉટ એ લેટિન લેઆઉટ સાથે જોડાયેલ છે. ચલને કાઢી શકાય છે." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmap ને વાપરો" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "xmodmap ને ચલાવો જો .xmodmap અથવા .Xmodmap અસ્તિત્વમાં હોય જ્યારે ibus એંજિન બદલેલ " "હોય." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "સિસ્ટમ કિબોર્ડ લેઆઉટને વાપરો" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "સિસ્ટમ કિબોર્ડ (XKB) લેઆઉટને વાપરો" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "બેસાડેલ Preedit લખાણ" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "કાર્યક્રમ વિન્ડોમાં બેસાડેલ Preedit લખાણ" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "વૈશ્ર્વિક ઇનપુટ પદ્દતિને વાપરો" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "બધા કાર્યક્રમોમાં એજ ઇનપુટ પદ્દતિને વહેંચો" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "મૂળભૂત રીતે ઇનપુટ પદ્દતિને સક્રિય કરો" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "મૂળભૂત રીતે ઇનપુટ પદ્દતિને સક્રિય કરો જ્યારે કાર્યક્રમને ઇનપુટ ફોકસ મળે છે" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf નામ ઉપસર્ગને સાચવે છે" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "નામનું રૂપાંતરણને બંધ કરવા માટે DConf કીઓનાં ઉપસર્ગો" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "ટ્રીગર ટૂંકાણ કીઓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "ઇનપુટ પદ્દતિને ફેરબદલી કરવાનું ચાલુ અથવા ા બંધ કરવા માટે ટૂંકાણ કીઓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse માટે ટ્રીગર ટૂંકાણ કી" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "ટૂંકાણ કીઓને સક્રિય કરો" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "ઇનપુટ પદ્દતિને ચાલુ કરવા માટે ટૂંકાણ કીઓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "ટૂંકાણ કીઓને નિષ્ક્રિય કરો" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "ઇનપુટ પદ્દતિને બંધ કરવા માટે ટૂંકાણ કીઓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "પછીની એંજિન ટૂંકાણ કીઓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "યાદીમાં પછીની ઇનપુટ પદ્દતિને બદલવા માટે ટૂંકાણ કીઓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "પહેલાંની એંજિન ટૂંકાણ કીઓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "યાદીમાં પહેલાંની ઇનપુટ પદ્દતિને લાવવા માટે ટૂંકાણ કીઓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "આપમેળે છુપાવો" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "ગુણધર્મ પેનલનું વર્તન. 0 = બતાવો નહિં, 1 = આપમેળે છુપાડો, 2 = હંમેસા બતાવો" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "ભાષા પેનલ સ્થાન" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "સ્થિતિમાં ઇનપુટ કર્સરને અનૂસરો જે પેનલ હંમેશા બતાવેલ હોય" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "ગુણધર્મ પેનલને બતાવવા માટે મિલિસેકંડ" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "પ્રકાશિત થાય પછી ગુણધર્મ પેનલને બતાવવા માટે મિલિસેકંડ અથવા ગુણધર્મો બદલેલ છે" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "કોષ્ટકને જોવાની દિશા" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "કોષ્ટકને જોવાની દિશા. 0 = આડુ, 1 = ઊભુ " #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "સિસ્ટમ ટ્રે પર ચિહ્નને બતાવો" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "ઇનપુટ પદ્દતિ નામને બતાવો" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "ભાષા પેનલ પર ઇનપુટ પદ્દતિ નામને બતાવો" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB ચિહ્નની RGBA કિંમત" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "વૈવિધ્ય ફોન્ટને વાપરો" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "ભાષા પેનલ માટે વૈવિધેય ફોન્ટ નામ ને વાપરો" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "વૈવિધ્ય ફોન્ટ" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "ભાષા પેનલ માટે વૈવિધ્ય ફોન્ટ નામ" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse માટે ટ્રીગર ટૂંકાણ કી" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "ઇનપુટ પદ્દતિને ફેરબદલી કરવાનું ચાલુ અથવા ા બંધ કરવા માટે ટૂંકાણ કીઓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "બીજા" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "રદ કરો (_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "બરાબર (_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "વધારે..." #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "વિશે" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "બંધ કરો (_C)" #: 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 "ઇનપુટ પદ્દતિને પસંદ કરો" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "ઉમેરો (_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "ઇનપુટ પદ્દતિ" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus પસંદગીઓ" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "પહેલાંની ઇનપુટ પદ્દતિને બદલવા shift સાથે ટૂંકાણ વાપરો" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ડિમન ચાલી રહ્યુ નથી. શું તમે તેને શરૂ કરવા ઇચ્છો છો?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ડિમન %d સેકંડમાં શરૂ કરી શક્યા નહિં" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s માટે કિબોર્ડ ટૂંકાણોને પસંદ કરો" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "ઇનપુટ પદ્દતિને બદલી રહ્યા છે" #: setup/setup.ui:11 msgid "Horizontal" msgstr "આડુ" #: setup/setup.ui:14 msgid "Vertical" msgstr "ઊભું" #: setup/setup.ui:25 msgid "Top left corner" msgstr "ઉંચે ડાબી બાજુનો ખૂણો" #: setup/setup.ui:28 msgid "Top right corner" msgstr "ઉંચે જમણી બાજુનો ખૂણો" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "નીચે ડાબી બાજુનો ખૂણો" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "નીચે જમણી બાજુનો ખૂણો" #: setup/setup.ui:37 msgid "Custom" msgstr "વૈવિધ્ય" #: setup/setup.ui:48 msgid "Do not show" msgstr "બતાવશો નહિ" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "આપોઆપ છુપાવો" #: setup/setup.ui:54 msgid "Always" msgstr "હંમેશા" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "યાદીમાં પછીની ઇનપુટ પદ્દતિને ખસેડવા માટે ટૂંકાણ કીઓ" #: setup/setup.ui:115 msgid "Next input method:" msgstr "પછીની ઇનપુટ પદ્દતિ:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "યાદીમાં પહેલાંની ઇનપુટ પદ્દતિને ખસેડવા માટે ટૂંકાણ કીઓ" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "પહેલાંની ઇનપુટ પદ્દતિ:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "સક્રિય અથવા નિષ્ક્રિય:" #: setup/setup.ui:238 msgid "Enable:" msgstr "સક્રિય:" #: setup/setup.ui:291 msgid "Disable:" msgstr "નિષ્ક્રિય:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "કિબોર્ડ ટૂંકાણો" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "કોષ્ટક જોવામાં સભ્યોની દિશાને સુયોજિત કરો" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "ઉમેદવારોની દિશા:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ભાષા પેનલને કેવી રીતે બતાવવી અથવા છુપાડવી તે માટે ibus નાં વર્ણતૂકને સુયોજિત કરો" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "ગુણધર્મ પેનલ બતાવો:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "ભાષા પેનલનું સ્થાન:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "જ્યારે ચેકબોક્સને ચકાસતા હોય ત્યારે ભાષા પેનલ પર ઇનપુટ પદ્દતિનાં નામને બતાવો" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "કાર્યક્રમ વિન્ડોમાં બેસાડેલ Preedit લખાણ" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "કાર યક્મ વિન્ડોમાં ઇનપુટ પદ્દતિનાં preedit લખાણને બેસાડો" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "વૈવિધ્યપૂર્ણ ફોન્ટ વાપરો:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "ફોન્ટ અને શૈલીઓ" #: setup/setup.ui:579 msgid "General" msgstr "સામાન્ય" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓમાં પસંદ થયેલ ઇનપુટ પદ્દતિને ઉમેરો" #: setup/setup.ui:682 msgid "_Remove" msgstr "દૂર કરો (_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓ માંથી પસંદ થયેલ ઇનપુટ પદ્દતિને દૂર કરો" #: setup/setup.ui:700 msgid "_Up" msgstr "ઉપર કરો (_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓ યાદીમાં પસંદ થયેલ ઇનપુટ પદ્દતિને ઉપર ખસેડો" #: setup/setup.ui:718 msgid "_Down" msgstr "નીચે કરો (_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "સક્રિય થયેલ ઇનપુટ પદ્દતિઓમાં પસંદ થયેલ ઇનપુટ પદ્દતિને નીચે ખસેડો" #: setup/setup.ui:736 msgid "_About" msgstr "વિશે (_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "પસંદ થયેલ ઇનપુટ પદ્દતિની જાણકારીને બતાવો" #: setup/setup.ui:754 msgid "_Preferences" msgstr "પસંદગીઓ (_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "પસંદ થયેલ ઇનપુટ પદ્દતિનાં સુયોજનને બતાવો" #: setup/setup.ui:812 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 "" "કિબોર્ડ ટૂંકાણ કીને દબાવીને અથવા પેનલ ચિહ્ન પર ક્લિક કરીને ઉપરની યાદીમાં પસંદ " "થયેલ એકમાંથી સક્રિય ઇનપુટ પદ્દતિને બદલી શકાય છે." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "ઇનપુટ પદ્દતિને ફેરબદલી કરવાનું ચાલુ અથવા ા બંધ કરવા માટે ટૂંકાણ કીઓ" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "વૈવિધ્યપૂર્ણ ફોન્ટ વાપરો:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "કિબોર્ડ લેઆઉટ" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "વૈશ્ર્વિક ઇનપુટ પદ્દતિ સુયોજનો" #: setup/setup.ui:1298 msgid "Advanced" msgstr "ઉન્નત" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "પ્રવેશ પર ibus ને શરૂ કરો" #: setup/setup.ui:1358 msgid "Startup" msgstr "શરૂઆત કરો" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "ફક્ત એંજિન નામની યાદી કરો" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus માં જોડી શકાતુ નથી.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "ભાષા: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "એજિંન સુયોજિત નથી.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "વૈશ્ર્વિક એંજિનને સુયોજિત કરવામાં નિષ્ફળતા.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "વૈશ્ર્વિક એંજિનને મેળવવામાં નિષ્ફળતા.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "સિસ્ટમ રજીસ્ટરી કેશને વાંચો." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "રજીસ્ટરી કેશ FILE ને વાંચો." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "રજીસ્ટરી કેશ અયોગ્ય છે.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "સિસ્ટમ રજીસ્ટરી કેશને લખો." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "રજીસ્ટરી કેશ FILE ને લખો." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "પુન:સુયોજિત કરી રહ્યા છે.." #: tools/main.vala:399 msgid "Done" msgstr "પૂર્ણ" #: tools/main.vala:444 msgid "Set or get engine" msgstr "એંજિનને સુયોજિત અથવા મેળવો" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon માંથી બહાર નીકળો" #: tools/main.vala:446 msgid "Show available engines" msgstr "ઉપલબ્ધ એંજિનને બતાવો" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(અમલીકરણ થયેલ નથી)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon ને પુન:શરૂ કરો" #: tools/main.vala:449 msgid "Show version" msgstr "આવૃત્તિને બતાવો" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "રજીસ્ટરી કેશનાં સમાવિષ્ટને બતાવો" #: tools/main.vala:451 msgid "Create registry cache" msgstr "રજીસ્ટરી કેશને બનાવો" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon નાં D-Bus સરનામાંને છાપો" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "રૂપરેખાંકન કિંમતોને બતાવો" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "રૂપરેખાંકન કિંમતોને પુન:સુયોજિત કરો" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "આ જાણકારીને બતાવો" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "વપરાશ: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "આદેશો:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s એ અજ્ઞાત આદેશ છે!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "બંધ કરો (_C)" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus એ Linux/Unix માટે હોશિયાર ઇનપુટ બસ છે." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "શ્ર્વેતા કોઠારી " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "પસંદગીઓ " #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "પુન:શરૂ કરો" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "બહાર નીકળો " #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 "" #~ "ભાષા પેનલનું સ્થાન. ૦ = ઉંચે ડાબી બાજુનો ખૂણો, ૧ = ઉંચે જમણી બાજુનો ખૂણો, ૨ = નીચે " #~ "ડાબી બાજુનો ખૂણો, ૩ = નીચે જમણી બાજુનો ખૂણો, ૪ = વૈવિધ્ય" #~ msgid "IBus Update" #~ msgstr "IBus સુધારો" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Super+space એ હવે મૂળભૂત હોટકી છે." ibus-1.5.22/po/insert-header.sin0000644000000000000000000000124013623751246013323 00000000000000# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } ibus-1.5.22/po/mn.po0000644000000000000000000025370213623751601011037 00000000000000# Mongolian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2016 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # bayanmunkh , 2016. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2016-01-29 12:31-0500\n" "Last-Translator: bayanmunkh \n" "Language-Team: Mongolian\n" "Language: mn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Zanata 3.9.3\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Оролтын аргыг унтрааж асаах товчлол түлхүүрүүд" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Системийн хавтан дахь харах тэмдэг" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Хэлний бар дахь оролтын аргын нэрийг харах" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Оролтын аргыг унтрааж асаах товчлол түлхүүрүүд" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 #, fuzzy msgid "The shortcut keys for turning emoji typing on or off" msgstr "Оролтын аргыг унтрааж асаах товчлол түлхүүрүүд" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Нэмэх" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "ibus тохиргоо" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "" #: 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 "" #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Хэвтээ" #: setup/setup.ui:14 msgid "Vertical" msgstr "Босоо" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Зүүн дээд булан" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Баруун дээд булан" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Зүүн доод булан" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Баруун доод булан" #: setup/setup.ui:37 msgid "Custom" msgstr "Өөрчлөх" #: setup/setup.ui:48 msgid "Do not show" msgstr "Битгий харуул" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Автоматаар нуух" #: setup/setup.ui:54 msgid "Always" msgstr "Үргэлж" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "Жагсаалтад байгаа оролтын дараагийн арга руу шилжих товчлол түлхүүрүүд" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Дараагийн оролтын арга:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Жагсаалтад байгаа оролтын өмнөх арга руу шилжих товчлол түлхүүрүүд" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Өмнөх оролтын арга" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Нээх эсвэл Хаах" #: setup/setup.ui:238 msgid "Enable:" msgstr "Нээх" #: setup/setup.ui:291 msgid "Disable:" msgstr "Хаах" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Гарын товчлолууд" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Харах хүснэгтэд байгаа нэмэлтүүдийн эргүүлэлтийг тохируулах" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Нэмэлтүүдийг эргүүлэлт:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Хэлний цэсийг нуух болон харуулах эсэхийг тохируулах" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Шинжүүдийн самбарыг харах:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Хэлний самбарын байрлал:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Фонтоо сонгох:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "" #: setup/setup.ui:579 msgid "General" msgstr "Ерөнхий" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Арилгах" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "" #: setup/setup.ui:754 msgid "_Preferences" msgstr "" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Оролтын аргыг унтрааж асаах товчлол түлхүүрүүд" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Фонтоо сонгох:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "" #: setup/setup.ui:1298 msgid "Advanced" msgstr "" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "" #: setup/setup.ui:1358 msgid "Startup" msgstr "" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Босоо" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "" ibus-1.5.22/po/ibus10.pot0000644000000000000000000025033013623751577011722 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Peng Huang Takao Fujiwara # This file is distributed under the same license as the ibus package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: ibus 1.5.22\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "" #: 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 "" #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "" #: setup/setup.ui:14 msgid "Vertical" msgstr "" #: setup/setup.ui:25 msgid "Top left corner" msgstr "" #: setup/setup.ui:28 msgid "Top right corner" msgstr "" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "" #: setup/setup.ui:37 msgid "Custom" msgstr "" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "" #: setup/setup.ui:238 msgid "Enable:" msgstr "" #: setup/setup.ui:291 msgid "Disable:" msgstr "" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "" #: setup/setup.ui:579 msgid "General" msgstr "" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "" #: setup/setup.ui:754 msgid "_Preferences" msgstr "" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "" #: setup/setup.ui:1298 msgid "Advanced" msgstr "" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "" #: setup/setup.ui:1358 msgid "Startup" msgstr "" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "" ibus-1.5.22/po/ar.gmo0000644000000000000000000000656613623751603011201 00000000000000*l;#o#0 )<O)U^ %EY'i   "1- |?  " 2  7 > QR  * (  5 yM  (   "" E e  3       4 @ H !T #' )   &($*! "% ...Font and StyleGlobal input method settingsKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutCandidates orientation:Custom font name for language panelEnable or disable:GeneralIBus PreferencesIBus is an intelligent input bus for Linux/Unix.Key code:Keyboard shortcutsNext input method:OtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.PreferencesPrevious input method:QuitRestartSelect an input methodSelect keyboard shortcut for %sStart ibus on loginUse custom fontUse custom font name for language panel_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRtranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:45+0000 Last-Translator: Muayyad Alsadi Language-Team: Arabic Language: ar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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; ...الخط والتنسيقاختر طريقة الإدخالاختصارات لوحة المفاتيحالبدءIBus ناقل الإدخال الذكي الموقع: https://github.com/ibus/ibus/wiki حولالاتجاهات المرشحة:اسم الخط المخصص للوحة اللغةتفعيّل أو تثبيط:عامتفضيلات IBusنظام IBus هو ناقل إدخال ذكي لنظام لينكس ويونكس.كود المفتاحاختصارات لوحة المفاتيحطريقة الإدخال التاليةأخرىفضلا اضغط مفتاح أو عدة مفاتيحفضلا اضغط مفتاح أو (عدة مفاتيح). صندوق الحوار سيغلق عند ترك المفتاح.التفضيلاتطريقة الإدخال السابقةأنهِإعادة تشغيلاختر طريقة الإدخالاختر الاختصار ل %sبدء ibus عند الولوجاستعمال خط مخصصاستخدم خط مخصص في لوحة اللغة_عنْأ_ضف_طبّقأل_غِأ_غلقا_حذفأ_سفل_نعم_التفضيلاتا_حذِفف_وقdefault:RTLMuayyad Alsadi ibus-1.5.22/po/ur.gmo0000644000000000000000000000073613623751604011217 00000000000000,<P Qt] default:LTRProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-12 07:40+0000 Last-Translator: fujiwara Language-Team: Urdu Language: ur MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); default:RTLibus-1.5.22/po/zh_HK.po0000644000000000000000000026563013623751603011435 00000000000000# Traditional Chinese translation for ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2018 Takao Fujiwara # 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 # Terry Chuang , 2014 # tomoe_musashi , 2015 # fujiwara , 2015. #zanata # tomoe musashi , 2016. #zanata # fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2018-02-20 04:23-0500\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Traditional Chinese \n" "Language: zh_HK\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n!=1;\n" "X-Generator: Zanata 3.9.6\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "預先載入引擎" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "當 ibus 啟動時預先載入引擎" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "引擎順序" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "輸入法清單中儲存的引擎順序" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME 切換器視窗彈出延遲的毫秒數" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "儲存的版本號碼" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "無 ASCII 的拉丁鍵盤佈局" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "US 鍵盤佈局附加到拉丁鍵盤佈局。variant 可被省略。" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "使用 xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "當 ibus 引擎切換時,若 .xmodmap 或 .Xmodmap 存在,則執行 xmodmap。 " #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "使用系統鍵盤佈局" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "使用系統鍵盤 (XKB) 佈局" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "內嵌編輯模式" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "在應用程式視窗中內嵌編輯模式" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "使用全域輸入法" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "在所有的應用程式中共享同一個輸入法" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "預設啟用輸入法" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "當應用程式取得輸入焦點時,預設將輸入法啟用" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf 保留名稱前綴" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "DConf 用來停止名稱轉換的鍵其前綴" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "觸發用快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "用來開啟或關閉輸入法的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse 的觸發用快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "啟用快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "開啟輸入法的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "停用快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "關閉輸入法的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "「下一個引擎」快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "用來切換到清單內下一個輸入法的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "「上一個引擎」快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "用來切換到清單內上一個輸入法的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "自動隱藏" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "屬性面板的行為。0 = 不要顯示,1 = 自動隱藏,2 = 總是顯示" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "語言面板位置" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "在面板總是顯示的情況下跟隨輸入游標" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "顯示屬性面板的毫秒數" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "當焦點落在屬性面板內,或屬性變更時屬性面板的顯示毫秒數。" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "查選表單表排列方向" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "查詢表單的排列方向。0 = 水平,1 = 垂直" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "在系統匣內顯示圖示" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "顯示輸入法名稱" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "在語言列上顯示輸入法名稱" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB 圖示的 RGBA 值" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "使用自訂字型" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "語言面板是否使用自訂字型" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "自訂字型" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "為語言面板自訂字型" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse 的觸發用快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "用來開啟或關閉輸入法的快捷鍵" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "其他" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "取消(_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "確定(_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "更多…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "關於" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "關閉(_C)" #: 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 "選取輸入法" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "新增(_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "輸入法" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "鍵盤" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus 偏好設定" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "使用含 Shift 鍵之快捷鍵來切換至上一個輸入法" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "鍵盤輸入法 (IBus 背景程式) 並未執行。是否啟動?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus 背景程式無法在 %d 秒後啟動" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "為 %s 選取鍵盤快捷鍵" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "切換輸入法" #: setup/setup.ui:11 msgid "Horizontal" msgstr "水平" #: setup/setup.ui:14 msgid "Vertical" msgstr "垂直" #: setup/setup.ui:25 msgid "Top left corner" msgstr "左上角" #: setup/setup.ui:28 msgid "Top right corner" msgstr "右上角" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "左下角" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "右下角" #: setup/setup.ui:37 msgid "Custom" msgstr "自訂" #: setup/setup.ui:48 msgid "Do not show" msgstr "不要顯示" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "自動隱藏" #: setup/setup.ui:54 msgid "Always" msgstr "總是" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "用來切換到清單內下一個輸入法的快捷鍵" #: setup/setup.ui:115 msgid "Next input method:" msgstr "下一個輸入法:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "用來切換到清單內上一個輸入法的快捷鍵" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "上一個輸入法:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "啟用或停用:" #: setup/setup.ui:238 msgid "Enable:" msgstr "啟用:" #: setup/setup.ui:291 msgid "Disable:" msgstr "停用:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "鍵盤快捷鍵" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "設定查詢表單內候選字詞的排列方向" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "候選詞排列方向:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "設定 ibus 如何顯示或隱藏語言列的行為" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "顯示屬性面板:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "語言面板位置:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "當選取時在語言列上輸入法名稱" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "在應用程式視窗中內嵌編輯模式" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "在應用程式視窗中內嵌輸入法的預先編輯文字" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "使用自訂字型:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "字型與風格" #: setup/setup.ui:579 msgid "General" msgstr "通用" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "新增選取的輸入法到已啟用的輸入法內" #: setup/setup.ui:682 msgid "_Remove" msgstr "移除(_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "從已啟用的輸入法中移除所選的輸入法" #: setup/setup.ui:700 msgid "_Up" msgstr "向上(_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "上移所選取的輸入法" #: setup/setup.ui:718 msgid "_Down" msgstr "向下(_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "下移所選取的輸入法" #: setup/setup.ui:736 msgid "_About" msgstr "關於(_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "顯示所選取的輸入法資訊" #: setup/setup.ui:754 msgid "_Preferences" msgstr "偏好設定(_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "顯示所選輸入法的設置" #: setup/setup.ui:812 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 "" "你可以透過按下鍵盤快捷鍵,或是點按面板圖示的方式,來從上列清單中選" "取的輸入法之中切換使用中的輸入法。" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "用來開啟或關閉輸入法的快捷鍵" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "使用自訂字型:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "鍵盤佈局" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "全域輸入法設定值" #: setup/setup.ui:1298 msgid "Advanced" msgstr "進階" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "在登入時啟動 ibus" #: setup/setup.ui:1358 msgid "Startup" msgstr "啟動" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "只列出引擎名稱" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "無法連接至 IBus。\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "語言:%s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "尚未設定引擎。\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "無法設定全域引擎。\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "無法取得全域引擎。\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "讀取系統註冊快取。" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "讀取註冊快取 FILE。" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "註冊快取無效。\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "寫入系統註冊快取。" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "寫入註冊快取 FILE。" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "重設中…" #: tools/main.vala:399 msgid "Done" msgstr "完成" #: tools/main.vala:444 msgid "Set or get engine" msgstr "設定或取得引擎" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "離開 ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "顯示可用的引擎" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(尚未實作)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "重新啟動 ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "顯示版本" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "顯示註冊快取的內容" #: tools/main.vala:451 msgid "Create registry cache" msgstr "建立註冊快取" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "列印 ibus-daemon 的 D-Bus 位址" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "顯示組態值" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "重設組態值" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "顯示此資訊" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "用法:%s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "指令:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s 為未知指令!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "關閉(_C)" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus 面板" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus 為 Linux/Unix 上的智慧型輸入法框架。" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "Ding-Yi Chen 陳定彞 , 2009\n" "Cheng-Chia Tseng , 2010\n" "Terry Chuang , 2014\n" "tomoe_musashi , 2015" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "偏好設定" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "重新啟動" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "結束" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = 自訂" #~ msgid "IBus Update" #~ msgstr "IBus 更新" #~ msgid "Super+space is now the default hotkey." #~ msgstr "超級鍵+空白鍵為現在的預設熱鍵。" ibus-1.5.22/po/eu.gmo0000644000000000000000000000606513623751603011202 000000000000003GLhim#  H3 : FT]px     %*2I^u  #+  " - 2 > LT        % 5 B X m |     ! ") #L p         4 %()* " /'. 32!,# + 1& 0-$...Font and StyleGlobal input method settingsKeyboard LayoutAboutAdvancedAlwaysAuthor: %s Auto hideCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontDescription: Disable:Enable or disable:Enable:GeneralHorizontalIBus PreferencesInput MethodKey code:Keyboard layout: %s Keyboard shortcutsLanguage: %s Next input method:OtherPreferencesPrevious input method:QuitRestartSelect an input methodSet IBus PreferencesShow input method nameUse custom fontUse custom font:Use global input methodVertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRtranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:46+0000 Last-Translator: Asier Iturralde Sarasola Language-Team: Basque Language: eu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); ...Letra-tipoa eta estiloaSarrera metodo orokorraren ezarpenakTeklatu-diseinuaHoni buruzAurreratuaBetiEgilea: %s Ezkutatu automatikokiCopyright-a (c) 2007-2010 Peng Huang Copyright-a (c) 2007-2010 Red Hat, Inc.PertsonalizatuaLetra-tipo pertsonalizatuaDeskribapena: Desgaitu:Gaitu edo desgaitu:Gaitu:OrokorraHorizontalaIBus hobespenakSarrera metodoaTekla kodea:Teklatu-diseinua: %s Teklatu lasterbideakHizkuntza: %s Hurrengo sarrera metodoaBeste batHobespenakAurreko sarrera metodoaIrtenBerrabiaraziHautatu sarrera metodo batEzarri IBus hobespenakErakutsi sarrera metodoaren izenaErabili letra-tipo pertsonalizatuaErabili letra-tipo pertsonalizatua:Erabili sarrera metodo orokorraBertikalaHoni _buruz_Gehitu_Aplikatu_UtziIt_xi_Ezabatu_Behera_Ados_Hobespenak_Kendu_Goradefault:LTRAsier Iturralde Sarasola ibus-1.5.22/po/bg.gmo0000644000000000000000000003354713623751603011166 00000000000000zH I a e #{    o O <U        H c j #v     ( ( @I  D   ,4 OZ.k0j    3@>C9Y)_^ .#%3Ys?(7L9g12-M&d@'8@ADD< .I-x42'Bj{  ! % 1?|R)N.j,o+ DQa~.1H*sG=$87p.nnM f - 8!U!"e!!Q!!$"W'"?"#N$ k$u$,$%$.$/% A%=O%%%*&L&&+'@A'x''V([()m+)/)v)N@**(*u*K+cd+,+>+14,Mf,_,k-_-G-V(.=._./T/-/[)0011&2c2a3}y334>145p414Q4.*5@Y5\5V5N6c6s66666 6 66 7 !7 /7 ;7I7I/lK-(7H,Gh 1f S>P&.kw*Qsap uJd%m:Ay)MU]FiZ98xqeO!2$6L"NE#R;' +@YBb?=45[t \`X<jT^c_ CWoVDv3zngr0%s is unknown command! ...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Embed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderGeneralGet global engine failed. HorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s List engine name onlyModifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.PreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:QuitRemove the selected input method from the enabled input methodsRestartSaved engines order in input method listSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow setup of the selected input methodStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse system keyboard (XKB) layoutUse system keyboard layoutVertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s translator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:45+0000 Last-Translator: Valentin Laskov Language-Team: Bulgarian Language: bg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s е непозната команда! ...Шрифт и стилНастройки на глобалния метод за писанеКлавиатурна подредбаКлавишни комбинацииСтартиранеIBus Интелигентен организатор на методите за писане Страница на проекта: https://github.com/ibus/ibus/wiki ОтносноДобавя избрания метод в списъка с разрешени методи за писанеДопълнителниВинагиАвтор: %s Автом. скриванеДолен ляв ъгълДолен десен ъгълНе мога да се свържа с IBus. Ориентация на кандидатите:Команди: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.По изборШрифт по изборИме на избрания шрифт за панела с езициDConf запазва префиксите на именатаОписание: Забрани клавишните комбинацииЗабрани:Вграден редактиран текстВгражда предв. редактиран текст в прозореца на приложениетоВгражда предв. редактиран текст в прозореца на приложениетоВгражда редактирания текст от метода за писане в прозореца на приложениетоРазрешава метод за писане по подразбиранеРазрешава метод за писане по подразбиране, когато приложението е на фокусРазрешаване или забрана:Разреши клавишните комбинацииРазреши:Ред на механизмитеОсновниПолучаването на глобален механизъм не успя. ХоризонталноПредпочитания за IBusIBus демонът не може да се стартира вече %d секундиIBus беше стартиран! Ако не можете да използвате IBus, добавете следните редове във файла $HOME/.bashrc; след което излезте и влезте отново. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus е интелигентен начин за избор на метод за въвеждане на информация за Linux/Unix.Метод за писанеКлав.Код на клавиш:Клавиатурна подредба: %s Клавишни комбинацииПозиция на панела с езициПозиция на панела с езици:Език: %s Списък само на имена на механизмиМодифициращи:Премества надолу избрания метод за писане в списъка с разрешени методиПремества нагоре избрания метод за писане в списъка с разрешени методиКлавишни комбинации за следващ механизъмСледващ метод:Не е зададен механизъм. Ориентация на таблицата за прегледОриентация на таблицата за преглед. 0 = Хоризонтално, 1 = ВертикалноДругМоля, натиснете клавиш (или комбинация клавиши)Моля, натиснете клавиш (или комбинация клавиши). Диалогът ще се затвори при отпускането на клавиша.ПредпочитанияПрефикси на DConf клавишите за спиране конверсията на именатаПредв. заредени механизмиПредварително заредени механизми по време на стартирането на ibusКлавишни комбинации за предишен механизъмПредишен метод:Спиране на програматаПремахва избрания метод за писане от списъка с разрешени методиРестартиранеСъхранен ред на механизми в списъка с методи за писанеИзбор на метод за писанеИзберете клавишна комбинация за %sЗадава предпочитания за IBUSЗадаването на глобален механизъм не успя. Задава как ibus да показва или скрива лентата за езикаЗадава ориентацията на кандидатите в таблицата за прегледСподеляй същия метод за писане за всички приложенияПоказвай икона в зоната за уведомяванеПоказва информация от избрания метод за писанеПоказва името на метода за писанеПоказва името на метода за писане на лентата за езикПоказва името на метода за писане на лентата за език при поставена отметкаПоказва настройки на избрания метод за писанеСтартирай ibus при влизанеIBus демонът не е стартиран. Да го стартирам ли сега?Клавишна комбинация за превключване към следващ в списъка метод за писанеКлавишна комбинация за превключване към предишен в списъка метод за писанеКлавишна комбинация за превключване към следващия в списъка метод за писанеКлавишна комбинация за превключване към предишния в списъка метод за писанеКлавишна комбинация за изключване на метода за писанеКлавишна комбинация за включване на метода за писанеКлавишна комбинация за включване или изключване на метода за писанеГорен ляв ъгълГорен десен ъгълПревключващи клавишни комбинацииУпотреба: %s КОМАНДА [ОПЦИЯ...] Използване на избран шрифтИзползване на избран шрифт за панела с езициИзползван шрифт по избор:Използва глобалния метод за писанеИзползване на системната клавиатурна подредба (XKB)Използване на системната клавиатурна подредбаВертикално_Относно_ДобавянеП_рилагане_ОтказванеЗат_варяне_ИзтриванеНа_долу_Добре_Предпочитания_ПремахванеНа_гореdefault:LTRезик: %s Валентин Ласковibus-1.5.22/po/pt.gmo0000644000000000000000000001677113623751604011222 00000000000000L|H I [ #_             & 0 9 V v | " H   1 : F L Q Z ` r |       "5H Q\m |    $27<QY] frw}    % ;H"P(s-Hf |  !B ]ir y  vy1  (-4G W b lv!%  4X r    ,0E]e y   $6I\ei "    #+/ 8DKQhpw~  :&$K Z6d= )Gg6$!2 EOUip"1+ 1: AM^ ep y   a&;Mf%ApKGZhS>sV|d3U@W)Jg?'1LN qb2mQR6-B+o/x0_D{r.#ju5 E:*w]O}t `X9kz=T8i[FlCP$(!Yyne" ,cIH<v\^~47 (Not implemented)...Global input method settingsKeyboard LayoutKeyboard ShortcutsStartupAboutActivitiesAdlamAdvancedAhomAlwaysAnimals & NatureAnnotations: %sAuthor: %s Bassa VahBhaiksukiBopomofoCanceled to choose an emoji.Click to view a warning messageCloseCommands: ComponentCopied an emoji to your clipboard.Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Description: Description: %sDisable shortcut keysDisable:Do not showDograDoneDuployanEmojiEmoji annotation:EmoticonsEnable input method by defaultEnable or disable:Enable shortcut keysEnable:Engines orderFavoritesFlagsFood & DrinkGeneralGlagolitic SupplementGunjala GondiHas emoji variantsHide automaticallyHiraganaHorizontalIBus PreferencesIPA ExtensionsInput MethodKana SupplementKatakanaKbdKeyboard layout: %s Keyboard shortcutsLanguage: %s Loading a Unicode dictionary:MakasarMarchenMasaram GondiMedefaidrinMende KikakuiMenuMiaoMongolian SupplementMore…MroName: %sNandinagariNoneNushuNyiakeng Puachue HmongObjectsOtherOthersPage DownPage UpPau Cin HauPlaying CardsPreferencesPreload enginesPreload engines during ibus starts upQuitReset the configuration valuesResetting…RestartSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSet IBus PreferencesShow available enginesShow emoji variantsShow information of the selected input methodShow the configuration valuesShow this informationShow versionSoyomboStart ibus on loginSutton SignWritingSymbolsTakriTamil SupplementTangutTangut ComponentsTifinaghTravel & PlacesUse global input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWanchoWarang CitiZanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRtranslator-creditsProject-Id-Version: ibus 1.5.21 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2019-09-16 11:26+0000 Last-Translator: Manuela Silva Language-Team: Portuguese Language: pt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Zanata 4.6.2 Plural-Forms: nplurals=2; plural=(n != 1) (Não implementado)...Definições globais do método de entradaAtalhos de TecladoAtalhos de TecladoArranqueSobreAtividadesAdlamAvançadoAhomSempreAnimais e NaturezaAnotações: %sAutor: %s Bassa VahBhaiksukiBopomofoCancelado para escolher um emoji.Clique para ver uma mensagem de avisoFecharComandos: ComponenteCopiado um emoji para a sua área de transferência.Direitos de Autor (c) 2007-2010 Peng Huang Direitos de Autor (c) 2007-2010 Red Hat, Inc.Descrição: Descrição: %sDesativar teclas de atalhoDesativar:Não mostrarDograConcluído DuployanEmojiAnotação de emoji:EmoticonsAtivar método de entrada por predefiniçãoAtivar ou desativar:Ativar teclas de atalhoAtivar:Ordem de mecanismosFavoritosBandeirasComida e BebidasGeralSuplemento de GlagoliticGunjala GondiTem variantes de emojiOcultar automaticamenteHiraganaHorizontalPreferências de IBusExtensões de IPAMétodo de EntradaSuplemento de KanaKatakanaKbdDisposição do teclado: %s Atalhos de tecladoIdioma: %s A carregar um dicionário Unicode:MakasarMarchenMasaram GondiMedefaidrinMende KikakuiMenuMiaoSuplemento de Mongolian Mais…MroNome: %sNandinagariNenhumNushuNyiakeng Puachue HmongObjetosOutrosOutrosPágina para BaixoPágina para CimaPau Cin HauCartasPreferênciasMecanismos de pré-carregamentoMecanismos de pré-carregamento durante o arranque de ibusSairRedefinir os valores da configuraçãoA redefinir...ReiniciarGuardar emoji na janela para a área de transferênciaOrdem de mecanismos guardados na lista de métodos de entradaNúmero de versão guardadoSelecione um idiomaSelecione um método de entradaDefinir Preferências de IBusMostrar mecanismos disponíveisMostrar variantes de emojiMostrar informação do método de entrada selecionadoMostrar os valores da configuraçãoMostrar esta informaçãoMostrar versãoSoyomboIniciar ibus ao iniciar a sessãoSutton SignWritingSímbolosTakriSuplemento de TamilTangutComponentes de TangutTifinaghViagem e LocaisUtilizar método de entrada globalUtilizar disposição do teclado do sistema (XKB)Utilizar disposição do teclado do sistemaUtilizar xmodmapVerticalWanchoWarang CitiZanabazar Square_Sobre_Adicionar_Aplicar_Cancelar_Fechar_EliminarPara _Baixo_OK_Preferências_RemoverPara _Cimapredefinição:LTRManuela Silva ibus-1.5.22/po/en_GB.gmo0000644000000000000000000002050313623751603011534 00000000000000id   # ? V p o  < 2 ; B N X k  H  #  % ; D (W ( @  D N a v ~  0     . G U @` C   9.h)n^ %9Sj?o91=2o-&@'h@|DD<G.-4&7M'] # '4< @Lo_# $>oM<   &9MHe #  )&)PAzD 3HP Xc0t    '@2Cs9:)@^j % %<?A:12Bu-&@;@ODD<.W-4  '0 X i           !! !#!'Jg`%f*a,Ic0CK&A6/-O[bRY"_e) M^U47P:5?X @B \32G$F9=TN1L+;(h]VD H.dZ<W E8S!i#Q>...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCandidates orientation:Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontCustom font name for language panelDescription: Disable shortcut keysDisable:Embed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:GeneralHorizontalIBus PreferencesIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Modifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.PreferencesPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:QuitRemove the selected input method from the enabled input methodsRestartSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxStart ibus on loginThe shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysUse custom fontUse custom font name for language panelUse custom font:Use global input methodUse system keyboard (XKB) layoutUse system keyboard layoutVertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRtranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:46+0000 Last-Translator: Steven Panek (Espreon) Language-Team: English (British) Language: en_GB MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); ...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCandidates orientation:Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontCustom font name for language panelDescription: Disable shortcut keysDisable:Embed Pre-edit TextEmbed Pre-edit Text in Application WindowEmbed pre-edit text in application windowEmbed the pre-edit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:GeneralHorizontalIBus PreferencesIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Modifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.PreferencesPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:QuitRemove the selected input method from the enabled input methodsRestartSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet the behaviour of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxStart ibus on loginThe shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysUse custom fontUse custom font name for language panelUse custom font:Use global input methodUse system keyboard (XKB) layoutUse system keyboard layoutVertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRSteven Panek, ibus-1.5.22/po/mr.gmo0000644000000000000000000005565513623751604011221 000000000000004L     # 1Hboq<  ": RH] # 4 =IN(a(@DXk 9 ".3b02c  '? X!f @C6Pcv9)^0[ .%&.UZq? #J7( '991s2-6&M@t'"3 IV8jO'Qm@D\D<.#-R4/C `  '   > !A! \!h!q! !!######## ### # #$$+$1%(%"&'&&UN&)&,&"&'\'))))))5*5D*-z*/***K++"+V,S],,6,,,-<-EY-q-q..m//ke090 1"#15F1|12M%2 s2 22T2|3_404 6@6D6'V6%~6,6067K7F`7777x8H90b9.9;9Y9 X:Lb::rH;;;.[<j<H<0>=Ro==1=>>ON>>KB?3?)?5?"@h@>BA/AHA+AM&BItBBe`CC8XDHDqDBLEkEE0FjF5AGswG)G%H:;HmvHHcIIDJGJ=LLM_NnNqnOO)iP)P?P\PZQ&R5+RcaR@RBSIS[SUST$T T>TOU/gUY!YYYZZ:ZLZeZ!Z Z ZZLZ[cp{C~fB}*X /ntZ7TbQ%@ SFOgV)`w=?6jsd_Au 3+h\$ imI]M&Dk"zlErx:1N8-J(^|HGRW;[L4y!K Yqa5eP0,2vU9<>#'o.%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.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.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Latin layouts which have no ASCIIList engine name onlyModifiers:More…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.Saved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.Usage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2018-02-20 04:23-0500 Last-Translator: Copied by Zanata Language-Team: Marathi Language: mr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 3.9.6 %s अपरिचीत आदेश आहे! (लागू केले नाही)...फॉन्ट व शैलीग्लोबल इंपुट पद्धत सेटिंग्स्कळफलक मांडणीकळफलक शार्टकटस्टार्टअपIBus हुशार इनपुट बस मुख्यपान: https://github.com/ibus/ibus/wiki कळफलक शॉर्टकट किज दाबून किंवा पटलावरील चिन्ह क्लिक करून वरील सूचीपासून पसंत केलेल्या सक्रीय इंपुट पद्धतीचा वापर शक्य आहे.विषयीनीवडलेली इंपुट पद्धत कार्यक्षम इंपुट पद्धतींमध्ये समावेश कराप्रगतनेहमीलेखक: %s स्वयं लपवातळापासून डावा कोपरातळापासून उजवा कोपराIBus शी जोडणी अशक्य. घटकांचे निर्देशन:आदेश: सर्वहक्काधिकार (c) 2007-2010 पेंग हुआंग सर्वहक्काधिकार (c) 2007-2010 Red Hat, Inc.रेजिस्ट्रि कॅशे निर्माण करामनपसंतमनपसंत फॉन्टभाषा पटल करीता स्वपसंत फॉन्ट नावDConf प्रिझर्व्ह नेम प्रिफिक्सेस्वर्णन: शार्टकट किज् बंद कराबंद करा:पुन्हा दाखवू नकापूर्ण झालेप्रिएडीट मजकूर एम्बेड कराऍप्लिकेशन पटलात प्रिएडीट मजकूर एम्बेड कराऍप्लिकेशन पटलात प्रिएडीट मजूकर एम्बेड कराऍप्लिकेशन पटलात इंपुट पद्धतीचे प्रिएडीट मजकूर एम्बेड करापूर्वनितर्धारीतपणे इंपुट पद्धत सुरू कराऍप्लिकेशनला इंपुट फोकस प्राप्त झाल्यावर इंपुट पद्धत पूर्वनिर्धारीतपणे सुरू कराकार्यान्वीत करा किंवा अकार्यान्वीत करा:शार्टकट किज् सुरू करासुरू करा:इंजिनचे क्रमibus-daemon पासून बाहेर पडापटल नेहमी दाखवले जात असल्यास इंपुट कर्सरचे पालन करासर्वसाधारणग्रोबल इंजिन ठरवण्यास अपयशी. स्व छुपे कराआडवेIBus आवड निवडIBus डिमन %d सेकंदात सुरू करणे अशक्यIBus सुरू झाले! IBus चा वापर न केल्यास, खालील ओळींना $HOME/.bashrc मध्ये समाविष्ट करा; व त्यानंतर डेस्कटॉपमध्ये पुनः प्रवेश करा. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusLinux/Unix करीता IBus हे एक हुशार इनपुट बस आहे.खरे असल्यास, पटल नेहमी दाखवले जात असल्यास पटल इंपुट कर्सरचे पालन करते. खोटे असल्यास, पटल ठराविक ठिकाणी दाखविले जाते.इंपुट पद्धतKbdकि कोड:कळफलक मांडणी: %s कळफलक शार्टकटभाषा पटलचे स्थानभाषा पटलाचे स्थान:भाषा: %s लॅटिन मांडणी ज्याकडे ASCII नाहीफक्त इंजिन नाव सूचीत दाखवामॉडिफायर:आणखी…कार्यक्षम इंपुट पद्धतींमध्ये नीवडलेली इंपुट पद्धत खाली सरकवाकार्यक्षम इंपुट पद्धतींमध्ये नीवडलेली इंपुट पद्धत वर सरकवापुढील इंजीनचे शार्टकट किज्पुढची इंपुट पद्धत:इंजिन ठरवले नाही. लुकअप टेबलचे निर्देशनलुकअप टेबलचे निर्देशन. 0 = Horizontal, 1 = Verticalइतरकृपया कि (किंवा कि जोडणी) दाबाकृपया कि (किंवा कि जोडणी) दाबा. कि सोडल्यावर संवाद बंद होईल.IME स्वीचर पटलकरिता डिले मिलिसेकंद पॉपअप कराआवड निवडनाव रूपांतर थांबवण्याकरीता DConf किज्चे प्रिफिक्सेस्प्रीलोड इंजीन्स्ibus सुरू होतेवेळी इंजीन आधिपासूनच लोड करामागील इंजीनचे शॉर्टकट किज्मागील इंपुट पद्धत:ibus-daemon च्या D-Bus पत्त्याची छपाई करा बाहेर पडा XKB चिन्हाचे RGBA मूल्यरेजिस्ट्रि कॅशे FILE वाचा.प्रणाली रेजिस्ट्रि कॅशे वाचा.कार्यक्षम इंपुट पद्धतीपासून नीवडलेली इंपुट पद्धत काढून टाकासंरचना मूल्य मूळस्थितीत आणापुन्हा सेट करत आहे…पुन्हा चालू कराibus-daemon पुन्हा सुरू कराibus इंजिन्सचा वापर करतेवेळी, xmodmap किंवा .Xmodmap अस्तित्वात असल्यास xmodmap चालवा.इंपुट मेथड सूचमध्ये इंजिनचे क्रम साठवेआवृत्ती क्रमांक साठवलेइंपुट पद्धत नीवडा%s करीता कळफलक शार्टकट नीवडाIBus पसंती सुरू कराग्रोबल इंजिन ठरवण्यास अपयशी. इंजिन सेट किंवा प्राप्त कराभाषा पट्टी कसे दाखवायचे किंवा लपवायचे यासाठी ibus चे वर्तन ठरवालुकअप टेबल मधील घटकांचे निर्देशन ठरवासर्व ऍप्लिकेशन्स् मध्ये एकसारखेच इंपुट पद्धत शेअर कराउपलब्ध इंजिन्स दाखवाचिन्ह प्रणाली ट्रेवर दाखवानीवडलेल्या इंपुट पद्धत विषयी माहिती दाखवाइंपुट पद्धतीचे नाव दाखवाभाषा पट्टीवरील इंपुट पद्धतीचे नाव दाखवाचेकबॉक्स नीवडल्यानंतर भाषा पट्टीवरील इंपुट पद्धतीचे नाव दाखवागुणधर्म पटल दाखवा:नीवडलेल्या इंपुट पद्धतीची मांडणी दाखवासंरचना मूल्ये दाखवारेजिस्ट्रि कॅशेमधील अंतर्भुत माहिती दाखवाही माहिती दाखवाआवृत्ती दाखवाप्रवेशवेळी ibus सुरू कराIBus डिमन सुरू नाही. तुम्हाला ते सुरू करायचे?गुणधर्म पटलाचे वर्तन. 0 = दाखवू नका, 1 = स्व छुपे करा, 2 = नेहमी दाखवागुणधर्म पटल दाखवण्याकरिता मिलिसेकंदफोकस-इन किंवा गुणधर्म बदलवण्यानंतर, गुणधर्म पटल दाखवण्याकरिता मिलिसेकंद.रेजिस्ट्रि कॅशे अवैध आहे. साठवलेले आवृत्ती क्रमांकाचा वापर मागील इंस्टॉल झालेले ibus आणि सध्या इंस्टॉल झालेल्या ibus मधील भेद जाणून घेण्यासाठी केला जाईल.सूचीतील पुढची इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्सूचीतील मागील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्सूचीतील पुढील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्मागील इंपुट पद्धत नीवडण्याकरीता वापरण्याजोगी शार्टकट किज्इंपुट पद्धती बंद करण्यासाठी शार्टकट किज्इंपुट पद्धती सुरू करण्यासाठी शार्टकट किज्इंपुट पद्धत सुरू किंवा बंद करण्यासाठी शार्टकट किज्वरील डावा कोपरावरील उजवा कोपराशॉर्टकट किज् ट्रिगर कराgtk_accelerator_parse करिता शॉर्टकट किज सुरू करालॅटिन मांडणीमध्ये US मांडणी समावेश केली आहे. वेरिएंट आवश्यक नाही.वापर: %s COMMAND [OPTION...] स्वपसंत फॉन्ट वापराभाषा पटल करीत स्वपसंत फॉन्ट नाव वापरामनपसंत फॉन्टचा वापर करा:ग्लोबल इंपुट पद्धत नीवडामागील इंपुट पद्धतीचा वापर करण्यासाठी शिफ्टसह शार्टकटचा वापर कराप्रणाली कळफलक (XKB) मांडणीचा वापर कराप्रणाली कळफलक मांडणीचा वापर कराxmodmapचा वापर कराउभेरेजिस्ट्रि कॅशे FILE लिहा.प्रणाली रेजिस्ट्रि कॅशे लिहा.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 अशा व्याप्तिमध्ये.विषयी(_A)समावेष करा (_A)लागू करा (_A)रद्द करा (_C)बंद करा (_C)नष्ट करा (_D)खाली (_D)ठिक आहे (_O)आवड निवड (_P)काढूण टाका (_R)वर (_U)default:LTRभाषा: %s इंपुट पद्धतींचा वापर करत आहेसंदिप शेडमाके , 2009; संदिप शेडमाके , 2009, 2010.ibus-1.5.22/po/et.po0000644000000000000000000025177313623751600011042 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:46+0000\n" "Last-Translator: mihkel \n" "Language-Team: Estonian \n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Võimalda kiirklahvid" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Kohandatud font" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "Vali sisestusmeetod" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Loobu" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_Olgu" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Programmist" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "Sul_ge" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Keel: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Klaviatuuri asetus: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Kirjeldus:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Vali sisestusmeetod" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "L_isa" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Sisestusmeetod" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus eelistused" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Määra IBus eelistused" #: 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 "_Rakenda" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "Ku_stuta" #: 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 "" #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horisontaalne" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertikaalne" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Ülemine vasak nurk" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Ülemine parem nurk" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Alumine vasak nurk" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Alumine parem nurk" #: setup/setup.ui:37 msgid "Custom" msgstr "Kohandatud" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "Alati" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Järgmine sisestusmeetod." #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Eelmine sisestusmeetod:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Võimalda või keela:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Võimalda:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Keela:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Kasuta kohandatud fonti:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "" #: setup/setup.ui:579 msgid "General" msgstr "" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Eemalda" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "_Üles" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "_Alla" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "_Programmist lähemalt" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Eelistused" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Kasuta kohandatud fonti:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "" #: setup/setup.ui:1298 msgid "Advanced" msgstr "" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Käivita ibus sisselogiminsel" #: setup/setup.ui:1358 msgid "Startup" msgstr "" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Vertikaalne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "Sul_ge" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "Kirjeldus:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "IBus eelistused" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Eelistused" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Restart" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/ia.po0000644000000000000000000026464713623751600011027 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:47+0000\n" "Last-Translator: Nik Kalach \n" "Language-Team: Interlingua \n" "Language: ia\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Precargar le ingenios" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Precargar le ingenios durante le initiation de ibus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Ordine de ingenios" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Le ordine de ingenios registrate in le lista de methodos de ingresso" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" "Demora in millisecundas ante le demonstration del fenestra de commutator de " "methodos de ingresso" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Usar le disposition de claviero del systema" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Usar le disposition de claviero del systema (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Inserer le texto pre-editate" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Inserer le texto pre-editate in le fenestra de application" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Usar le methodo de ingresso global" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Usar le mesme methodo de ingresso pro tote le applicationes" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Activar le methodo de ingresso predefinite" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 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/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf preserva le prefixos de nomines" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefixos de claves DConf pro parar le conversion de nomines" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Activator de claves acceleratori" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Le claves acceleratori pro activar e disactivar le methodo de ingresso" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Activator de claves acceleratori pro gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Activar claves acceleratori" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Le combination de claves pro activar le methodo de ingresso" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Disactivar claves acceleratori" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Le combination de claves pro disactivar le methodo de ingresso" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Claves acceleratori del ingenio sequente" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 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/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Claves acceleratori del ingenio precedente" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 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/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Occultar automaticamente" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Position del pannello de lingua" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orientation del tabula de cerca" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientation del tabula de cerca. 0 = horizontal, 1 = vertical" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Monstrar le icone in le area de indicatores" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Monstrar le nomine del methodo de ingresso" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Monstrar le nomine del methodo de ingresso sur le barra de lingua" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Usar characteres personalisate" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Usar un typo de characteres personalisate pro le pannello de lingua" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Characteres personalisate" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Nomine del typo de characteres personalisate pro le pannello de lingua" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Activator de claves acceleratori pro gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Le claves acceleratori pro activar e disactivar le methodo de ingresso" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 #, fuzzy msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Activator de claves acceleratori pro gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 #, fuzzy msgid "The shortcut keys for turning emoji typing on or off" msgstr "Le claves acceleratori pro activar e disactivar le methodo de ingresso" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "Nomine del typo de characteres personalisate pro le pannello de lingua" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Altere" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "Seliger un methodo de ingresso" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "A_nnullar" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "A proposito" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Clauder" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Lingua: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Disposition de claviero: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autor: %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 "Seliger un methodo de ingresso" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Adder" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Methodo de ingresso" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Preferentias IBus" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Definir preferentias IBus" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Claves acceleratori" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Codice de clave:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modificatores:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Applicar" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Deler" #: 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 "" "Preme un clave (o un combination de claves).\n" "Le dialogo se claudera quando le clave es liberate." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Preme un clave (o combination de claves)" #: setup/main.py:121 setup/main.py:588 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:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "Le demonio IBus non functiona. Initiar lo?" #: setup/main.py:536 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:550 #, 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:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Selige le clave acceleratori pro %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "cambiamento de methodos de ingresso" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horizontal" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertical" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Angulo superior siniste" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Angelo superior dextere" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Angulo inferior sinistre" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Angulo inferior dextere" #: setup/setup.ui:37 msgid "Custom" msgstr "Personalisate" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "Sempre" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Methodo de ingresso sequente:" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Methodo de ingresso precedente" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Activar o disactivar:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Activar:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Disactivar:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Claves acceleratori" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Configurar le orientation del tabula de cerca de candidatos" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Orientation de candidatos:" #: setup/setup.ui:407 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:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Position del pannello de lingua:" #: setup/setup.ui:494 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:508 msgid "Embed preedit text in application window" msgstr "Inserer le texto pre-editate in le fenestra de application" #: setup/setup.ui:513 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:527 msgid "Use custom font:" msgstr "Usar characteres personalisate:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Typo de characteres e stilo" #: setup/setup.ui:579 msgid "General" msgstr "General" #: setup/setup.ui:671 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:682 msgid "_Remove" msgstr "_Remover" #: setup/setup.ui:689 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:700 msgid "_Up" msgstr "_Supra" #: setup/setup.ui:707 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:718 msgid "_Down" msgstr "_Infra" #: setup/setup.ui:725 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:736 msgid "_About" msgstr "A _proposito" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Monstrar le information del methodo de ingresso seligite" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Preferentias" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Monstrar le configuration del methodo de ingresso seligite" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Le claves acceleratori pro activar e disactivar le methodo de ingresso" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Usar characteres personalisate:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Disposition de claviero" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Configuration del methodo de ingresso global" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Avantiate" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Le bus de ingresso intelligente\n" "Pagina del projecto: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Initiar ibus al connexion" #: setup/setup.ui:1358 msgid "Startup" msgstr "Initiation" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Vertical" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "Monstrar solmente nomines de ingenios" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Le connexion a IBus es impossibile.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "lingua: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Necun ingenio es configurate.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Falta al configuration del ingenio global.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Falta al obtener le ingenio global.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Usage: %s COMMANDO [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Commandos:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s es un commando incognite!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Altere" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Clauder" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "Description:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "Preferentias IBus" #: ui/gtk3/panel.vala:1095 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:1099 msgid "translator-credits" msgstr "Nik Kalach " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Preferentias" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Reinitiar" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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" ibus-1.5.22/po/de.gmo0000644000000000000000000012551513623751603011163 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIf1gI(hrhhhh)hh i$ir3iiHj MjPZjj jjjj j"jk!k":k]k xk kkkk/k k l6l KlUl \lgl ~l llll ll l l lll mm0m@mGmWm pm|m!mmmm+mn 7nCnbn.n.n.n.o.>o.mooooo opp pp +pY9pp'q%q q q"q-!r.Or/~r(r rr rss$5sZscsHysss s*s#t4tFt@dt9tt ttu,uDu[u+xuuuu uuuu v(v7v =vJvQvfv&yvv v vv+v+wB{~{ {{{{ {{|-| G|T|m|u|}||| || || }}.}H}^}n}w}} }}"}}} } }~C~\~7W#(sb & : DNUgx#ā́ сށ  ' .8@[ wق #!E^eՃڃIDbDapx Æ ˆنe1>9[%Ԉ  (.C\$l$ˉ#/4 N [f}VU܊2 6A U`x  ċ!ɋ " .<S[` i v ƌ<1n t ɍ ԍ  +7%Q w7v<2 o}Gޏ'":)T~#$ N%_  a & 47?<wҒ* ,7M=+Ó M7L7 ĕҕ(!4J 1XҖ+4E z#ڗ 1H^gv ~ ɘ '=S%i# Ι  #0#8\dx  ˚ 7fM7c@P2"ĝHIΞH<aD<1 1R=G U `js{ ơ8j  66A."p'9(gZ(!)Kaeyʥ ѥQߥt1'(Φ J`Z֩ ܩ  /: @4L% ͪJWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2020-01-30 13:16+0000 Last-Translator: Mike FABIAN Language-Team: German Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 3.10.3 „SCHRIFTART“ für Emojizeichen im Emojidialog„SPRACHE“ für Emojianmerkungen im Emojidialog. Zum Beispiel „en“%s ist ein unbekannter Befehl! (Nicht implementiert)...Schriftart und StilGlobale InputmethodeneinstellungenTastaturbelegungTastenkombinationenStartenIBus Der intelligente Eingabe-Bus Homepage: https://github.com/ibus/ibus/wiki Die aktive Eingabemethode kann aus der angezeigten Liste durch die Tastenkombination oder durch einen Klick auf das Icon ausgewählt werdenInfoAktivitätenFügen Sie die gewählte Eingabemethode zu den aktivierten Eingabemethoden hinzuAdlamErweitertÄgäische ZahlzeichenAhomAlchemistische SymboleAlias: %sAlphabetische PräsentationsformenImmerAnatolische HieroglyphenAltgriechische NotenschriftzeichenAltgriechische ZahlzeichenAlte SymboleTiere & NaturAnmerkungen: %sArabischArabisch, Erweiterung AArabische mathematische alphanumerische SymboleArabische Präsentationsformen-AArabische Präsentationsformen-BArabisch, ErgänzungArmenischPfeileAutor: %s Automatisch versteckenAvestischBalinesischBamumBamum, ErgänzungBasis-LateinischBassa VahBatakBengalischBhaiksukiBlockelementeBopomofoBopomofo, erweitertEcke unten linksEcke unten rechtsRahmenzeichnungBrahmiBraille-ZeichenZurück zur EmojiauswahlBuginesischBuidByzantinische NotenschriftzeichenCJK-KompatibilitätCJK-KompatibilitätsformenCJK-Ideogramme, KompatibilitätCJK-Ideogramme, Kompatibilität, ErgänzungCJK-Radikale, ErgänzungCJK-StricheCJK-Symbole und -InterpunktionVereinheitlichte CJK-IdeogrammeVereinheitlichte CJK-Ideogramme, Erweiterung AVereinheitlichte CJK-Ideogramme, Erweiterung BVereinheitlichte CJK-Ideogramme, Erweiterung CVereinheitlichte CJK-Ideogramme, Erweiterung DVereinheitlichte CJK-Ideogramme, Erweiterung EVereinheitlichte CJK-Ideogramme, Erweiterung FKeine Verbindung zu IBus. Abbrechen der Emojiauswahl.Ausrichtung der Kandidaten:KarischAlwanischChakmaChamCherokeeCherokee, ErgänzungSchachsymboleWähle eine Bedingung um nach teilweisen Übereinstimmungen in Emojianmerkungen zu suchenAuswahl einer Standard-Sprache der Emoji-Wörterbücher im Emoji-Dialog. Der Wert $lang wird auf /usr/share/ibus/dicts/emoji-$lang.dict angewendet.Wähle eine der folgenden Bedingungen um nach teilweisen Übereinstimmungen in Emojianmerkungen zu suchen: 0 == Präfix, 1 == Suffix, 2 == MittendrinKlicken um eine Warnmeldung anzusehenSchließenCodepoint: %sKombinierende diakritische ZeichenKombinierende diakritische Zeichen, erweitertKombinierende diakritische Zeichen, ErgänzungKombinierende diakritische Zeichen für SymboleKombinierende halbe diakritische ZeichenBefehle: Allgemeine indische ZiffernKomponenteEnthält den TextSymbole für SteuerzeichenEmoji in die Zwischenablage kopiert.KoptischKoptische ZahlzeichenCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.ZählstabziffernErstellen Registry-CacheKeilschriftKeilschrift-Zahlzeichen und -InterpunktionWährungszeichenBenutzerdefiniertBenutzerdefinierte SchriftartBenutzerdefinierter Font-Name für Emoji-Zeichen im Emoji-DialogName der benutzerdefinierten Schriftart für Sprach-PanelKyprische SchriftKyrillischKyrillisch, erweitert-AKyrillisch, erweitert-BKyrillisch, erweitert-CKyrillisch, ErgänzungDconf bewahrt NamenspräfixeStandard-Sprache für das Emoji-WörterbuchBeschreibung: Beschreibung: %sMormonenalphabetDevanagariDevanagari, erweitertDingbatsTastenkürzel deaktivierenDeaktivieren:Nicht anzeigenDograDominosteineFertigDuployé-KurzschriftFrühe KeilschriftÄgyptische Hieroglyphen-SteuerzeichenÄgyptische HieroglyphenAlbanischElymaischPreedit-Text einbettenPreedit-Text in Anwendungsfenster einbettenPreedit-Text in Anwendungsfenster einbettenDen Preedit-Text der Eingabemethode in Anwendungsfenster einbettenEmojiEmojiauswahlEmojianmerkungssprache:Emojianmerkungen:Emojianmerkungen finden mit teilweiser ÜbereinstimmungEmoji Tastenkombination für gtk_accelerator_parseSmileysEingabemethode standardmäßig aktivierenEingabemethode standardmäßig aktivieren, wenn die Anwendung Eingabefokus erlangtAktivieren oder deaktivieren:Tastenkürzel aktivierenAktivieren:Zusätzliche umschlossene alphanumerische ZeichenUmschlossene alphanumerische ZeichenUmschlossene CJK-Zeichen und -MonateZusätzliche umschlossene CJK-ZeichenEngine-ReihenfolgeÄthiopischÄthiopisch, erweitertÄthiopisch, erweitert-AÄthiopisch, ZusatzBeenden ibus-daemonSCHRIFTARTKonnte die aktuelle Textapplikation nicht finden. Bitte fokussieren Sie die Applikation erneut. Zum Beispiel tippen sie mehrere Male die Esc-Taste um den Emojieingabemodus zu verlassen, klicken Sie mit der Maus auf den Desktop und klicken sie dann wieder auf Ihre Textapplikation.FavoritenFlaggenDen Input-Cursor verfolgen falls das Panel immer angezeigt wirdEssen & TrinkenAllgemeinAllgemeine InterpunktionGeometrische FormenGeometrische Formen, erweitertGeorgischGeorgisch, erweitertGeorgisch, ErgänzungAuslesen der globalen Engine fehlgeschlagen. GlagolitischGlagolitisch, ErgänzungGotischGranthaGriechisch, ZusatzGriechisch und koptischGujaratiGunjala GondiGurmukhiHalbbreite und vollbreite FormenHangeul-Jamo, KompatibilitätHangeul-JamoHangeul-Jamo, erweitert-AHangeul-Jamo, erweitert-BHangeul-SilbenzeichenHanifi RohingyaHanunóoHat EmojivariantenHatranHebräischAutomatisch ausblendenHigh Surrogates (privater Bereich)High SurrogatesHiraganaHorizontalIBus PanelIBus-EinstellungenIBus-Dienst konnte innerhalb von %d Sekunden nicht gestartet werdenIBus 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. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus ist ein intelligenter Eingabe-Bus für Linux/Unix.IPA ErweiterungenIdeographische BeschreibungszeichenIdeographische Symbole und InterpunktionOb Emojianmerkungen nur mit einem Teil der Zeichenfolge übereinstimmen müssen anstatt mit kompletten ZeichenfolgeWenn wahr folgt das Panel dem Input-Cursor wenn das Panel immer angezeigt wird. Wenn falsch wird das Panel an einer festen Position angezeigt.AramäischIndische Siyaq-ZahlzeichenEingabemethodeInschriften-PahlaviParthischJavanischKaithiKana, erweitert-AKana, ErgänzungKanbunKangxi-RadikaleKannadaKatakanaKatakana, Phonetische ErweiterungenKayah LiKbdTasten-Code:Tastaturbelegung: %s TastenkombinationenKharoshthiKhmerKhmer-SymboleKhojkiKhudabadiSPRACHEPosition des Sprach-PanelsPosition des Sprach-Panels:Sprache: %s LaotischLateinisch, weiterer ZusatzLateinisch, erweitert-ALateinisch, erweitert-BLateinisch, erweitert-CLateinisch, erweitert-DLateinisch, erweitert-ELatin Tastaturbelegungen ohne ASCIILateinisch-1, ErgänzungLepchaBuchstabenähnliche SymboleLimbuLinear ALinear-B-IdeogrammeLinear-B-SilbenzeichenNur Engine-Name auflistenLisuUnicodedaten beim Starten ladenWenn "true", dann werden die Unicodedaten beim Starten geladen. Ungefähr 15MB Speicher werden benötigt um die Daten zu laden. Wenn "false", dann werden die Unicodedaten erst geladen wenn der Emojidialog zum ersten Mal geöffnet wird. Die Unicodedaten werden immer nach den Emojidaten geladen, auch wenn diese Option "true" ist.Emojidaten beim Starten ladenWenn "true", dann werden die Emojidaten beim Starten geladen. Ungefähr 10MB werden benötigt um diese Daten zu laden. Wenn "false", dann werden die Emojidaten erst geladen, wenn der Emojidialog zum ersten Mal geöffnet wird.Lade ein Unicodewörterbuch:Low SurrogatesLykischLydischMahajaniMahjonggsteineMakassarMalayalamMandäischManichäischMarchenMasaram GondiFinde Emojianmerkungen mit teilweiser Übereinstimmung mit mehr als der angegebenen Zahl von Zeichen anstelle von exakter Übereinstimmung.Nach teilweisen Übereinstimmungen in Emojianmerkungen suchen mit folgender Bedingung und mehr als der folgenden Anzahl von Zeichen:Finde Emojianmerkungen mit der angegebenen LängeÜbereinstimmung mit der Bedingung der angegebenen ganzen ZahlÜbereinstimmung mit Länge der angegebenen ganzen ZahlMathematische alphanumerische SymboleMathematische OperatorenMaya-ZahlzeichenMedefaidrinMeitei-MayekMeitei-Mayek, ErweiterungenMende-SchriftMenüMeroitisch-demotischMeroitische HieroglyphenPollard-SchriftVerschiedene mathematische Symbole-AVerschiedene mathematische Symbole-BVerschiedene SymboleVerschiedene Symbole und PfeileVerschiedene piktografische SymboleVerschiedene technische ZeichenModiModifizierende TonzeichenHilfstasten:MongolischMongolisch, ErgänzungMehr...Bewegen Sie die gewählte Eingabemethode in den aktivierten Eingabemethoden nach untenBewegen Sie die gewählte Eingabemethode in den aktivierten Eingabemethoden nach obenMroMultanischNotenschriftzeichenBirmanischBirmanisch, erweitert-ABirmanisch, erweitert-BN’KoNabatäischName: %sNandinagariNeu-Tai-LueNewaNächste Engine-TastenkombinationNächste Eingabemethode:Keine Engine gesetzt. KeineZahlzeichenFrauenschriftNyiakeng Puachue HmongObjekteOgamOl ChikiAltungarischAltitalischAltnordarabischAltpermischAltpersischAltsogdischAltsüdarabischAlttürkisch (Orchon-Runen)Öffne UnicodeauswahlOptische ZeichenerkennungAusrichtung der Lookup-TabelleAusrichtung der Lookup-Tabelle. 0 = Horizontal, 1 = VertikalOriyaZiersymboleOsageOsmaniyaSonstigeAndereOsmanische Siyaq-ZahlzeichenSeite runterSeite hochPahawh HmongPalmyrenischPau Cin HauPersonen und KörperPhagspaDiskos von PhaistosPhönizischPhonetische ErweiterungenPhonetische Erweiterungen, ErgänzungSpielkartenBitte eine Taste (oder eine Tastenkombination drücken)Bitte eine Taste (oder eine Tastenkombination drücken). Der Dialog wird geschlossen, wenn die Taste losgelassen wird.Popup-Verzögerung für IME-Wechsel-Fenster in MillisekundenEinstellungenPräfix-ÜbereinstimmungNamenspräfixe von Dconf-Schlüsseln, um Namenskonvertierung anzuhaltenEngines vorladenEngines vorladen, während IBus startetVorherige Engine-TastenkombinationVorherige Eingabemethode:Ausgabe der D-Bus-Adresse des ibus-DaemonPrivate Use ZonePsalter-PahlaviBeendenRGBA Werte des XKB IconsLesen Sie die Registry-Cache DATEI.Lesen Sie den System-Registry-Cache.RejangEntfernen Sie die gewählte Eingabemethode aus den aktivierten EingabemethodenZurücksetzen der KonfigurationswerteNeustarten...NeustartNeustart ibus-daemonRumi-Ziffernxmodmap ausführen wenn .xmodmap oder .Xmodmap vorhanden ist wenn ibus Engines gewechselt werden.RunenSamaritanischSaurashtraKopieren des ausgewählten Emoji in die Zwischenablage Gespeicherte Engine-Reihenfolge in der Eingabemethoden-ListeGespeicherte Versions-NumnnerEine Sprache auswählenEingabemethode wählenWählen Sie eine Tastenkombination für %sIBus-Einstellungen konfigurierenFont für Unicode-Kandidaten im Emoji-Dialog einstellenEinstellen einer Sprache für Emojianmerkungen im EmojidialogSetzen der globalen Engine fehlgeschlagen. Setzen oder erhalten ModulPopup-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.Verhalten von IBus einstellen, das Sprach-Panel anzuzeigen oder zu versteckenAusrichtung der Kandidaten in Lookup-Tabelle einstellenSharadaDieselbe Eingabemethode für alle Anwendungen verwendenShaw-AlphabetKurzschrift-SteuerzeichenAnzeigen verfügbare ModuleEmoji-Varianten anzeigenSymbol im Benachrichtigungsfeld anzeigenInformationen zur gewählten Eingabemethode anzeigenName der Eingabemethode anzeigenName der Eingabemethode auf Sprachleiste anzeigenName der gewählten Eingabemethode auf Sprach-Panel anzeigen, wenn Ankreuzfeld aktiviertZeige Einstellungsleiste:Einstellungen der gewählten Eingabemethode anzeigenAnzeigen der KonfigurationswerteAnzeigen des Registry-Cache InhaltsAnzeige dieser InformationAnzeigen VersionSiddhamSinghalesischSinghalesische ZahlzeichenKleine FormvariantenKleine Kana, erweitertSmileys und EmotionenSogdischSorang-SompengSojomboNichtkombinierende ZusatzzeichenSpeziellesIBus bei der Anmeldung startenSuffix-ÜbereinstimmungSundanesischSundanesisch, ErgänzungHoch- und tiefgestellte ZeichenZusätzliche Pfeile-AZusätzliche Pfeile-BZusätzliche Pfeile-CZusätzliche Mathematische OperatorenZusätzliche InterpunktionZusätzliche piktografische SymboleSupplementary Private Use Area-ASupplementary Private Use Area-BSutton-SignWritingSyloti NagriSymbolePiktografische Symbole, erweitert-ASyrischSyrisch, ErgänzungTagalogTagbanuwaTagsTai LeLannaTai VietTai-Xuan-Jing-SymboleTakriTamilischTamilisch, ErgänzungXixiaXixia-KomponentenTeluguThaanaThailändischDer IBus-Dienst läuft nicht. Möchten Sie ihn starten?Verhalten des Eigenschaften-Panels. 0 = nicht anzeigen, 1 = automatisch verstecken, 2 = immer anzeigenMillisekunden bis die Einstellungsleiste angezeigt wirdMillisekunden bis zum Anzeigen der Eigenschaftenleiste nach Fokuswechsel oder Eigenschaftenwechsel.Millisekunden bis zum Anzeigen der Panel-Icons einer EigenschaftMillisekunden, die es dauert bevor das Panel-Icon vom Engine-Icon zum Property-Icon wechselt wenn Engines gewechselt werden wenn die Property durch den Wert von icon-prop-key in IBusEngineDesc spezifiziert ist. Wenn der Wert 0 ist, gibt es keine Verzögerungszeit und das Property-Icon wird sofort gezeigt.Der Registry-Cache ist ungültig. Die gespeicherte Versions-Nummer wird verwendet, um den Unterschied zwischen der Version der zuvor installierten ibus und der aktuellen ibus zu überprüfen.Tastenkombination zum Wechseln zur nächsten Eingabemethode in der ListeTastenkombination zum Wechseln zur vorherigen Eingabemethode in der ListeTastenkombination zum Wechseln zur nächsten Eingabemethode in der ListeTastenkombination zum Wechseln zur vorherigen EingabemethodeDie Tastenkombinationen zum Ein- und Ausschalten der Unicode-EingabeTastenkombination zum Ein- und Ausschalten der Emoji-EingabeTastenkürzel zum Ausschalten der EingabemethodenTastenkürzel zum Einschalten der EingabemethodenTastenkombination zum An- oder Ausschalten der EingabemethodeTastenkombinationen zum Einschalten der Unicode Codepoint KonvertierungDie Tastenkombinationen um Konvertierungen von Emoji- oder Unicodenamen einzuschaltenTibetischTifinaghTirhutaEcke oben linksEcke oben rechtsVerkehrs- und KartensymboleReisen & OrteAuslöser-TastenkombinationTastenkombinationen auslösen für gtk_accelerator_parseUS Tastaturbelegung wird den Latin Tastaturbelegungen angefügt. Varianten können vernachlässigt werden.UgaritischUnicodeauswahlUnicode Codepoint:Unicodefont:Unicode-Tastenkombinationen für gtk_accelerator_parseVereinheitlichte Silbenzeichen kanadischer UreinwohnerVereinheitlichte Silbenzeichen kanadischer Ureinwohner, erweitertAnwendung: %s BEFEHL [OPTION...] Benutzerdefinierte Schriftart verwendenBenutzerdefinierte Schriftart für Sprach-Panel verwendenBenutzerdefinierte Schriftart verwenden:Schemapfade des Engines anstelle von ibus core verwenden, das können durch Komma getrennte Werte sein.Globale Eingabemethode wählenTastenkombination mit Umschalttaste benutzen, um zur vorherigen Eingabemethode zu wechselnSystem-Tastatur (XKB) Belegung verwendenSystem-Tastaturbelegung verwendenVerwenden von xmodmapVaiVariantenselektorenVariantenselektoren, ErgänzungVedische ErweiterungenVertikalVertikale FormenWanchoVarang KshitiOb in Emojianmerkungen mit teilweiser Übereinstimmung gesucht wird oder nichtOb Emojianmerkungen nur mit einem Teil der Zeichenfolge übereinstimmen müssen anstatt mit kompletten Zeichenfolge.Schreiben Sie die Registry-Cache DATEI.Schreiben Sie den System-Registry-Cache.Das XKB Icon zeigt den Layout-String und der String wird mit dem RGBA Wert gerendert. Der RGBA Wert kann sein 1. eine X11-Farbe , 2. ein Hex-Wert in der Form '#rrggbb' wobei 'r', 'g' und 'b' HEX-Werte für Rot, Grün und Blau sind, 3. eine RGB-Farbe in der Form 'rgb(r,g,b)' oder 4. eine RGBA-Farbe in der Form 'rgba(r,g,b,a)' wobei 'r', 'g', und 'b' entweder Integer im Bereich 0 bis 255 oder Prozentwerte von 0-100% sind und 'a' ein Gleitkommawert im Bereich 0 bis 1 für das Alpha ist.Yi-RadikaleYi-SilbenzeichenI-Ging-HexagrammeIn dieser Liste kann man eine Anmerkung für bevorzugte Emoji definieren.Sie können die favorisierten Emoji in der Emoji-Liste anzeigen wenn die Liste Zeichen enthält.Dsanabadsar-Quadratschrift_Info_HinzufügenAn_wenden_AbbrechenS_chließen_Löschen_Runter_OK_Einstellungen_Entfernen_Hochdefault:LTRAnmerkungsliste für bevorzugte Emoji im EmojidialogEmoji-Favoriteneliste im Emoji-DialogSprache: %s Eingabemethoden wechselnFabian Affolter , 2009. Hedda Peters , 2009. Mike FABIAN , 2019.ibus-1.5.22/po/or.po0000644000000000000000000030620713623751601011044 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:48+0000\n" "Last-Translator: Manoj Kumar Giri \n" "Language-Team: Oriya \n" "Language: or\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "ଯନ୍ତ୍ରକୁ ପ୍ରାକ ଧାରଣ କରନ୍ତୁ" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus ଆରମ୍ଭ ସମୟରେ ଯନ୍ତ୍ର ପ୍ରାକ ଧାରଣ କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "ଯନ୍ତ୍ର କ୍ରମ" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "ନିବେଶ ପ୍ରଣାଳୀ ତାଲିକାରେ ସଂରକ୍ଷିତ ଯନ୍ତ୍ର କ୍ରମ" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME ପରିବର୍ତ୍ତନକାରୀ ୱିଣ୍ଡୋ ପାଇଁ ପପ୍‌ଅପ୍‌ ବିଳମ୍ବ ମିଲିସେକେଣ୍ଡରେ" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "ସଂରକ୍ଷିତ ସଂସ୍କରଣ କ୍ରମ ସଂଖ୍ୟା" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "ତନ୍ତ୍ର କିବୋର୍ଡ ବିନ୍ୟାସକୁ ବ୍ୟବହାର କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "ତନ୍ତ୍ର କିବୋର୍ଡ (XKB) ବିନ୍ୟାସକୁ ବ୍ୟବହାର କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟ" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "ପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟ" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "ସର୍ବସାଧାରଣ ନିବେଶ ପ୍ରଣୀଳୀକୁ ବ୍ୟବହାର କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "ସମସ୍ତ ପ୍ରୟୋଗଗୁଡ଼ିକ ମଧ୍ଯରେ ଏକା ପ୍ରକାରର ନିବେଶ ପଦ୍ଧତିକୁ ସହଭାଗ କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଭାବରେ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଭାବରେ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ କରନ୍ତୁ ଯେତେବେଳେ ପ୍ରୟୋଗକୁ ନିବେଶ ଲକ୍ଷ୍ଯ ମିଳିଥାଏ" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf ନାମ ଉପସର୍ଗଗୁଡ଼ିକୁ ସଂରକ୍ଷିତ ରଖିଥାଏ" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "ନାମ ପରିବର୍ତ୍ତନକୁ ଅଟକାଇବା ପାଇଁ DConf କିଗୁଡ଼ିକର ଉପସର୍ଗଗୁଡ଼ିକ" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ଟ୍ରିଗର କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କିମ୍ବା ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ପାଇଁ ସଂକ୍ଷିପ୍ତ ପଥ ଚାବିଗୁଡ଼ିକୁ ସକ୍ରିୟ କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ସକ୍ରିୟ କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥ କି ଗୁଡ଼ିକ" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକୁ ନିଷ୍କ୍ରିୟ କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥ କି ଗୁଡ଼ିକ" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "ପରବର୍ତ୍ତି ଯନ୍ତ୍ର ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକ" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "ତାଲିକାରେ ପରବର୍ତ୍ତୀ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "ପୂର୍ବ ଯନ୍ତ୍ରର ସଂକ୍ଷିପ୍ତ ପଥ କି'ଗୁଡ଼ିକ" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "ତାଲିକାରେ ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଲୁଚାନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "ଭାଷା ଫଳକ ଅବସ୍ଥାନ" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "ଅବଲୋକନ ସାରଣୀର ଅନୁସ୍ଥାପନ" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "ଅବଲୋକନ ସାରଣୀର ଅନୁସ୍ଥାପନ। 0 = ଭୂ-ସମାନ୍ତର, 1 = ଭୂ-ଲମ୍ବ" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "ତନ୍ତ୍ର ଟ୍ରେରେ ଚିତ୍ରସଂକେତଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "ନିବେଶ ପଦ୍ଧତି ନାମ ଦର୍ଶାନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "ଭାଷା ତାଲିକା ପାଇଁ ନିବେଶ ପଦ୍ଧତି ନାମ ଦର୍ଶାନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ବ୍ୟବହାର କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "ଭାଷା ତାଲିକା ପାଇଁ ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ନାମକୁ ବ୍ୟବହାର କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "ଇଚ୍ଛାରୂପୀ ଅକ୍ଷରରୂପ" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "ଭାଷା ତାଲିକା ପାଇଁ ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ନାମ" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ପାଇଁ ସଂକ୍ଷିପ୍ତ ପଥ ଚାବିଗୁଡ଼ିକୁ ସକ୍ରିୟ କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କିମ୍ବା ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 #, fuzzy msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ପାଇଁ ସଂକ୍ଷିପ୍ତ ପଥ ଚାବିଗୁଡ଼ିକୁ ସକ୍ରିୟ କରନ୍ତୁ" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 #, fuzzy msgid "The shortcut keys for turning emoji typing on or off" msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କିମ୍ବା ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "ଭାଷା ତାଲିକା ପାଇଁ ଇଚ୍ଛାମୁତାବକ ଅକ୍ଷରରୂପ ନାମ" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "ଅନ୍ୟାନ୍ୟ" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "ଗୋଟିଏ ନିବେଶ ପ୍ରଣୀଳୀ ବାଛନ୍ତୁ" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "ବାତିଲ କରନ୍ତୁ (_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "ଠିକ ଅଛି (_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "ବିବରଣୀ" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "ବନ୍ଦ କରନ୍ତୁ (_C)" #: 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 "ଗୋଟିଏ ନିବେଶ ପ୍ରଣୀଳୀ ବାଛନ୍ତୁ" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "ଯୋଗ କରନ୍ତୁ (_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "ନିବେଶ ପ୍ରଣାଳୀ" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus ପସନ୍ଦ" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "shift ସହିତ ସଂକ୍ଷିପ୍ତ ପଥକୁ ପୂର୍ବ ନିବେଶ ପଦ୍ଧତିକୁ ବ୍ୟବହାର କରନ୍ତୁ" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ଡେମନ ଚାଲୁ ନାହିଁ। ଆପଣ ଏହାକୁ ଆରମ୍ଭ କରିବାକୁ ଚାହୁଁଛନ୍ତି କି?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ଡେମନ %d ସେକଣ୍ଡରେ ଆରମ୍ଭ ହୋଇ ପାରିଲା ନାହିଁ" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s ପାଇଁ କିବୋର୍ଡ ସକ୍ଷିପ୍ତପଥ ବାଛନ୍ତୁ" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "ନିବେଶ ପ୍ରଣାଳୀଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରୁଅଛି" #: setup/setup.ui:11 msgid "Horizontal" msgstr "ଭୂ-ସମାନ୍ତରାଳ" #: setup/setup.ui:14 msgid "Vertical" msgstr "ଭୂଲମ୍ବ" #: setup/setup.ui:25 msgid "Top left corner" msgstr "ଉପର ପାଖ ବାମ କୋଣ" #: setup/setup.ui:28 msgid "Top right corner" msgstr "ଉପର ପାଖ ଡ଼ାହାଣ କୋଣ" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "ତଳପାଖ ବାମ କୋଣ" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "ତଳ ପାଖ ଡ଼ାହାଣ କୋଣ" #: setup/setup.ui:37 msgid "Custom" msgstr "ଇଚ୍ଛାରୂପୀ" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "ସର୍ବଦା" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "ତାଲିକାରେ ପରବର୍ତ୍ତୀ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" #: setup/setup.ui:115 msgid "Next input method:" msgstr "ପରବର୍ତ୍ତି ନିବେଶ ପ୍ରଣାଳୀ:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "ତାଲିକାରେ ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀକୁ ବଦଳାଇବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "ପୂର୍ବ ନିବେଶ ପ୍ରଣାଳୀ:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "ସକ୍ରିୟ ଅଥବା ନିଷ୍କ୍ରିୟ:" #: setup/setup.ui:238 msgid "Enable:" msgstr "ସକ୍ରିୟ କରନ୍ତୁ:" #: setup/setup.ui:291 msgid "Disable:" msgstr "ନିଷ୍କ୍ରିୟ କରନ୍ତୁ:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "କିବୋର୍ଡ ସଂକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "ଅବଲୋକନ ସାରଣୀରେ ବ୍ୟକ୍ତିମାନଙ୍କର ଅନୁସ୍ଥାପନ ସେଟକରନ୍ତୁ" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "ପ୍ରାର୍ଥୀ ଅନୁସ୍ଥାପନ:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ଭାଷା ସୂଚକକୁ ଦର୍ଶାଇବା ଅଥବା ଲୁଚାଇବା ପାଇଁ ibus ର ଆଚରଣକୁ ସେଟକରନ୍ତୁ" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "ଭାଷା ଫଳକ ଅବସ୍ଥାନ:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "ନିବେଶ ପଦ୍ଧତି ନାମକୁ ଭାଷା ସୂଚକରେ ଦର୍ଶାନ୍ତୁ ଯେତେବେଳେ ଯାଞ୍ଚବାକ୍ସକୁ ଯାଞ୍ଚକରୁଛନ୍ତି" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "ପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ ପ୍ରୀଡିତ ପାଠ୍ୟ" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "ନିବେଶ ପଦ୍ଧତିର ପ୍ରୀଡିତ ପାଠ୍ୟକୁ ପ୍ରୟୋଗ ୱିଣ୍ଡୋରେ ଅନ୍ତସ୍ଥାପିତ କରନ୍ତୁ" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "ଇଚ୍ଛାରୂପଣ ଅକ୍ଷରରୂପ ବ୍ୟବହାର କରନ୍ତୁ:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "ଅକ୍ଷରରୂପ ଏବଂ ଶୈଳୀ" #: setup/setup.ui:579 msgid "General" msgstr "ସାଧାରଣ" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣାଳୀକୁ ସକ୍ରିୟ ନିବେଶ ପ୍ରଣାଳୀରେ ଯୋଗକରନ୍ତୁ" #: setup/setup.ui:682 msgid "_Remove" msgstr "କାଢ଼ନ୍ତୁ (_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତିରୁ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ କାଢ଼ିଦିଅନ୍ତୁ" #: setup/setup.ui:700 msgid "_Up" msgstr "ଉପର (_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତି ତାଲିକାରେ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ ଉପରକୁ ଘୁଞ୍ଚାନ୍ତୁ" #: setup/setup.ui:718 msgid "_Down" msgstr "ତଳ (_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "ସକ୍ରିୟ ନିବେଶ ପଦ୍ଧତିଗୁଡ଼ିକରେ ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣୀଳୀକୁ ତଳକୁ ଘୁଞ୍ଚାନ୍ତୁ" #: setup/setup.ui:736 msgid "_About" msgstr "ବିବରଣୀ (_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "ବଚ୍ଛିତ ନିବେଶ ପଦ୍ଧତିର ସୂଚନା ଦର୍ଶାନ୍ତୁ" #: setup/setup.ui:754 msgid "_Preferences" msgstr "ପସନ୍ଦ (_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "ବଚ୍ଛିତ ନିବେଶ ପ୍ରଣାଳୀର ବ୍ୟବସ୍ଥାକୁ ଦର୍ଶାନ୍ତୁ" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "ନିବେଶ ପଦ୍ଧତିକୁ ଅନ କିମ୍ବା ଅଫ କରିବା ପାଇଁ ସକ୍ଷିପ୍ତ ପଥଗୁଡ଼ିକ" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "ଇଚ୍ଛାରୂପଣ ଅକ୍ଷରରୂପ ବ୍ୟବହାର କରନ୍ତୁ:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "କିବୋର୍ଡ ବିନ୍ୟାସ" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "ସର୍ବସାଧାରଣ ନିବେଶ ପ୍ରଣୀଳୀ ବିନ୍ୟାସ" #: setup/setup.ui:1298 msgid "Advanced" msgstr "ଉନ୍ନତ" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "ଲଗଇନ ସମୟରେ ibus କୁ ଆରମ୍ଭ କରନ୍ତୁ" #: setup/setup.ui:1358 msgid "Startup" msgstr "ଆରମ୍ଭ" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "ଭୂଲମ୍ବ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "କେବଳ ଯନ୍ତ୍ର ନାମକୁ ତାଲିକାଭୁକ୍ତ କରନ୍ତୁ" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus ସହିତ ସଂଯୋଗ ସ୍ଥାପନ କରିପାରିବେ ନାହିଁ।\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "ଭାଷା: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "କୋଣସି ଯନ୍ତ୍ର ସେଟ ହୋଇନାହିଁ।\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "ସର୍ବସାଧାରଣ ଯନ୍ତ୍ର ସେଟ କରିବାରେ ବିଫଳ।\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "ସର୍ବସାଧାରଣ ଯନ୍ତ୍ର ପାଇବାରେ ବିଫଳ।\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "ତନ୍ତ୍ର ପଞ୍ଜିକରଣ କ୍ୟାଶେକୁ ପଢ଼ନ୍ତୁ।" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "ପଞ୍ଜିକରଣ କ୍ୟାଶେ ଫାଇଲକୁ ପଢ଼ନ୍ତୁ।" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "ପଞ୍ଜିକରଣ କ୍ୟାଶେ ଅବୈଧ ଅଟେ।\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "ତନ୍ତ୍ର ପଞ୍ଜିକରଣ କ୍ୟାଶେକୁ ଲେଖନ୍ତୁ।" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "ପଞ୍ଜିକରଣ କ୍ୟାଶେ ଫାଇଲକୁ ଲେଖନ୍ତୁ।" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "ଯନ୍ତ୍ରକୁ ସେଟ କରନ୍ତୁ କିମ୍ବା ଆଣନ୍ତୁ" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-ଡେମନରୁ ପ୍ରସ୍ଥାନ କରନ୍ତୁ" #: tools/main.vala:446 msgid "Show available engines" msgstr "ଉପଲବ୍ଧ ଯନ୍ତ୍ରଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(କାର୍ଯ୍ୟକାରୀ ହୋଇନାହିଁ)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-ଡେମନକୁ ପୁନଃପ୍ରାରମ୍ଭ କରନ୍ତୁ" #: tools/main.vala:449 msgid "Show version" msgstr "ସଂସ୍କରଣ ଦେଖାନ୍ତୁ" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "ପଞ୍ଜିକରଣ କ୍ୟାଶେର ବିଷୟବସ୍ତୁ ଦର୍ଶାନ୍ତୁ" #: tools/main.vala:451 msgid "Create registry cache" msgstr "ପଞ୍ଜିକରଣ କ୍ୟାଶେ ସୃଷ୍ଟିକରନ୍ତୁ" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-ଡେମନର D-Bus ଠିକଣାକୁ ମୁଦ୍ରଣ କରନ୍ତୁ" #: tools/main.vala:453 #, fuzzy msgid "Show the configuration values" msgstr "ଏହି ସୂଚନାକୁ ଦର୍ଶାନ୍ତୁ" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "ଏହି ସୂଚନାକୁ ଦର୍ଶାନ୍ତୁ" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "ବ୍ୟବହାର: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "ଆଦେଶଗୁଡିକ:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s ଟି ଗୋଟିଏ ଅଜଣା ନିର୍ଦ୍ଦେଶ!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "ଅନ୍ୟାନ୍ୟ" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "ବନ୍ଦ କରନ୍ତୁ (_C)" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "ବର୍ଣ୍ଣନା:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "IBus ଅଦ୍ୟତନ" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus ହେଉଛି Linux/Unix ପାଇଁ ଗୋଟିଏ ବୁଦ୍ଧିମାନ ନିବେଶ ପରିପଥ।" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "ମନୋଜ କୁମାର ଗିରି " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "ପସନ୍ଦ" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "ପୁନଃଚାଳନ" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "ବିଦାୟ ନିଅନ୍ତୁ" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = ଇଚ୍ଛାମୁତାବକ" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Super+space ଟି ବର୍ତ୍ତମାନ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ହଟକି ଅଟେ।" ibus-1.5.22/po/ur.po0000644000000000000000000025040313623751602011047 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-12 07:40+0000\n" "Last-Translator: fujiwara \n" "Language-Team: Urdu \n" "Language: ur\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "" #: 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 "" #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "" #: setup/setup.ui:14 msgid "Vertical" msgstr "" #: setup/setup.ui:25 msgid "Top left corner" msgstr "" #: setup/setup.ui:28 msgid "Top right corner" msgstr "" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "" #: setup/setup.ui:37 msgid "Custom" msgstr "" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "" #: setup/setup.ui:238 msgid "Enable:" msgstr "" #: setup/setup.ui:291 msgid "Disable:" msgstr "" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "" #: setup/setup.ui:579 msgid "General" msgstr "" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "" #: setup/setup.ui:754 msgid "_Preferences" msgstr "" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "" #: setup/setup.ui:1298 msgid "Advanced" msgstr "" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "" #: setup/setup.ui:1358 msgid "Startup" msgstr "" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:RTL" ibus-1.5.22/po/te.gmo0000644000000000000000000006145713623751604011210 000000000000004L     # 1Hboq<  ": RH] # 4 =IN(a(@DXk 9 ".3b02c  '? X!f @C6Pcv9)^0[ .%&.UZq? #J7( '991s2-6&M@t'"3 IV8jO'Qm@D\D<.#-R4/C `  '   > !A! \!h!q! !!######## ### # #$$+$*%$%&- &gN&/&>&"%'H''))^*w**"*)*,*F++)r++l+M!,o,",h,J-b-Gt--!--G.Y../i00B1D2E2%_2022h3b~31341&4vX44lx6Q6+78c8g8-878586!9X9;g9T99:(::S;B<7J<><n< 0=m:==>% ?p1?>??Nb@B@V@%KA;qAGAXANBY C3gC-C9CDDD)ETnE]EG!FeiFNFGGkHVHaEIIT7JwJKNKLDLgL/PM:MhM$NNiOPOQdQRSBTTyUv VV1WLWDjWjWX)XDX3YEYlYkZ`[Zo[#[[J\[L\n\a2a&Ja qaaaaa)ab=b LbXbDgbbcp{C~fB}*X /ntZ7TbQ%@ SFOgV)`w=?6jsd_Au 3+h\$ imI]M&Dk"zlErx:1N8-J(^|HGRW;[L4y!K Yqa5eP0,2vU9<>#'o.%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.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.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Latin layouts which have no ASCIIList engine name onlyModifiers:More…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.Saved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.Usage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2018-02-20 04:23-0500 Last-Translator: Copied by Zanata Language-Team: Telugu Language: te MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 3.9.6 %s తెలియని ఆదేశం! (అమలు చేయలేదు)...ఖతి మరియు శైలిసార్వత్రిక ఇన్‌పుట్ పద్ధతి అమరికలుకీబోర్డు నమూనాకీబోర్డు అడ్డదార్లుప్రారంభముఐబస్ తెలివైన ఇన్‌పుట్ బస్ నివాసపుట: https://github.com/ibus/ibus/wiki పై జాబితాలోని ఇన్పుట్ పద్దతిని కీబోర్డ్ షార్ట్‌కట్ కీలతో గాని లేదా పానల్ ఐకాన్ నొక్కిగాని ఎంపికచేసి, ఏక్టివ్ ఇన్పుట్ పద్దతిని దానికి మార్చవచ్చు.గురించిఎంచుకున్న ఇన్‌పుట్ పద్ధతిని చేతనమైన ఇన్‌పుట్ పద్ధతులలోనికి జతచేయిఅధునాతనంఎల్లప్పుడుమూలకర్త: %s స్వయంగా దాగుక్రింది ఎడమ మూలక్రింది కుడి మూలఐబస్‌కు అనుసంధానం కాలేదు. సభ్యుల దృక్పథం:ఆదేశాలు: నకలుహక్కు (c) 2007-2010 Peng Huang నకలుహక్కు (c) 2007-2010 Red Hat, Inc.రిజిస్ట్రీ క్యాచీ సృష్టించుఅనురూపితంఅనురూపిత ఖతిభాష ప్యానల్ కొరకు అనురూపించిన ఖతి పేరుDConf వుంచిన పేరు ప్రిఫిక్సెస్వివరణ: అడ్డదారి మీటలను అచేతనించుఅచేతనపరుచు:చూపించవద్దుఅయినదిఎంబెడెడ్ ప్రిఎడిట్ పాఠ్యంఅనువర్తన కిటికీ నందు ఎంబెడెడ్ ప్రిఎడిట్ పాఠ్యంఅనువర్తనము కిటికీ నందు ముందుగా సరికూర్చిన పాఠ్యాన్ని ఎంబెడెడ్ చేయిఅనువర్తనము కిటికీ నందు ఇన్‌పుట్ పద్ధతి యొక్క ముందుగా సరికూర్చిన పాఠమును ఎంబెడెడ్ చేయిఇన్‌పుట్ పద్ధతిని అప్రమేయంగా చేతనించుఅనువర్తనము ఇన్‌పుట్ ఫోకస్‌ను పొందగానే ఇన్‌పుట్ పద్ధతిని అప్రమేయంగా చేతనించుచేతనించు లేదా అచేతనించు:అడ్డదారి మీటలను చేతనించుచేతనించు:యంత్రాల క్రమంibus-daemon నిష్క్రమించుపానల్ గనుక ఎల్లప్పుడూ చూపబడుతూంటే ఇన్పుప్ కర్సర్‌ను అనుసరించుముసాధారణంసార్వత్రిక యంత్రం పొందుట విఫలమైంది. స్వయంచాలకంగా దాయిఅడ్డముఐబస్ ప్రాధాన్యతలుఐబస్ డీమన్ %d క్షణాలలో ప్రారంభం కాలేకపోయిందిఐబస్ ప్రారంభమైంది! మీరు ఐబస్ ఉపయోగించలేకుంటే, మీ $HOME/.bashrc కు కింది పంక్తులను జతచేయండి; అప్పుడు తిరిగి డెస్కుటాప్‌కు ప్రవేశించండి. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus అనునది Linux/Unix కొరకు తెలివైన ఇన్‌పుట్ బస్.true అయితే, పానల్ ఎల్లప్పుడూ చూపబడుతూన్న సందర్బంలో ఇన్పుప్ కర్సర్‌ను అనుసరించును. false అయితే, పానల్ ఒక స్థిరమైన స్థానంలో చూపబడును.ఇన్‌పుట్ పద్ధతిKbdమీట సంకేతం:కీబోర్డు నమూనా: %s కీబోర్డు అడ్డదార్లుభాషా ప్యానల్ స్థానంభాషా ప్యానల్ స్థానం:భాష: %s ASCII లేని లాటిన్ నమూనాలుయంత్రం పేరు మాత్రమే జాబితాచేయిసవరణిలు:మరిన్ని...చేతనమైన ఇన్‌పుట్ పద్ధతులలో ఎంచుకున్న ఇన్‌పుట్ పద్ధతిని క్రిందకి కదుపుచేతనమైన ఇన్‌పుట్ పద్ధతుల జాబితాలో ఎంచుకున్న ఇన్‌పుట్ పద్ధతిని పైకి కదుపుతరువాతి యంత్రానికి అడ్డదార్లుతరువాతి ఇన్‌పుట్ పద్ధతి:ఏ యంత్రము అమర్చలేదు. లుకప్ పట్టిక సర్దుబాటులుకప్ పట్టిక సర్దుబాటు. 0 = అడ్డము, 1 = నిలువుఇతరదయచేసి మీటను వత్తండి (లేదా మీటల సమ్మేళనం)దయచేసి వొక కీను వత్తండి (లేదా కీ మిశ్రమాన్ని). కీ వదిలినప్పుడు డైలాగు మూయబడుతుంది.IME స్విచర్ విండో కొరకు పాపప్ ఆలస్యం మిల్లీసెకన్లలోప్రాధాన్యతలు పేరు మార్పును ఆపుటకు DConf మీటల ప్రిఫిక్సులుముందుగా లోడైన యంత్రాలుఐబస్ ప్రారంభము నందు యంత్రాలను ముందుగా లోడుచేయిమునుపటి యంత్ర అడ్డదారి మీటలుమునుపటి ఇన్‌పుట్ పద్ధతి:ibus-daemon యొక్క D-Bus చిరునామా ముద్రించునిష్క్రమించు XKB ప్రతిమ యొక్క RGBA విలువరిజిస్ట్రీ క్యాచీ FILE చదువు.వ్యవస్థ రిజిస్ట్రీ క్యాచీ చదువు.చేతనమైన ఇన్‌పుట్ పద్ధతుల నుంచి ఎంపికచేసిన ఇన్‌పుట్ పద్ధతిని తొలగించుఆకృతీకరణ విలువలను తిరిగివుంచుముతిరిగివుంచుతోంది...పునఃప్రారంభించుibus-daemon పునఃప్రారంభించుibus ఇంజన్లు మార్చినప్పుడు .xmodmap లేదా .Xmodmap ఉంటే గనుక xmodmap నడుపుము.ఇన్పుట్ పద్ధతి జాబితా నందు భద్రపరచిన యంత్రాల క్రమంభద్రపరచిన రూపాంతరం సంఖ్యఒక ఇన్‌పుట్ పద్ధతిని ఎంచుకోండి%s కొరకు కీబోర్డు లఘువును ఎంచుకోండిఐబస్ ప్రాధాన్యతలను అమర్చుసార్వత్రిక యంత్రం అమర్చుట విఫలమైంది. యంత్రాన్ని అమర్చు లేదా పొందుభాషా పట్టీని ఎలా చూపాలి మరియు దాయాలి అనేదానికి ఐబస్ ప్రవర్తనను అమర్చండిలుకప్ పట్టికనందు కాండిడేట్ల సర్దుబాటును అమర్చండిఅన్ని అనువర్తనాలలోనూ ఇన్పుట్ పద్దతిని పంచుకొనుఅందుబాటులోని యంత్రాలను చూపించువ్యవస్థ పళ్లెము పై ప్రతీకను చూపించుఎంచుకున్న ఇన్‌పుట్ పద్ధతి యొక్క సమాచారాన్ని చూపించుఇన్‌పుట్ పద్ధతి పేరును చూపించుభాషా పట్టీపై ఇన్‌పుట్ పద్ధతి పేరును చూపించుచెక్‌బాక్సు చెక్ చేసినప్పుడు భాషా పట్టీపై ఇన్‌పుట్ పద్ధతి పేరును చూపించుప్రాపర్టీ ప్యానలును చూపించు:ఎంపికచేసిన ఇన్పుట్ పద్ధతి యొక్క అమర్పును చూపించుఆకృతీకరణ విలువలను చూపుమురిజిస్ట్రీ క్యాచీ యొక్క కాంటెంట్ చూపుఈ సమాచారం చూపించురూపాంతరాన్ని చూపించుప్రవేశించేప్పుడు ఐబస్‌ను ప్రారంభించుఐబస్ డెమోన్ నడుచుటలేదు. మీరు ప్రారంభించాలని అనుకొనుచున్నారా?ప్రోపర్టీ పానల్ యొక్క ప్రవర్తన. 0 = చూపవద్దు, 1 = స్వయంచాలకంగా దాచివేయి, 2 = ఎల్లప్పుడూ చూపుప్రోపర్టీ పానల్ చూపుటకు మిల్లీసెకన్లుదృష్టిసారించిన తరువాత లేదా లక్షణాలు మార్చిన తరువాత ప్రోపర్టీ పానల్ చూపుటకు మిల్లీసెకన్లు.రిజిస్ట్రీ క్యాచీ చెల్లనిది. భద్రపరచిన రూపాంతరం సంఖ్య అనునది గతంలో స్థాపించిన ఐబస్ రూపాంతరానికి మరియు ప్రస్తుత ఐబస్ రూపాంతరానికి మధ్యని తేడాను పరిశీలించుటకు ఉపయోగించును.జాబితాలో ఉన్న తరువాతి ఇన్‌పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలుజాబితానందలి ముందరి ఇన్‌పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలుజాబితాలోని తరువాతి ఇన్పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలుజాబితాలోని మునుపటి ఇన్‌పుట్ పద్ధతినకు మారుటకు అడ్డదారి మీటలుఇన్‌పుట్ పద్ధతి అచేతనించుటకు అడ్డదారి మీటలుఇన్‌పుట్ పద్ధతి చేతనించుటకు అడ్డదారి మీటలుఇన్‌పుట్ పద్ధతిని చేతనించుటకు లేదా అచేతనించుటకు అడ్డదారి మీటలుపై ఎడమ మూలపై కుడి మూలఅడ్డదారి మీటలను నొక్కండిgtk_accelerator_parse కొరకు ట్రిగ్గర్ అడ్డదారి మీటలుUS నమూనా లాటిన్ నమూనాలకు కలుపబడెను. వేరియంట్‌ను విస్మరించవచ్చు.వాడుక: %s COMMAND [OPTION...] అనురూపిత ఖతిని ఉపయోగించుభాషా ప్యానల్ కొరకు అనురూపిత ఖతి పేరును ఉపయోగించుఅనురూపిత ఖతిని ఉపయోగించు:సార్వత్రిక ఇన్‌పుట్ పద్ధతిని ఉపయోగించుమునుపటి ఇన్పుట్ పద్దతికి మారుటకు అడ్డదారిని shift తో ఉపయోగించువ్యవస్థ కీబోర్డు (XKB) నమూనా ఉపయోగించువ్యవస్థ కీబోర్డు నమూనా ఉపయోగించుxmodmap ఉపయోగించునిలువురిజిస్ట్రీ క్యాచీ FILE వ్రాయి.వ్యవస్థ రిజిస్ట్రీ క్యాచీ వ్రాయి.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 విస్తృతిలో ఫ్లోటింగ్ పాయింట్ విలువ అవుతుంది.గురించి (_A)జతచేయి (_A)అనువర్తించు (_A)రద్దుచేయి (_C)మూసివేయి (_C)తొలగించు (_D)క్రింద (_D)సరే (_O)ప్రాధాన్యతలు (_P)తీసివేయి (_R)పైన (_U)default:LTRభాష: %s ఇన్పుట్ పద్దతులు మార్చుటకృష్ణబాబు కె 2009. ప్రవీణ్ యిళ్ళ 2010-14.ibus-1.5.22/po/da.gmo0000644000000000000000000012160513623751603011153 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIf*g4 h@hXhmhqh2hhhhxhsij jI*jtj zj jjj j jjjjkk &k3kDkLk)^kkkkkkkkl ll"l3l JlTlZl bl llzllll llll mmm2mEm_m)}mm mmm#n$&n$Kn$pn$n#n'n"o)oEoLo^oeojoso o=o~oQp'pq qq$6q.[q*qq qq qrr&#rJrRrHdrrr rrs s(s6=s'tss sssss t$t BtPt`t htst tt ttttttt0u1uIuQuVu,ru,uDuv v%v=v&Ov-vv v(vSv,wGw ^w!hww%w ww x xx1xEx Xxcx OyZy-_y yyyyyyyz&z ҏ.@3H |#Đؐ0 ,@Jm0̑)D Zfnv̒ Ԓ   -9O h v $ɓ ( ?L"Ux Ŕܔ%(*QS/[Օ:1l(mB)ClD<;2;n20ݙ:AIS ߚ+FW0nB /#$S.x&Μ,Z0B# /<@Sq 9f)P)z @KDY]f nx}  .!  [)JWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2019-06-22 05:37+0000 Last-Translator: scootergrisen Language-Team: Danish Language: da MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 4.6.2 "SKRIFTTYPE" for emoji-tegn i emoji-dialog"SPROG" for annoteringer i emoji-dialog. F.eks. "en"%s er ukendt kommando! (ikke implementeret)...Skrifttype og stilIndstillinger for global indtastningsmetodeTastaturlayoutTastaturgenvejeOpstartIBus Den intelligente indtastningsbus Hjemmeside: https://github.com/ibus/ibus/wiki Den aktive indtastningsmetode kan skiftes til en anden i listen ovenfor, ved at trykke på tastaturgenvejene eller ved at klikke på panelikonet.OmAktiviteterTilføj den valgte indtastningsmetode i de aktiverede indtastningsmetoderAdlamAvanceretAegæiske talAhomAlkymisymbolerAlias: %sAlfabetiske præsentationsformerAltidAnatoliske hieroglyfferOldgræsk musiknotationOldgræske talOldtidssymbolerDyr og naturAnnoteringer: %sArabiskArabisk udvidet-AArabiske matematiske alfabetiske symbolerArabiske præsentationsformer-AArabiske præsentationsformer-BArabisk supplementArmenskPileForfatter: %s Skjul automatiskAvestiskBalinesiskBamumBamum-supplementGrundlæggende latinskBassa VahBatakBengaliBhaiksukiBlokelementerBopomofoBopomofo udvidetNederste venstre hjørneNederste højre hjørneRammetegningBramiskBraille-mønstreTilbage til valg af emojiBuginesiskBuhidByzantiske musiske symbolerCJK-kompatibilitetCJK-kombatibilitetsformerCJK-kompatibilitetsideograferSupplerende CJK-kompatibilitetsideograferCJK-radikaler-supplementCJK-stregerCJK-symboler og punktueringerCJK-forenede ideograferCJK-forenede ideografer-udvidelse AForenede CJK-ideografer, udvidelse BForenede CJK-ideografer, udvidelse CForenede CJK-ideografer, udvidelse DForenede CJK-ideografer, udvidelse ECJK-forenede ideografer-udvidelse FKan ikke oprette forbindelse til IBus. Annulleret for at vælge en emoji.Orientering for kandidater:KariskKaukasisk AlbanskChakmaChamCherokeeCherokee-supplementSkaksymbolerVælg en betingelse til delvist at matche emoji-annonteringerVælg et standardsprog af emoji-ordbøger i emoji-dialogen. Værdien $lang anvendes på /usr/share/ibus/dicts/emoji-$lang.dictVælg en af følgende betingelser for at matche emoji-annoteringer delvist: 0 == Præfiks match, 1 == Suffiks match, 2 == Indeholdende matchKlik for at vise en advarselsmeddelelseLukKodepunkt: %sKombinerende diakritiske tegnKombinerede diakritiske tegn udvidetSupplement til kombination af diakritiske tegnKombinerende diakritiske tegn til symbolerKombinerende halvtegnKommandoer: Almindelige indiske talformerKomponentIndeholdende matchKontrolbillederKopierede en emoji til dit skrivebord.KoptiskKoptisk epact talOphavsret (c) 2007-2010 Peng Huang Ophavsret (c) 2007-2010 Red Hat, Inc.Kinesisk stregtalsystemOpret registreringsmellemlagerKileskriftKileskriftstal og -tegnsætningValutasymbolerTilpassetTilpasset skrifttypeTilpasset skrifttypenavn for emoji-tegn i emoji-dialogTilpasset skrifttypenavn til sprogpanelCypriske stavelserKyrilliskKyrillisk udvidet-AKyrillisk udvidet-BKyrillisk udvidet-CKyrillisk supplementDConf bevar navnepræfiksStandardsprog for emojiordbogBeskrivelse: Beskrivelse: %sDeseretDevanagariDevanagari udvidetTingesterDeaktivér genvejstasterDeaktivér:Vis ikkeDograDomino-brikkerFærdigDuployanTidlig dynastisk kileskriftÆgyptiske hieroglyffer formatteringskontroltegnÆgyptiske hieroglyfferElbasanElymIndbyg forudredigeret tekstIndlejr forudredigeret tekst i programvindueIndlejr forudredigeret tekst i programvindueIndlejr forudredigeret tekst for indtastningsmetode i programvinduetEmojiValg af emojiEmoji-annoteringssprog:Emoji-annotering:Emoji-annoteringer kan matches delvistEmoji-genvejstaster for gtk_accelerator_parseEmotikonerAktivér indtastningsmetode som standardAktivér indtastningsmetode som standard når programmet modtager indtastningsfokusAktivér eller deaktivér:Aktivér genvejstasterAktivér:Indrammet alfanumerisk supplementIndrammede alfanumeriskeIndrammede CJK-bogstaver og -månederIndrammet ideografisk supplementRækkefølge for motorerEthiopiskEtiopisk udvidetEtiopisk udvidet-AEtiopisk supplementForlad ibus-daemonSKRIFTTYPEKunne ikke hente det nuværende tekstprogram. Giv venligst fokus til dit program igen. Tryk f.eks. på Esc-tasten flere gange for at slippe fri fra emoji-indtastningstilstanden, klik på dit skrivebord og klik på tekstprogrammet igen.FavoritterFlagFølg inputmarkøren hvis panelet altid visesMad og drikkeGenereltGenerel tegnsætningGeometriske formerGeometriske former udvidetGeorgiskGeorgisk udvidetGeorgisk supplementHentning af global motor mislykkedes. GlagolitiskGlagolitisk supplementGotiskGranthaGræsk udvidetGræsk og koptiskGujaratiGunjala gondiGurmukhiHalvbredde og fuldbredde formerHangul kompatibilitets-JamoHangul JamoHangul Jamo udvidet-AHangul Jamo udvidet-BHangul-stavelserHanifi rohingyaHanunooHar emoji-varianterHatranHebraiskSkjul automatiskHøje surrogater til privat brugHøje surrogaterHiraganaVandretIBus-panelIBus-præferencerIBus-dæmon kunne ikke startes på %d sekunderIBus er blevet startet! Hvis du ikke kan bruge IBus, så tilføj følgende linjer til din $HOME/.bashrc; og så log ind på dit skrivebord igen. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus er en intelligent indtastningsbus til Linux/Unix.IPA-udvidelserIdeografiske beskrivelsestegnIdeografiske symboler og tegnHvorvidt emoji-annonteringer kan matches med en delvis streng i stedet for det præcise matchHvis sand, følger panelet inputmarkøren hvis panelet altid vises. Hvis falsk, vises panelet på en fastsat placering.FyrstetidsaramæiskIndisk siyaq talIndtastningsmetodeInskriptions-pahlaviInskriptions-parthiskJavanesiskKaithiKana udvidet-AKana-supplementKanbunKangxi-radikalerKannadaKatakanaKatakana-fonetiske udvidelserKayah LiKbdNøglekode:Tastaturlayout: %s TastaturgenvejeKharoshthiKhmerKhmer-symbolerKhojkiKhudawadiSPROGPlacering for sprogpanelPlacering af sprogpanel:Sprog: %s LaoLatisk ekstra udvidetLatinsk udvidet-ALatinsk udvidet-BLatinsk udvidet-CLatinsk udvidet-DLatinsk udvidet-ELatinske layout som ikke har nogen ASCIILatin-1 supplementLepchaBogstavlignende symbolerLimbuLinear ALinear B-ideogrammerLinear B-stavelserVis kun motornavnLisuIndlæs unicode-dataene ved opstartIndlæs unicode-dataene ved opstart hvis sand. Det behøves omkring 15 MB hukommelse for at indlæse dataene. Indlæs unicode-dataene når emoji-dialogen åbnes ved begyndelsen hvis falsk. Unicode-dataene indlæses altid efter emoji-dataene indlæses selv hvis sand.Indlæs emoji-dataene ved opstartIndlæs emoji-dataene ved opstart hvis sand. Det behøves omkring 10 MB hukommelse for at indlæse dataene. Indlæs emoji-dataene når emoji-dialogen åbnes ved begyndelsen hvis falsk.Indlæser en unicode-ordbog:Lave surrogaterLykiskLydiskMahajaniMahjong-brikkerMakasarMalayalamMandæiskManikæiskMarchenMasaram GondiMatch emoji-annoteringer delvist med flere end det angivne antal tegn i stedet for det præcise match.Match emoji-annoteringer delvist med følgende betingelse og flere end antallet af tegn:Match emoji-annoteringer med den angivne længdeMatch med betingelsen af det angive heltalMatch med længen af det angive heltalMatematiske alfanumeriske symbolerMatematiske operatorerMaya talsystemMedefaidrinMeetei MayekMeetei Mayek udvidelserMende KikakuiMenuMeroitisk skriftMeroitiske hieroglyfferMiaoDiverse matematiske symboler-ADiverse matematiske symboler-BDiverse symbolerDiverse symboler og pileDiverse symboler og piktogrammerDiverse tekniskModiToneændringstegnKombinationstaster:MongolskMongolsk supplementMere…Flyt den valgte indtastningsmetode ned i listen over aktiverede indtastningsmetoderFlyt den valgte indtastningsmetode op i listen over aktiverede indtastningsmetoderMroMultaniMusiske symbolerMyanmarMyanmar udvidet-AMyanmar udvidet-BNKoNabatæiskNavn: %sNandNy Tai LueNewaGenvejstaster for næste motorNæste indtastningsmetode:Ingen motor er sat. IngenTalformerNushuNyiakeng Puachue HmongObjekterOghamOl ChikiOldungarskOlditaliskOldnordarabiskOldpermiskOldpersiskOldsogdianOldsydarabiskOldtyrkiskÅbn valg af unicodeOptisk tegngenkendelseOrientering af opslagstabelOrientering af opslagstabel. 0 = Horisontal, 1 = VertikalOriyaPyntedingbatterOsageOsmanyaAndreAndreOttomanske siyaq talPage DownPage UpPahawh HmongPalmyriskPau Cin HauPersoner og kroppePhags-paFestosdiskossenFønikiskFonetiske udvidelserSupplement til fonetiske udvidelserSpillekortTryk venligst på en tast (eller en tastekombination)Tryk venligst på en tast (eller en tastekombination). Dialogen bliver lukket, når tasten slippes.Pop op-forsinkelse i millisekunder for IME-skifter-vinduePræferencerPræfiks matchPræfiks af DConf-taster til stop af navnekonverteringForindlæs motorerForindlæs motorer under opstarten af IBusGenvejstaster for forrige motorForrige indtastningsmetode:Print D-Bus-adressen af ibus-daemonOmråde til privat brugPsalter PahlaviAfslutRGBA-værdi for XKB-ikonLæs den registreringsmellemlageret FIL.Læs systemets registreringsmellemlager.RejangFjern den valgte indtastningsmetode fra de aktiverede indtastningsmetoderNulstil konfigurationsværdierneNulstiller…GenstartGenstart ibus-daemonRumi numeriske symbolerKør xmodmap hvis .xmodmap eller .Xmodmap findes når der skiftes ibus-motorer.RunerSamaritanskSaurashtraGem emoji i dialog til udklipsholder Gemte rækkefølge på motorer i indtastningsmetodelisteGemt versionsnummerVælg et sprogVælg en indtastningsmetodeVælg tastaturgenveje til %sAngiv IBus-præferencerSæt en skrifttype af unicode-kandidater i emoji-dialogenSæt et sprog af emoji-kandidater i emoji-dialogenSætning af global motor mislykkedes. Sæt eller hent motorSæt pop op-forsinkelse millisekunder som IME-skifter-vindue skal vises. Standarden er 400. 0 = Vis vinduet med det samme. 0 < Forsinkelse millisekunder. 0 > Vis ikke vinduet og skift til forrige/næste motorer.Angiv opførsel for hvordan IBus skal vises eller sprogpaneletAngiv orientering af kandidater i opslagstabelSharadaBrug den samme indtastningsmetode i alle programmerShavianskForkortede formatteringskontroltegnVis tilgængelige motorerVis emoji-varianterVis ikon i systembakkeVis information om den valgte indtastningsmetodeVis navn på indtastningsmetodeVis navn på indtastningsmetode i sprogpanelVis indtastningsmetodens navn i sprogpanelet når tjek-boksen er vinget afVis egenskabspanel:Vis opsætning for den valgte indtastningsmetodeVis konfigurationsværdierneVis indholdet af registreringsmellemlagerVis denne informationVis versionSiddhamSinhalaSinhala-arkaiske talSmå former-varianterSmå kana udvidelseSmileyer og emotikonerSogdianSora SompengSoyomboMellemrumsændringerSpecialtegnStart ibus ved loginSuffiks matchSundanesiskSudanesisk supplementHævede og sænkede tegnEkstra pile-AEkstra pile-BEkstra pile-CEkstra matematiske operatorerSupplerende tegnsætningSupplerende symboler og piktogrammerEkstra privat brug-område-AEkstra privat brug-område-BSutton tegnsprogskriftSyloti NagriSymbolerSymboler og piktogrammer udvidet-ASyriskSyrisk supplementTagalogTagbanwaMærkaterTai LeTai ThamTai VietTai Xuan Jing-symbolerTakriTamilskTamilsk supplementTangutTangut-komponenterTeluguThaanaThaiIBus-dæmonen kører. Vil du starte den?Opførsel for egenskabspanelet. 0 = Vis ikke, 1 = Skjul automatisk, 2 = Vis altidMillisekunder som egenskabspanelet skal vises iMillisekunderne som egenskabspanelet skal vises i efter fokus-ind eller egenskaber ændres.Millisekunder som panelikonet for en egenskab skal vises iMillisekunder som panelikonet vises fra motorikonet til et egenskabsikon når motorer skiftes hvis egenskaben er angivet af værdien af icon-prop-key i IBusEngineDesc. Hvis værdien er 0, er der ingen forsinkelsestid og egenskabsikonet vises med det samme.Registreringsmellemlageret er ugyldigt. Det gemte versionnummer vil blive brugt til at tjekke forskellen mellem versionen af den tidligere installerede ibus og en af den nuværende ibus.Genvejstaster for skift til den næste indtastningsmetode i listenGenvejstaster for skift til den forrige indtastningsmetode i listenGenvejstasterne for at skrive til næste indtastningsmetode i listenGenvejstasterne for at skifte til forrige indtastningsmetodeGenvejstasterne til at slå Unicode-skrivning til eller fraGenvejstasterne til at slå emoji-indtastning til eller fraGenvejstasterne for slukning af indtastningsmetodeGenvejstasterne for at tænde indtastningsmetodeGenvejstasterne for at tænde og slukke indtastningsmetodeGenvejstasterne til at aktivere konvertering af unicode-kodepunktGenvejstasterne til at aktivere samtaler med emoji-annoteringer eller unicode-navneTibetanskTifinaghTirhutaØverste venstre hjørneØverste højre hjørneTransport- og kortsymbolerRejser og stederUdløs tastaturgenvejeUdløs tastaturgenveje for gtk_accelerator_parseUS-layout tilføjes til de Latinske layouts. Variant kan udelades.UgaritiskValg af unicodeUnicode-kodepunkt:Unicode-skrifttype:Unicode-genvejstaster til gtk_accelerator_parseForenede canadisk-indiansk stavelserForenede canadisk-indianske stavelser, udvidetAnvendelse: %s KOMMANDO [TILVALG...] Brug tilpasset skrifttypeBrug tilpasset skrifttypenavn til sprogpanelBrug tilpasset skrifttype:Brug motorskema-stier i stedet for ibus-kerne, hvilket kan være kommaseparerede værdier.Brug global indtastningsmetodeBrug genvej med skift for at skifte til forrige indtastningsmetodeBrug systemets tastaturlayout (XKB)Brug systemets tastaturlayoutBrug xmodmapVaiVariationsvælgereVariationsvælgere-supplementVediske udvidelserLodretVertikale formerWanchoWarang CitiHvorvidt emoji-annonteringer kan matches delvist eller ejHvorvidt emoji-annoteringer kan matches med en delvis streng i stedet for det præcise match eller ej.Skriv den registreringsmellemlageret FIL.Skriv systemets registreringsmellemlager.XKB-ikon viser layoutstrengen og strengen gengives med RGBA-værdien. RGBA-værdien kan være 1. Et farvenavn fra X11, 2. En heksadecimalværdi i formatet '#rrggbb' hvor 'r', 'g' og 'b' er heksadecimale cifre af den røde, grønne og blå, 3. En RGB-farve i formatet 'rgb(r,g,b)' eller 4. En RGBA-farve i formatet 'rgba(r,g,b,a)' hvor 'r', 'g', og 'b' enten er heltal fra 0 til 255 eller procentværdier fra 0% til 100%, og 'a' hvis det er en kommatalværdi fra 0 til 1 af alfaen.Yi-radikalerYi-stavelserYijing-hexagramsymbolerDu kan tildele en annotering til en favorit-emoji i denne liste.Du kan vise favorit emojierne i emojiliste hvis denne liste har nogen tegn.Zanabazar kvadratisk_Om_Tilføj_Anvend_Annuller_Luk_Slet_Ned_OK_Præferencer_Fjern_Opdefault:LTRfavorit emoji-annonteringsliste i emoji-dialogfavorit emojiliste i emoji-dialogsprog: %s skifter indtastningsmetoderKris Thomsen Dansk-gruppen Mere info: http://www.dansk-gruppen.dkibus-1.5.22/po/et.gmo0000644000000000000000000000457713623751603011207 00000000000000+t;   #6K S^ o|  &6GXahmt|  t /; AL_ r}    * DOgow   % + 4 ; B K Q W c l s !)+   ( *& $#'%"AboutAlwaysAuthor: %s Bottom left cornerBottom right cornerCustomCustom fontDescription: Disable:Enable or disable:Enable shortcut keysEnable:HorizontalIBus PreferencesInput MethodKbdKeyboard layout: %s Language: %s Next input method:PreferencesPrevious input method:QuitRestartSelect an input methodSet IBus PreferencesStart ibus on loginTop left cornerTop right cornerUse custom font:Vertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:46+0000 Last-Translator: mihkel Language-Team: Estonian Language: et MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); ProgrammistAlatiAutor: %s Alumine vasak nurkAlumine parem nurkKohandatudKohandatud fontKirjeldus: Keela:Võimalda või keela:Võimalda kiirklahvidVõimalda:HorisontaalneIBus eelistusedSisestusmeetodKbdKlaviatuuri asetus: %s Keel: %s Järgmine sisestusmeetod.EelistusedEelmine sisestusmeetod:LõpetaRestartVali sisestusmeetodMäära IBus eelistusedKäivita ibus sisselogiminselÜlemine vasak nurkÜlemine parem nurkKasuta kohandatud fonti:Vertikaalne_Programmist lähemaltL_isa_Rakenda_LoobuSul_geKu_stuta_Alla_Olgu_Eelistused_Eemalda_Ülesdefault:LTRibus-1.5.22/po/ar.po0000644000000000000000000025331013623751577011036 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:45+0000\n" "Last-Translator: Muayyad Alsadi \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "استعمال خط مخصص" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "استخدم خط مخصص في لوحة اللغة" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "اسم الخط المخصص للوحة اللغة" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "اسم الخط المخصص للوحة اللغة" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "أخرى" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "اختر طريقة الإدخال" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "أل_غِ" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_نعم" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "حول" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "أ_غلق" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "اختر طريقة الإدخال" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "أ_ضف" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "تفضيلات IBus" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "" #: 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "اختر الاختصار ل %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "" #: setup/setup.ui:14 msgid "Vertical" msgstr "" #: setup/setup.ui:25 msgid "Top left corner" msgstr "" #: setup/setup.ui:28 msgid "Top right corner" msgstr "" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "" #: setup/setup.ui:37 msgid "Custom" msgstr "" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "طريقة الإدخال التالية" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "طريقة الإدخال السابقة" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "تفعيّل أو تثبيط:" #: setup/setup.ui:238 msgid "Enable:" msgstr "" #: setup/setup.ui:291 msgid "Disable:" msgstr "" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "اختصارات لوحة المفاتيح" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "الاتجاهات المرشحة:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "الخط والتنسيق" #: setup/setup.ui:579 msgid "General" msgstr "عام" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "ا_حذِف" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "ف_وق" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "أ_سفل" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "_عنْ" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_التفضيلات" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "اختر طريقة الإدخال" #: setup/setup.ui:1298 msgid "Advanced" msgstr "" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "بدء ibus عند الولوج" #: setup/setup.ui:1358 msgid "Startup" msgstr "البدء" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "أخرى" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "أ_غلق" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "تفضيلات IBus" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "نظام IBus هو ناقل إدخال ذكي لنظام لينكس ويونكس." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Muayyad Alsadi " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "التفضيلات" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "إعادة تشغيل" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "أنهِ" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:RTL" ibus-1.5.22/po/ta.po0000644000000000000000000031631013623751602011025 00000000000000# Tamil translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2018 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # deadrat , 2017. #zanata # fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2018-02-20 04:23-0500\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Tamil \n" "Language: ta\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 3.9.6\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "முன்ஏற்றல் இயந்திரங்கள்" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus துவங்கும் போது முன்னேற்றப்பட்ட எந்திரங்கள் " #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "எஞ்சின்கள் வரிசை" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "உள்ளீடு முறை பட்டியலில் எஞ்சின்கள் வரிசை சேமிக்கப்பட்டது" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME மாற்ற சாளரத்திற்கான பாப்-அப் தாமத மில்லிசெகன்ட்" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "சேமிக்கப்பட்ட பதிப்பு எண்" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "ASCII கொண்டில்லாத இலத்தீன் லேயவுட்டுகள்" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" "அமெரிக்க லேயவுட் இலத்தீன் லேயவுட்டுகளுடன் இணைக்கப்படுகிறது. இதன் மாற்று வகையை " "புறக்கணிக்கலாம்." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmap ஐப் பயன்படுத்து" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "ibus எஞ்சின்கள் மாற்றப்படும் போது .xmodmap அல்லது .Xmodmap வெளியேறினால் xmodmap ஐ " "இயக்கு." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "கணினி விசைப்பலகை அமைப்பை பயன்படுத்து" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "கணினி விசைப்பலகை (XKB) அமைப்பை பயன்படுத்து" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "உட்பொதியப்பட்ட Preedit உரை" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "பயன்பாடு சாளரத்தில் உட்பொதியப்பட்ட Preedit உரை" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "பொது உள்ளீடு முறையை பயன்படுத்து" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "அனைத்து பயன்பாடுகளிலும் சில உள்ளீடு முறையை பகிரவும்" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "முன்னிருப்பாக உள்ளீடு முறையை செயல்படுத்து" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "பயன்பாடு உள்ளீடுக்கு உட்படும்போது முன்னிருப்பாக உள்ளீடு முறையை செயல்படுத்து" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf ஆனது பெயர் முன்னொட்டுகளைப் பாதுகாத்து வைக்கிறது" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "பெயர் மரபை நிறுத்த DConf விசைகளின் முன்னொட்டுகள்" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "குறுக்குவிசைகளை செயல்படுத்து" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "உள்ளீடு முறைமையை துவக்கவும் நிறுத்தவும் குறுக்குவிசைகள்" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse க்கான குறுக்கு விசைகளை இயக்கு" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "குறுக்குவிசைக்களை செயல்படுத்து" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "உள்ளீடு முறையை இயக்கும் குறுக்குவிசைகள்" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "குறுக்குவிசைகளை செயல்நீக்கு" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "உள்ளீடு முறையை நிறுத்தும் குறுக்குவிசைகள்" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "அடுத்த இயந்திர குறுக்குவிசை" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "பட்டியலில் அடுத்த உள்ளீடு முறைக்கு மாற்றுவதற்கான குறுக்குவழி விசைகள்" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "முந்தைய இயந்திர குறுக்குவிசைகள்" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "முந்தைய உள்ளீடு முறைக்கு மாற்றுவதற்கான குறுக்குவழி விசைகள்" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "தானாக மறை" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "பண்புகள் பலகத்தின் நடத்தை. 0 = காண்பிக்க வேண்டாம், 1 = தானாக மறை, 2 = எப்போதும் காண்பி" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "மொழி பேனல் இடம்" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "பலகம் எப்போதும் காண்பிக்கப்பட்டால் உள்ளீட்டுச் சுட்டியைப் பின் தொடரவும்" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "பண்புகள் பலகத்தை காட்ட வேண்டிய மில்லிசெக்கன்ட்" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "பண்புகள் பலகத்தில் கவனம் செலுத்திய பிறகு அல்லது பண்புகளை மாற்றிய பிறகு பலகத்தைக் காட்ட " "வேண்டிய மில்லிசெக்கன்ட்." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "காணும் அட்டவணையின் திசை" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "காணும் அட்டவணையின் திசை. 0 = கிடைமட்டம், 1 = செங்குத்து" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "கணினி தட்டில் சின்னத்தை காட்டு" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "உள்ளீடு முறையின் பெயரை காட்டு" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "மொழி பட்டையில் உள்ளீடு முறையின் பெயரை காட்டு" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB சின்னத்தின் RGBA மதிப்பு" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "தனிப்பயன் எழுத்துருவை பயன்படுத்து" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "மொழி பலகத்தில் தனிபயன் எழுத்துரு பெயர்" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "தனிப்பயன் எழுத்துரு" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "மொழி பலகத்துக்கான தனிப்பயன் எழுத்துரு பெயர்" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse க்கான குறுக்கு விசைகளை இயக்கு" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "உள்ளீடு முறைமையை துவக்கவும் நிறுத்தவும் குறுக்குவிசைகள்" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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 Peng Huang\n" "பதிப்புரிமை (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "வேறு" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "ரத்து (_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "சரி (_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "மேலும்…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "பற்றி" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "மூடு (_C)" #: 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 "ஒரு உள்ளீடு முறையை தேர்ந்தெடு" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "சேர் (_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "உள்ளீடு முறை" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus விருப்பங்கள்" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "முந்தைய உள்ளீட்டு முறைக்கு மாற குறுக்குவழியை ஷிஃப்ட் விசையுடன் பயன்படுத்தவும்" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus டெமான் இயங்கவில்லை. அதைத் தொடங்க வேண்டுமா?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "%d வினாடிகளில் IBus டெமானைத் தொடக்க முடியவில்லை" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%sக்கான விசைப்பலகை குறுக்குவழியை தேர்ந்தெடு" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "உள்ளீட்டு முறைகளை மாற்றுதல்" #: setup/setup.ui:11 msgid "Horizontal" msgstr "கிடைமட்டம்" #: setup/setup.ui:14 msgid "Vertical" msgstr "செங்குத்து" #: setup/setup.ui:25 msgid "Top left corner" msgstr "மேல் இடது மூலை" #: setup/setup.ui:28 msgid "Top right corner" msgstr "மேல் வலது மூலை" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "கீழ் இடது மூலை" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "கீழ் வலது மூலை" #: setup/setup.ui:37 msgid "Custom" msgstr "தனிப்பயன்" #: setup/setup.ui:48 msgid "Do not show" msgstr "காண்பிக்க வேண்டாம்" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "தானாக மறை" #: setup/setup.ui:54 msgid "Always" msgstr "எப்போதும்" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "பட்டியலில் அடுத்த உள்ளீடு முறைக்கு மாறுவதற்கான குறுக்குவழி விசைகள்" #: setup/setup.ui:115 msgid "Next input method:" msgstr "அடுத்த உள்ளீடு முறை:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "பட்டியலில் முந்தைய உள்ளீடு முறைக்கு மாறுவதற்கான குறுக்குவழி விசைகள்" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "முந்தைய உள்ளீடு முறை:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "செயல்படுத்து அல்லது முடக்கு:" #: setup/setup.ui:238 msgid "Enable:" msgstr "செயல்படுத்து:" #: setup/setup.ui:291 msgid "Disable:" msgstr "முடக்கு:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "விசைப்பலகை குறுக்குவழிகள்" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "காணும் அட்டவணையில் நபர்களின் திசையமைப்பை அமை" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "கேண்டிடேட் சார்ந்து:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "மொழி பட்டையை எவ்வாறு காட்ட அல்லது மறைக்க வேண்டும் என ibus பண்பினை அமை" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "பண்புகள் பலகத்தைக் காட்டு:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "மொழி பேனல் படம்:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "சோதனை பெட்டியை சோதிக்கும் போது உள்ளீடு முறை பெயரை மொழி பட்டையில் காட்டு " #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "பயன்பாடு சாளரத்தில் உட்பொதியப்பட்ட preedit உரை" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "பயன்பாட்டு சாளரத்தில் preedit உரையின் உள்ளீடு முறையை உட்பொதியவும்" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "தனிப்பயன் எழுத்துருவை பயன்படுத்து:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "எழுத்துரு மற்றும் தோற்றம்" #: setup/setup.ui:579 msgid "General" msgstr "பொது" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "செயல்படுத்தப்பட்ட உள்ளீடு முறைகளில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை சேர்" #: setup/setup.ui:682 msgid "_Remove" msgstr "நீக்கு (_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "செயல்படுத்தப்பட்ட உள்ளீடு முறைகளிலிருந்து தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை நீக்கு" #: setup/setup.ui:700 msgid "_Up" msgstr "மேலே (_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "செயல்படுத்தப்பட்ட உள்ளீடு முறைகள் பட்டியலில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை மேலே நகர்த்து" #: setup/setup.ui:718 msgid "_Down" msgstr "கீழே (_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "செயல்படுத்தப்பட்ட உள்ளீடு முறைகளில் தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையை கீழே நகர்த்து" #: setup/setup.ui:736 msgid "_About" msgstr "பற்றி (_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "தேர்ந்தெடுக்கப்பட்ட உள்ளீடு முறையின் தகவலை காட்டு" #: setup/setup.ui:754 msgid "_Preferences" msgstr "முன்னுரிமைகள் (_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "தேர்ந்தெடுத்த உள்ளிட்டு முறையின் அமைப்பை காட்டு" #: setup/setup.ui:812 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 "" "மேலே உள்ள பட்டியலில் விசைப்பலகைக் குறுக்குவழி விசைகளை அழுத்துவதன் மூலம் " "அல்லது பலகம் சின்னத்தை சொடுக்குவதன் மூலம், செயலில் உள்ள உள்ளீட்டு முறையை தேர்ந்தெடுத்துள்ள " "ஒன்றிலிருந்து வேறொன்றுக்கு மாற்ற முடியும்." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "உள்ளீடு முறைமையை துவக்கவும் நிறுத்தவும் குறுக்குவிசைகள்" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "தனிப்பயன் எழுத்துருவை பயன்படுத்து:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "விசைப்பலகை அமைப்பு" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "ஒரு உள்ளீடு முறையை தேர்ந்தெடு" #: setup/setup.ui:1298 msgid "Advanced" msgstr "கூடுதல்" #: setup/setup.ui:1317 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" "முதன்மை பக்கம்: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "புகுபதிவில் ibusஐ துவக்கு" #: setup/setup.ui:1358 msgid "Startup" msgstr "துவக்கம்" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "எஞ்சின் பெயரை மட்டும் பட்டியலிடு" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus உடன் இணைக்க முடியாது.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "மொழி: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "எஞ்சின் அமைக்கப்படவில்லை.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "முழுமைக்குமான எஞ்சினை அமைத்தல் தோல்வி.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "முழுமைக்குமான எஞ்சினை பெறுதல் தோல்வி.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "கணினி பதிவக தேக்ககத்தை வாசி." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "பதிவக தேக்கக FILE ஐ வாசி." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "பதிவக தேக்ககம் செல்லுபடியாகாதது.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "கணினி பதிவக தேக்ககத்தில் எழுது." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "பதிவக தேக்கக FILE இல் எழுது." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "மீட்டமைக்கிறது…" #: tools/main.vala:399 msgid "Done" msgstr "முடிந்தது" #: tools/main.vala:444 msgid "Set or get engine" msgstr "எஞ்சினை அமை அல்லது பெறு" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon இலிருந்து வெளியேறு" #: tools/main.vala:446 msgid "Show available engines" msgstr "இருக்கும் எஞ்சின்களைக் காட்டு" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(செயல்படுத்தப்படவில்லை)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon ஐ மறுதுவக்கு" #: tools/main.vala:449 msgid "Show version" msgstr "பதிப்பைக் காட்டு" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "பதிவக தேக்கக உள்ளடக்கத்தைக் காண்பி" #: tools/main.vala:451 msgid "Create registry cache" msgstr "பதிவக தேக்ககத்தை உருவாக்கு" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon இன் D-Bus முகவரியை அச்சிடு" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "அமைவாக்க மதிப்புகளைக் காண்பி" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "அமைவாக்க மதிப்புகளை மீட்டமை" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "இந்தத் தகவலைக் காட்டு" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "பயன்பாடு: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "கட்டளைகள் :\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s என்பது தெரியாத கட்டளை!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "மூடு (_C)" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus Linux/Unixக்கான உள்ளீடு பஸ்." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "I. Felix " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "முன்னுரிமைகள் " #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "மறுதுவக்கம்" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "வெளியேறு " #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = தனிபயன்" #~ msgid "IBus Update" #~ msgstr "IBus புதுப்பிப்பு" #~ msgid "Super+space is now the default hotkey." #~ msgstr "இப்போது Super+space என்பது முன்னிருப்பு குறுக்குவிசையாகும்." ibus-1.5.22/po/zh_CN.gmo0000644000000000000000000005420613623751604011573 00000000000000[#"o1R X<c    '; MYu 7; A LVg"xH  5#Tx%    !.3(F(o@ D+p  9 .=Nah { .0  b!o! s!}!!!! !!!" "3"F",\""*##_$ }$o$1$-%D%I%_% w% %%@%C%&"&<&O&b& g&t&|&9&&& && & &) '^7'0' ' '.'(%(E(_(&v(((((?(7) V)c)k)J)")()*+*=*T*t*4*7**+9#+1]+2++++-,4,&K,@r,,',,"-1- G-T-f- z----8-O-'9.Qa...@a/D/D/<,06i040.0-1421g1w111/1 1/12<2'L2t22>2 22 3$37-3ae33 345?6OG666666666 666 6.6#7 C7Q7i7|7*9A9P9T9k999 9g9|#:::0:: ::: ; ;";2; 9; F;S; c; m;w;;!;;;; <- <N<g<6=O= V=a= h= u=%=J== > >>B*>m> >>>> > >> ? ??)?0?0C?0t?<? ??@@9.@ h@r@ @ @@@@mAtA3{A AA A AAA B B 6B CBPB WBcB$rBBAdC CuC 'D1D 5D?D RD\DlD DDDDDDD!E&$EKFkF&G BGQLG*GGGGG HH H'H@H YHeH~HHH HHH/HI I I I%I5I6RTR)dRR2R RR!S)SBS=XS!SSSS*S?TRTmTTbV<xVcV W $W /W :W EW PW [W fW qW W W W<W+W XX](Xl!^zh[(}IeX|BZ p=t7j)%mnQ`1H_K#]vC2rTMS8@0?c\ 9oF4gLfDiJW sAxa6ky+u/b'd ;$RNU*{.~5O "q3Y,:>- E&<GVwP%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdvancedAlias: %sAlwaysAnimals & NatureAnnotations: %sArabicArmenianArrowsAuthor: %s Auto hideBasic LatinBottom left cornerBottom right cornerCJK CompatibilityCJK StrokesCJK Symbols and PunctuationCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:Chess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCommands: ComponentContaining matchControl PicturesCopied an emoji to your clipboard.Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCyrillicCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDisable shortcut keysDisable:Do not showDomino TilesDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji annotation language:Emoji annotation:Enable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGet global engine failed. Greek ExtendedGreek and CopticHas emoji variantsHebrewHide automaticallyHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Latin Extended AdditionalLatin Extended-ALatin Extended-BLatin-1 SupplementLetterlike SymbolsList engine name onlyLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Mahjong TilesMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations with the specified lengthMathematical OperatorsMenuMiscellaneous SymbolsMiscellaneous TechnicalModifiers:MongolianMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listName: %sNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsObjectsOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherOthersPage DownPage UpPeople & BodyPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.Save emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSmileys & EmotionStart ibus on loginSuffix matchSuperscripts and SubscriptsSymbolsTagsThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUnicode font:Unicode shortcut keys for gtk_accelerator_parseUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2019-07-26 04:03+0000 Last-Translator: Tian Shixiong Language-Team: Chinese (China) Language: zh_CN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Zanata 4.6.2 %s 是未知命令! (暂不可用)...字体和风格全局输入法设置键盘布局快捷键启动IBus 智能输入平台 主页:https://github.com/ibus/ibus/wiki 可以通过敲击键盘快捷键或者点击面板图标来在上述列表中切换选中的输入法关于活动添加选中的输入法到启用输入法列表高级别名:%s总是动物和自然释义:%s阿拉伯语亚美尼亚语箭头作者:%s 自动隐藏基本拉丁语左下角右下角汉日韩字符兼容汉、日、韩语笔画汉、日、韩语符号和标点无法连接 IBus。 已取消选择一个 emoji候选词排列方向:象棋符号选择一种条件来部分匹配表情注释在表情输入对话框中选择默认表情输入语言。设定值 $lang 会应用于 /usr/share/ibus/dicts/emoji-$lang.dict选择以下条件来部分匹配表情注释:0 == 字首匹配, 1 == 字尾匹配, 2 == 包含匹配点击查看警告信息关闭命令: 组件包含匹配控制图已将 emoji 复制到你的剪贴板版权所有 (c) 2007-2010 黄鹏 版权所有 (c) 2007-2010 Red Hat, Inc.创建注册缓存货币符号自定义自定义字体表情符号对话框中用于表情符号的自定义字体名称自定义语言栏字体西里尔语西里尔语补充DConf 保留名称前缀emoji 字典的默认语言描述: 描述:%s禁用快捷键禁用:不再显示多米诺骨牌完成内嵌编辑模式在应用程序窗口中启用内嵌编辑模式在应用程序窗口中启用内嵌编辑模式在应用程序窗口中启用输入法的内嵌编辑模式表情符号Emoji 释文语言:表情符号注释默认启动输入法当应用程序需要使用输入时自动启用输入法开关:应用快捷键启用:引擎顺序退出 ibus-daemon字体无法捕捉当前文字应用程序。请重新让该应用程序获得焦点。比如多次按 Esc 键来释放表情输入模式,点击桌面然后再点击该文字应用程序。最爱旗帜在始终显示的情况下面板跟随输入光标食物饮料常规通用标点几何形状获取全局引擎失败。 希腊语扩展希腊和古埃及语有表情符号变体希伯来语自动隐藏水平IBus 面板IBus 首选项IBus 守护在 %d 秒内无法启动IBus 已经启动!如果您无法使用 IBus,添加以下行至 $HOME/.bashrc;然后请重新登录您的桌面。 export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus 是一个适用于 Linux/Unix 系统的智能输入平台。IPA 扩展若为真,当面板设为始终显示时面板将跟随输入光标。若为假,面板将在固定位置显示。输入法Kbd按键:键盘布局:%s 快捷键语言栏位置语言栏位置:语言:%s 拉丁语扩展附加拉丁语扩展-A拉丁语扩展-B拉丁-1 补充类似字母的符号仅列出引擎名称在启动时加载 Unicode 数据如果设为“True”,则在启动时加载 Unicode 数据。加载数据大约需要 15MB 内存。如果设为“False”,则当打开表情符号对话框时加载 Unicode 数据。Unicode 数据总是会在表情符号数据加载之后加载,即使设置为“True”也是如此。在启动时加载 emoji 数据如果设定为真 (True),则在启动时载入表情数据。大概需要 10MB 内存来载入数据。如果设定为假 (False),则在打开表情对话框时加载表情数据。正在加载 Unicode 字典麻将块使用超过特定长度字符对表情注释进行匹配,而非完全匹配。使用特定长度字符匹配表情注释数学运算符菜单其它各种符号各种技术类符号修饰符:蒙语更多...下移选中的输入法上移选中的输入法名称:%s下一个引擎快捷键下一输入法:尚未设置引擎。 无数字形式实体候选词表方向候选词表方向。0 = 水平,1 = 竖直。其他其他下一页上一页人物和身体纸牌请按一个键盘按键(或者一个组合按键)请按一个键盘按键(或者一个组合按键) 当您松开任意按键时,对话框会自动关闭。输入法切换窗口弹出延时微秒数首选项字首匹配用来停止名称转换的 DConf 键前缀预加载引擎IBus 启动时预加载的引擎上一个引擎快捷键上一输入法:输出 ibus-daemon 位于 D-Bus 中的地址退出XKB 图标的 RGBA 值读取注册缓存 FILE。读取系统注册缓存。从启用输入法列表删除选中的输入法重置配置正在重置重新启动重启 ibus-daemon若 .xmodmap 或者 .Xmodmap 存在则当 ibus 框架启动时执行 xmodmap将面板中的 emoji 保存到剪贴板保存在输入法选单中的引擎顺序已储存的版本号选择语言选择输入法选择 %s 的快捷键设定 IBus 首选项设置表情符号对话框中 Unicode 候选字的字体设置 emoji 面板中 emoji 释文的语言设定全局引擎失败。 设定或获取引擎设置如何显示或隐藏语言栏的方式设置候选词表方向在所有应用程序中共享同一个输入法显示可用引擎显示表情变体在系统托盘上显示图标显示选中输入法的信息显示输入法名称语言栏上显示输入法名称选中该项将在语言栏上显示输入法的名字显示属性栏:显示选中输入法的设置界面显示配置值显示注册缓存内容。显示本信息显示版本号笑脸和情绪登录时运行 IBus字尾匹配上标和下标符号标签IBus 守护进程尚未运行。您希望启动它吗?属性面板的行为。 0 = 不再显示,1 = 自动隐藏,2 = 始终显示以毫秒为单位显示属性面板的时间在离开焦点或属性变更后,以毫秒为单位显示属性面板的时间注册缓存无效。 已保存的版本号将被用作检查之前安装的 ibus 版本和当前版本间的区别。切换下一个输入法快捷键切换上一个输入法快捷键切换到列表中下一个输入法快捷键切换到列表中上一个输入法快捷键开启或关闭 Unicode 输入的快捷键用于开启或关闭表情输入的快捷键关闭输入法的快捷键开启输入法的快捷键打开关闭输入法的快捷键左上角右上角交通工具和场所触发快捷键为 gtk_accelerator_parse 触发快捷键Unicode 字体用于 gtk_accelerator_parse 的 Unicode 快捷键用法:%s 命令 [选项...] 使用自定义字体语言栏上使用自定义字体使用自定义字体:使用全局输入法和 SHIFT 一起使用快捷键来切换到先前的输入法使用系统键盘(XKB)布局使用系统键盘布局使用 xmodmap竖直表情符号注释是否可以部分匹配是否使用部分字符而非完整字符匹配表情注释。写入注册缓存 FILE。写入系统注册缓存。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 之间的浮点透明度。易经六边形符号您可在此列表中为喜欢的表情符号添加注释。可在表情符号列表中显示最喜爱的表情符号,但前提是该列表中存在字符。关于(_A)添加(_A)应用(_A)取消(_C)关闭(_C)删除(_D)向下(_D)确定(_O)首选项(_P)删除(_R)向上(_U)default:LTR表情符号对话框中的最喜爱表情符号注释列表emoji 面板中的最喜爱的 emoji 列表语言: %s 切换输入法黄鹏 Fedora 简体中文组 ibus-1.5.22/po/pa.po0000644000000000000000000027711713623751601011033 00000000000000# Panjabi translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2019 Takao Fujiwara # 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 # A S Alam , 2015. #zanata # fujiwara , 2015. #zanata # A S Alam , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2019-05-23 03:58+0000\n" "Last-Translator: A S Alam \n" "Language-Team: Panjabi (Punjabi) \n" "Language: pa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 4.6.2\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "ਪ੍ਰੀ-ਲੋਡ ਇੰਜਣ" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus ਸ਼ੁਰੂ ਹੋਣ ਸਮੇਂ ਪਹਿਲਾਂ ਲੋਡ ਕੀਤੇ ਇੰਜਣ" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "ਇੰਜਣ ਕ੍ਰਮ" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "ਇੰਪੁੱਟ ਢੰਗ ਸੂਚੀ ਵਿੱਚ ਸੰਭਾਲੇ ਇੰਜਣਾਂ ਦਾ ਕ੍ਰਮ" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "ਮਿਲੀਸਕਿੰਟ 'ਚ ਸ਼ੁਰੂਆਤੀ ਦੇਰੀ" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "ਸੰਭਾਲਿਆ ਸੰਸਕਰਣ ਨੰਬਰ" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmap ਵਰਤੋਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "ਸਿਸਟਮ ਕੀਬੋਰਡ ਲੇਆਉਟ ਵਰਤੋ" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "ਸਿਸਟਮ ਕੀਬੋਰਡ (XKB) ਲੇਆਉਟ ਵਰਤੋ" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "ਗਲੋਬਲ ਇੰਪੁੱਟ ਢੰਗ ਵਰਤੋ" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "ਸਭ ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਇੱਕੋ ਇੰਪੁੱਟ ਢੰਗ ਸਾਂਝਾ ਕਰੋ" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "ਇੰਪੁੱਟ ਢੰਗ ਡਿਫਾਲਟ ਹੀ ਚਾਲੂ ਕਰੋ" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "ਜਦੋਂ ਐਪਲੀਕੇਸ਼ਨ ਇੰਪੁੱਟ ਫੋਕਸ ਲਵੇ ਤਾਂ ਇੰਪੁੱਟ ਢੰਗ ਡਿਫਾਲਟ ਹੀ ਚਲਾਉ" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf ਨਾਂ ਅਗੇਤਰ ਰੱਖਦਾ ਹੈ" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "DConf ਦੇ ਅਗੇਤਰ ਨਾਂ ਤਬਦੀਲੀ ਰੋਕਣ ਲਈ" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "ਟਰਿੱਗਰ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬੰਦ ਜਾਂ ਚਾਲੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ਲਈ ਸ਼ਾਰਟਕੱਟ ਕੁੰਜੀਆਂ ਟਰਿੱਗਰ ਕਰੋ" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ ਚਾਲੂ ਕਰੋ" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ ਬੰਦ ਕਰੋ" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬੰਦ ਕਰਨ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "ਅਗਲਾ ਇੰਜਣ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "ਲਿਸਟ ਵਿੱਚ ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "ਪਿਛਲਾ ਇੰਜਣ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "ਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚਾਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "ਆਟੋਮੈਟਿਕ ਓਹਲੇ" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਸਥਿਤੀ" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "ਖੋਜ ਟੇਬਲ ਦੀ ਸਥਿਤੀ" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "ਖੋਜ ਟੇਬਲ ਦੀ ਸਥਿਤੀ। 0 = ਲੇਟਵਾਂ, 1 =ਖੜ੍ਹਵਾ" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "ਸਿਸਟਮ ਟਰੇਅ ਵਿੱਚ ਆਈਕਾਨ ਵੇਖਾਓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "ਇੰਪੁੱਟ ਢੰਗ ਨਾਂ ਵੇਖਾਓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "ਭਾਸ਼ਾ ਪੱਟੀ ਉੱਤੇ ਇੰਪੁੱਟ ਢੰਗ ਨਾਂ ਵੇਖਾਓ" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "ਮਨਪਸੰਦ ਫੋਂਟ ਵਰਤੋਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਲਈ ਮਨਪਸੰਦ ਫੋਂਟ ਨਾਂ ਵਰਤੋਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "ਮਨਪਸੰਦ ਫੋਂਟ" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਲਈ ਮਨਪਸੰਦ ਫੋਂਟ ਨਾਂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "ਹੋਰ" #: setup/emojilang.py:67 msgid "Select a language" msgstr "ਭਾਸ਼ਾ ਚੁਣੋ" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "ਰੱਦ ਕਰੋ(_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "ਠੀਕ ਹੈ(_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "...ਹੋਰ" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "ਇਸ ਬਾਰੇ" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "ਬੰਦ ਕਰੋ(_C)" #: 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 "ਇੱਕ ਇੰਪੁੱਟ ਢੰਗ ਚੁਣੋ" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "ਸ਼ਾਮਲ(_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "ਇੰਪੁੱਟ ਢੰਗ" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus ਪਸੰਦ" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "ਲਿਸਟ ਵਿੱਚ ਪਿਛਲੇ ਇੰਪੁੱਟ ਢੰਗ ਤੇ ਜਾਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਬਟਨ" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ਡੈਮਨ ਚੱਲ ਨਹੀਂ ਰਿਹਾ ਹੈ। ਕੀ ਤੁਸੀਂ ਇਸਨੂੰ ਚਲਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ਡੈਮਨ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਚਾਲੂ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s ਲਈ ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਚੁਣੋ" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਨਾ" #: setup/setup.ui:11 msgid "Horizontal" msgstr "ਲੇਟਵਾਂ" #: setup/setup.ui:14 msgid "Vertical" msgstr "ਖੜ੍ਹਵਾਂ" #: setup/setup.ui:25 msgid "Top left corner" msgstr "ਉੱਤੇ ਖੱਬਾ ਕੋਨਾ" #: setup/setup.ui:28 msgid "Top right corner" msgstr "ਉੱਤੇ ਸੱਜਾ ਕੋਨਾ" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "ਹੇਠਾਂ ਖੱਬਾ ਕੋਨਾ" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "ਹੇਠਾਂ ਸੱਜਾ ਕੋਨਾ" #: setup/setup.ui:37 msgid "Custom" msgstr "ਪਸੰਦ" #: setup/setup.ui:48 msgid "Do not show" msgstr "ਨਾ ਦਿਖਾਓ" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "ਆਪਣੇ ਆਪ ਲੁਕਾਓ" #: setup/setup.ui:54 msgid "Always" msgstr "ਹਮੇਸ਼ਾ" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "ਲਿਸਟ ਵਿੱਚ ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚ" #: setup/setup.ui:115 msgid "Next input method:" msgstr "ਅਗਲਾ ਇੰਪੁੱਟ ਢੰਗ:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "ਲਿਸਟ ਵਿੱਚ ਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ ਬਦਲਣ ਲਈ ਸ਼ਾਰਟਕੱਟ ਸਵਿੱਚ" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "ਪਿਛਲਾ ਇੰਪੁੱਟ ਢੰਗ:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "ਚਾਲੂ ਜਾਂ ਬੰਦ:" #: setup/setup.ui:238 msgid "Enable:" msgstr "ਚਾਲੂ:" #: setup/setup.ui:291 msgid "Disable:" msgstr "ਬੰਦ:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "ਖੋਜ ਟੇਬਲ ਵਿੱਚ ਉਮੀਦਵਾਰ ਦੀ ਸਥਿਤੀ ਸੈੱਟ ਕਰੋ" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "ਉਮੀਦਵਾਰ ਸਥਿਤੀ:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ibus ਦਾ ਰਵੱਈਆ ਸੈੱਟ ਕਰੋ ਕਿ ਭਾਸ਼ਾ ਪੱਟੀ ਕਿਵੇਂ ਵੇਖਾਈ ਜਾਵੇ" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "ਵਿਸ਼ੇਸ਼ਤਾ ਪੈਨਲ ਦਿਖਾਓ:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "ਭਾਸ਼ਾ ਪੈਨਲ ਸਥਿਤੀ:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "ਜਦੋਂ ਚੈੱਕ ਬਾਕਸ ਚੁਣਿਆ ਹੋਵੇ ਤਾਂ ਇੰਪੁੱਟ ਢੰਗ ਨਾਂ ਭਾਸ਼ਾ ਪੱਟੀ ਉੱਤੇ ਵੇਖੋ" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਿੰਡੋ ਵਿੱਚ ਇੰਪੁੱਟ ਢੰਗ ਦਾ ਸ਼ਾਮਿਲ ਕੀਤਾ ਪਹਿਲਾਂ-ਸੋਧ ਟੈਕਸਟ" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "ਪਸੰਦੀਦਾ ਫੋਂਟ ਵਰਤੋਂ:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "ਫੋਂਟ ਅਤੇ ਸਟਾਈਲ" #: setup/setup.ui:579 msgid "General" msgstr "ਆਮ" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਕੀਤੇ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ" #: setup/setup.ui:682 msgid "_Remove" msgstr "ਹਟਾਓ(_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚੋਂ ਹਟਾਓ" #: setup/setup.ui:700 msgid "_Up" msgstr "ਉੱਤੇ(_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਉੱਤੇ ਭੇਜੋ" #: setup/setup.ui:718 msgid "_Down" msgstr "ਹੇਠਾਂ(_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਚਾਲੂ ਇੰਪੁੱਟ ਢੰਗਾਂ ਵਿੱਚ ਹੇਠਾਂ ਭੇਜੋ" #: setup/setup.ui:736 msgid "_About" msgstr "ਇਸ ਬਾਰੇ(_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "ਚੁਣੇ ਇੰਪੁੱਟ ਢੰਗ ਬਾਰੇ ਜਾਣਕਾਰੀ ਵੇਖੋ" #: setup/setup.ui:754 msgid "_Preferences" msgstr "ਮੇਰੀ ਪਸੰਦ(_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "ਚੁਣਿਆ ਇੰਪੁੱਟ ਢੰਗ ਦਾ ਸੈਟਅੱਪ ਵੇਖਾਓ" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "ਯੂਨੀਕੋਡ ਕੋਡ ਬਿੰਦੂ:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "ਯੂਨੀਕੋਡ ਫ਼ੋਂਟ:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "ਇਮੋਜ਼ੀ" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "ਕੀਬੋਰਡ ਲੇਆਉਟ" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "ਗਲੋਬਲ ਇੰਪੁੱਟ ਢੰਗ ਸੈਟਿੰਗ" #: setup/setup.ui:1298 msgid "Advanced" msgstr "ਤਕਨੀਕੀ" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "ਲਾਗਇਨ ਕਰਨ ਸਮੇਂ ibus ਚਲਾਓ" #: setup/setup.ui:1358 msgid "Startup" msgstr "ਸ਼ੁਰੂ" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "ਸਰਗਰਮੀਆਂ" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "ਜਾਨਵਰ ਤੇ ਕੁਦਰਤ" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "ਝੰਡੇ" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "ਖਾਣ-ਪੀਣ" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "ਚੀਜ਼ਾਂ" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "ਚਿੰਨ੍ਹ" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "ਯਾਤਰਾ ਤੇ ਥਾਵਾਂ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "ਮੁਢਲੀ ਲਾਤੀਨੀ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "ਅਰਬੀ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "ਸੀਰੀਅਕ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "ਦੇਵਨਾਗਰੀ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "ਬੰਗਾਲੀ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "ਗੁਰਮੁਖੀ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "ਗੁਜਰਾਤੀ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "ਓੜੀਆ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "ਤਾਮਿਲ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "ਤੇਲਗੂ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "ਕੰਨੜ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "ਮਲਿਆਲਮ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "ਸਿੰਹਾਲਾ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "ਥਾਈ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "ਲਾਓ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "ਤਿੱਬਤੀ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "ਮਿਆਮਾਰ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "ਜਾਰਜੀਅਨ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "ਮੁਦਰਾ ਚਿੰਨ੍ਹ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "ਨੰਬਰ ਰੂਪ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "ਤੀਰ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "ਗਣਿਤ ਕਾਰਵਾਈਆਂ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "ਫੁਟਕਲ ਤਕਨੀਕੀ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "ਕੰਟਰੋਲ ਤਸਵੀਰਾਂ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "ਜਾਇਮਿਤੀ ਸ਼ਕਲਾਂ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "ਫੁਟਕਲ ਚਿੰਨ੍ਹ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "ਖਾਸ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "ਸਿਰਫ ਇੰਜਣ ਨਾਂ ਵੇਖਾਓ" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus ਨਾਲ ਨਹੀਂ ਜੁੜ ਸਕਿਆ।\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "ਭਾਸ਼ਾ: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "ਕੋਈ ਇੰਜਣ ਸੈੱਟ ਨਹੀਂ ਹੈ।\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "ਗਲੋਬਲ ਇੰਜਣ ਸੈੱਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ।\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "ਗਲੋਬਲ ਇੰਜਣ ਫੇਲ ਹੋਇਆ।\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "ਸਿਸਟਮ ਰਜਿਸਟਰੀ ਕੈਚੇ ਪੜ੍ਹੋ।" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਫ਼ਈਲ ਪੜ੍ਹੋ।" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਅਯੋਗ ਹੈ।\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "ਸਿਸਟਮ ਰਜਿਸਟਰੀ ਕੈਚੇ ਲਿਖੋ।" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਫ਼ਾਈਲ ਲਿਖੋ।" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "...ਮੁੜ-ਸੈਟ ਕਰ ਰਿਹਾ ਹੈ" #: tools/main.vala:399 msgid "Done" msgstr "ਮੁਕੰਮਲ" #: tools/main.vala:444 msgid "Set or get engine" msgstr "ਇੰਜਣ ਸੈੱਟ ਜਾਂ ਪ੍ਰਾਪਤ ਕਰੋ" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon ਤੋਂ ਬਾਹਰ ਆਓ" #: tools/main.vala:446 msgid "Show available engines" msgstr "ਉਪਲੱਬਧ ਇੰਜਣ ਵਿਖਾਓ" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(ਲਾਗੂ ਨਹੀਂ ਕੀਤੀ ਹੋਈ)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon ਮੁੜ ਸ਼ੁਰੂ ਕਰੋ" #: tools/main.vala:449 msgid "Show version" msgstr "ਸੰਸਕਰਣ ਵਿਖਾਓ" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਦੇ ਅੰਸ਼ ਵਿਖਾਓ" #: tools/main.vala:451 msgid "Create registry cache" msgstr "ਰਜਿਸਟਰੀ ਕੈਚੇ ਬਣਾਓ।" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon ਦਾ D-Bus ਪਤਾ ਛਾਪੋ" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "ਸੰਰਚਨਾ ਮੁੱਲ ਦਿਖਾਓ" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "ਸੰਰਚਨਾ ਮੁੱਲ ਮੁੜ-ਸੈਟ ਕਰੋ" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "ਇਹ ਜਾਣਕਾਰੀ ਵਿਖਾਓ" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "ਵਰਤੋਂ: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "ਕਮਾਂਡ:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s ਅਣਜਾਣ ਕਮਾਂਡ ਹੈ!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "ਮਨਪਸੰਦ" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "ਹੋਰ" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "ਯੂਨੀਕੋਡ ਚੋਣ ਖੋਲ੍ਹੋ" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "ਬੰਦ ਕਰੋ" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "ਮੇਨੂ" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "ਚੇਤਾਵਨੀ ਸੁਨੇਹਾ ਵੇਖਣ ਲਈ ਕਲਿੱਕ ਕਰੋ" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "ਯੂਨੀਕੋਡ ਸ਼ਬਦ-ਕੋਸ਼ ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "ਕੋਡ ਬਿੰਦੂ: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "ਵਰਣਨ: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "ਕੋਈ ਨਹੀਂ" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "ਨਾਂ: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "ਇਮੋਜ਼ੀ ਚੋਣ" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "ਯੂਨੀਕੋਡ ਚੋਣ" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "ਫ਼ੌਂਟ" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus ਪੈਨਲ" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus ਲੀਨਕਸ/ਯੂਨੈਕਸ ਲਈ ਮਾਹਰ ਇੰਪੁੱਟ ਬੱਸ ਹੈ।" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ ੨੦੦੮-੨੦੧੨\n" "ਜਸਵਿੰਦਰ ਸਿੰਘ \n" "http://www.satluj.com/" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "ਮੇਰੀ ਪਸੰਦ" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "ਬਾਹਰ" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/en@boldquot.header0000644000000000000000000000247113623751246013513 00000000000000# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # ibus-1.5.22/po/tr.gmo0000644000000000000000000012371413623751604011220 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIfBhEIhhhhh'hhi.ipBii cj mj:yjj jjjj jj kk2kOkfkvkkkk(kkk l"l)l /l:lIlQlVl \l il ulll llllll lllm)m/m5mOm_mwm#mmm(mn$!n$Fn$kn$n$n$nn%o@oSoYohoooto}ooIoozp+#qOqUqfq,q#q,qr r)rDrMr_rqrrrHrrs/s1>spsssJs&st!t't?tWt ot|t't ttt tt u)u@u Vu`ufuwu}uu%uuuuu1 v1;vEmvv vvv.v4+w `w1jwVw'w!x =xKxfxzxxxxxxyy 'y3y z zBz^zqzwzz#zzzzz {!{3{9{A{W{g{ p{~{!{{ {{{||#|+|A|H|P|&_|||| ||;|}8}+~#<~/`~c~~|  &/KT Xcw  €׀+C[s!Áځ 9+>2j)ǃʄЄք߄   p&o=)E+o"؆  '-BY"^"#Շ *< C QN_M#=W[ b l x ĉى ' 2? O [ ep -ъ!)07Q ` n{ ԋ7x=H  Gc0~ Ѝ%&5;!W y?%*Hd`ŏ ˏ ֏-3C an"CÐDLiK,ϒ49A]w!//N50#Д)1CKSm ȕЕ+ 1>\kz  Ȗ ) B O+Y ɗҗ  % ,B7Yz5Ԙq F|Ù֚HHΛHH`><3%1Y?O˝pĞ8FI6џ/(#X|- c۠?L_$ѡ4E KY `@lb# 4!U w B]M \gmu}  >֦0F!OZqJWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2020-01-03 13:37+0000 Last-Translator: Oğuz Ersen Language-Team: Turkish Language: tr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n>1); X-Generator: Weblate 3.9.1 Emoji iletişim kutusundaki emoji karakterleri için "YAZI TİPİ"Emoji iletişim kutusundaki ek açıklamalar için "DİL". Örn. "tr"%s, bilinmeyen komut! (Uygulanmadı)...Yazı Tipi ve StiliGlobal giriş yöntemi ayarlarıKlavye DüzeniKlavye KısayollarıBaşlangıçIBus Akıllı giriş veri yolu Ana sayfa: https://github.com/ibus/ibus/wiki Etkin giriş yöntemi, klavye kısayol tuşlarına basarak veya panel simgesine tıklayarak yukarıdaki listede seçilenler arasında değiştirilebilir.HakkındaAktivitelerSeçilen giriş yöntemini etkin giriş yöntemlerine ekleAdlamGelişmişEge SayılarıAhomSimya SembolleriTakma ad: %sAlfabetik Sunum FormlarıHer zamanAnadolu HiyeroglifleriAntik Yunan Müzik NotalarıAntik Yunan SayılarıAntik SembollerHayvanlar & DoğaEk açıklamalar: %sArapArap Genişletilmiş-AArapça Matematiksel Alfabetik SembollerArapça Sunum Formları-AArapça Sunum Formları-BArap İlaveErmeniOklarYazar: %s Otomatik gizleAvestanBaliBamumBamum İlaveTemel LatinBassa VahBatakBengalBhaiksukiBlok ElemanlarıBopomofoBopomofo GenişletilmişSol alt köşeSağ alt köşeKutu ÇizimiBrahmiBraille DesenleriEmoji seçimini geri getirBugisBuhidBizans Müzikal SembollerCJK UyumluluğuCJK Uyumluluk FormlarıCJK Uyumluluk İdeograflarıCJK Uyumluluk İdeografları İlaveCJK Radikaller İlaveCJK ÇizgileriCJK Sembolleri ve Noktalama İşaretleriCJK Birleşik İdeograflarCJK Birleşik İdeograflar Uzantı ACJK Birleşik İdeograflar Uzantı BCJK Birleşik İdeograflar Uzantı CCJK Birleşik İdeograflar Uzantı DCJK Birleşik İdeograflar Uzantı ECJK Birleşik İdeograflar Uzantı FIBus'a bağlanılamıyor. Bir emoji seçmek için iptal edildi.Adayların yönü:KaryaKafkas ArnavutChakmaChamCherokeeCherokee İlaveSatranç SembolleriEmoji ek açıklamalarını kısmen eşleştirmek için bir koşul seçinEmoji iletişim kutusunda varsayılan bir emoji sözlük dili seçin. $lang değeri /usr/share/ibus/dicts/emoji-$lang.dict ögesine uygulanırEmoji ek açıklamalarını kısmen eşleştirmek için aşağıdaki koşullardan birini seçin: 0 == Önek eşlemesi, 1 == Sonek eşleşmesi, 2 == İçerilen eşleşmeBir uyarı mesajı görmek için tıklayınKapatKod noktası: %sBirleşik Aksan İşaretleriBirleşik Aksan İşaretleri GenişletilmişBirleşik Aksan İşaretleri İlaveSemboller için Birleşik Aksan İşaretleriBirleşik Yarım İşaretlerKomutlar: Ortak Hint Sayı FormlarıBileşenEşleşme içerenKontrol ResimleriBir emoji panonuza kopyalandı.KıptiKıpti Epakt SayılarıCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Sayma Çubuğu SayılarıKayıt önbelleği oluşturÇivi YazısıÇivi Yazısı Sayılar ve Noktalama İşaretleriPara Birimi SembolleriÖzelÖzel yazı tipiEmoji iletişim kutusundaki emoji karakterleri için özel yazı tipi adıDil paneli için özel yazı tipi ismiKıbrıs HecelerKirilKiril Genişletilmiş-AKiril Genişletilmiş-BKiril Genişletilmiş-CKiril İlaveDConf isim koruma önekleriEmoji sözlüğü için varsayılan dilAçıklama: Açıklama: %sDeseretDevanagariDevanagari GenişletilmişDingbat'lerDevre dışı bırakma kısayol tuşlarıDevre dışı bırak:GöstermeDograDomino TaşlarıBittiDuployanErken Hanedan Çivi YazısıMısır Hiyeroglif Format KontrolleriMısır HiyeroglifleriElbasanElamÖn-Düzenleme Metnini EkleUygulama Penceresinde Ön-Düzenleme Metnini EkleUygulama penceresinde ön-düzenleme metnini ekleUygulama penceresinde, giriş yönteminin ön-düzenleme metnini ekleEmojiEmoji SeçimiEmoji ek açıklaması dili:Emoji ek açıklaması:Emoji ek açıklamaları kısmen eşleşebilirgtk_accelerator_parse için emoji kısayol tuşlarıİfadelerGiriş yöntemini varsayılan olarak etkinleştirUygulama giriş odağı aldığında varsayılan olarak giriş yöntemini etkinleştirEtkinleştir veya devre dışı bırak:Etkinleştirme kısayol tuşlarıEtkinleştir:Kapalı Alfanumerik İlaveKapalı AlfanumerikKapalı CJK Harfleri ve AylarıKapalı İdeografik İlaveMotor sırasıEtiyopyaEtiyopya GenişletilmişEtiyopya Genişletilmiş-AEtiyopya İlaveibus-daemon'dan çıkYAZI TİPİMevcut metin uygulaması alınamadı. Lütfen uygulamanızı yeniden odaklayın. Örn. emoji yazma modunu bırakmak için Esc tuşuna birkaç kez basın, masaüstünüze ve metin uygulamanıza tekrar tıklayın.FavorilerBayraklarPanelin her zaman gösterilmesi durumunda giriş imlecini takip etYiyecek & İçecekGenelGenel Noktalama İşaretleriGeometrik ŞekillerGeometrik Şekiller GenişletilmişGürcüGürcü GenişletilmişGürcü İlaveGlobal motor alınamadı. GlagolitikGlagolitik İlaveGotikGranthaYunan GenişletilmişYunan ve KıptiGujaratiGunjala GondiGurmukiYarım ve Tam Genişlik FormlarıHangul Uyumlu JamoHangul JamoHangul Jamo Genişletilmiş-AHangul Jamo Genişletilmiş-BHangul HeceleriHanifi RohingyaHanunooEmoji çeşitleri varHatranİbraniOtomatik gizleYüksek Özel Kullanımlı TemsilcilerYüksek TemsilcilerHiraganaYatayIBus PaneliIBus TercihleriIBus arka plan programı %d saniye içinde başlatılamadıIBus başlatıldı! IBus'ı kullanamıyorsanız, $HOME/.bashrc dosyanıza aşağıdaki satırları ekleyin; ardından masaüstünüze yeniden giriş yapın. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus, Linux/Unix için akıllı bir giriş veri yoludur.IPA Uzantılarıİdeografik Açıklama Karakterleriİdeografik Semboller ve Noktalama İşaretleriEmoji ek açıklamalarının tam eşleşme yerine kısmi bir string ile eşleşip eşleşemeyeceğiDeğer doğruysa, panelin her zaman gösterilmesi durumunda panel giriş imlecini izler. Yanlışsa, panel sabit bir yerde gösterilir.İmparatorluk AramiceHint Siyaq SayılarıGiriş YöntemiKitabe PehleviKitabe ParthiaCavaKaithiKana Genişletilmiş-AKana İlaveKanbunKangxi RadikallerKannadaKatakanaKatakana Fonetik UzantılarKayah LiKbdTuş kodu:Klavye düzeni: %s Klavye kısayollarıKharoshthiKmerKmer SembolleriKhojkiKhudawadiDİLDil panelinin konumuDil panelinin konumu:Dil: %s LaoLatin Genişletilmiş EkLatin Genişletilmiş-ALatin Genişletilmiş-BLatin Genişletilmiş-CLatin Genişletilmiş-DLatin Genişletilmiş-EASCII içermeyen Latin düzenleriLatin-1 İlaveLepchaHarf Benzeri SembollerLimbuDoğrusal ADoğrusal B İdeogramlarDoğrusal B HecelerYalnızca motor adını listeleLisuUnicode verilerini başlatma anında yükleDeğer doğruysa, Unicode verilerini başlatma anında yükle. Verileri yüklemek için yaklaşık 15 MB bellek gerekmektedir. Yanlışsa, Unicode verilerini başlangıçta emoji iletişim kutusunu açarken yükle. Doğru olsa bile, Unicode verileri, emoji verileri yüklendikten sonra her zaman yüklenir.Emoji verilerini başlatma anında yükleDeğer doğruysa, emoji verilerini başlatma anında yükle. Verileri yüklemek için yaklaşık 10 MB bellek gerekmektedir. Yanlışsa, emoji verilerini başlangıçta emoji iletişim kutusunu açarken yükle.Unicode sözlük yükleme:Düşük TemsilcilerLikyaLidyaMahajaniMahjong TaşlarıMakasarMalayalamMandaikManiMarchenMasaram GondiEmoji ek açıklamalarını, tam eşleşme yerine belirtilen sayıda karakterden fazlasıyla kısmen eşleştir.Emoji ek açıklamalarını kısmen aşağıdaki koşulla ve karakter sayısından daha fazlasıyla eşleştir:Belirtilen uzunluktaki emoji ek açıklamalarıyla eşleştirBelirtilen tamsayı koşuluyla eşleştirBelirtilen tamsayı uzunluğuyla eşleştirMatematiksel Alfanumerik SembollerMatematiksel OperatörlerMaya RakamlarıMedefaidrinMeetei MayekMeetei Mayek UzantılarMende KikakuiMenüMeroitik El YazısıMeroitik HiyerogliflerMiaoÇeşitli Matematiksel Semboller-AÇeşitli Matematiksel Semboller-BÇeşitli SembollerÇeşitli Semboller ve OklarÇeşitli Semboller ve PiktograflarÇeşitli TeknikModiDeğiştirici Ton HarfleriDeğiştiriciler:MoğolMoğol İlaveDaha fazla…Seçilen giriş yöntemini etkin giriş yöntemleri listesinde aşağı taşıSeçilen giriş yöntemini etkin giriş yöntemleri listesinde yukarı taşıMroMultaniMüzikal SembollerMyanmarMyanmar Genişletilmiş-AMyanmar Genişletilmiş-BNKoNebatiİsim: %sNandinagariYeni Tai LueNewaSonraki motor kısayol tuşlarıSonraki giriş yöntemi:Motor ayarlanmadı. HiçbiriSayı FormlarıNushuNyiakeng Puachue HmongNesnelerOghamOl ChikiEski MacarEski İtalikEski Kuzey ArapEski PermikEski FarsEski SoğdEski Güney ArapEski TürkUnicode seçimini açOptik Karakter TanımaArama tablosunun yönüArama tablosunun yönü: 0 = Yatay, 1 = DikeyOriyaSüsleme Dingbat'leriOsageOsmanyaDiğerDiğerOsmanlı Siyaq SayılarıSayfa AşağıSayfa YukarıPahawh HmongPalmiraPau Cin Hauİnsanlar & VücutPhags-paPhaistos DiskiFenikeFonetik UzantılarFonetik Uzantılar İlaveİskambil KağıtlarıLütfen bir tuşa (veya bir tuş kombinasyonuna) basınLütfen bir tuşa (veya tuş kombinasyonuna) basın. Tuş serbest bırakıldığında iletişim kutusu kapatılacaktır.IME değiştirici penceresi için açılır pencere gecikme milisaniyesiTercihlerÖnek eşleşmesiİsim dönüştürmeyi durdurmak için DConf anahtarlarının önekleriMotorları önceden yükleIbus başlatılırken motorları önceden yükleÖnceki motor kısayol tuşlarıÖnceki giriş yöntemi:ibus-daemon'un D-Bus adresini yazdırÖzel Kullanım AlanıMezmur PehleviÇıkXKB simgesinin RGBA değeriKayıt önbellek DOSYASI'nı oku.Sistem kayıt önbelleğini oku.RejangSeçilen giriş yöntemini etkin giriş yöntemlerinden kaldırYapılandırma değerlerini sıfırlaSıfırlanıyor…Yeniden başlatibus-daemon'u yeniden başlatRumi Sayısal Sembollerİbus motorları değiştirildiğinde .xmodmap veya .Xmodmap mevcutsa xmodmap komutunu çalıştır.RunikSamiriyeliSaurashtraİletişim kutusundaki emojiyi panoya kaydet Giriş yöntemi listesinde kayıtlı motor sırasıKaydedilen versiyon numarasıBir dil seçBir giriş yöntemi seç%s için klavye kısayolunu seçinIBus Tercihlerini AyarlaEmoji iletişim kutusunda Unicode adaylarının yazı tipini ayarlaEmoji iletişim kutusunda emoji ek açıklamalarının dilini ayarlaGlobal motor ayarlanamadı. Motoru ayarla veya alIME değiştirici penceresini gösterecek açılır pencere gecikmesini milisaniye olarak ayarlayın. Varsayılan değer 400'dür. 0 = Pencereyi hemen göster. 0 < Milisaniye cinsinden gecikme. 0 > Pencereyi gösterme ve önceki/sonraki motorlara geçiş yap.Ibus'un dil çubuğunun nasıl gösterileceğini veya gizleneceğini ayarlaArama tablosunda adayların yönünü ayarlaSharadaTüm uygulamalar ile aynı giriş yöntemini paylaşShavianKestirme Format KontrolleriMevcut motorları gösterEmoji çeşitlerini gösterSimgeyi sistem tepsisinde gösterSeçilen giriş yönteminin bilgilerini gösterGiriş yöntemi adını gösterGiriş yöntemi adını dil çubuğunda gösterOnay kutusunu işaretlerken giriş yönteminin adını dil çubuğunda gösterÖzellik panelini göster:Seçilen giriş yönteminin ayarlarını gösterYapılandırma değerlerini gösterKayıt önbelleğinin içeriğini gösterBu bilgiyi gösterVersiyonu gösterSiddhamSinhalaSinhala Arkaik SayılarıKüçük Form VaryantlarıKüçük Kana UzantıGülüşler & DuygularSoğdSora SompengSoyomboBoşluk Değiştirici HarflerÖzel KarakterlerGirişte ibus'ı başlatSonek eşleşmesiSundaSunda İlaveÜst Simgeler ve Alt Simgelerİlave Oklar-Aİlave Oklar-Bİlave Oklar-Cİlave Matematiksel Operatörlerİlave Noktalama İşaretleriİlave Semboller ve Piktograflarİlave Özel Kullanım Alanı-Aİlave Özel Kullanım Alanı-BSutton İşaret YazısıSyloti NagriSembollerSemboller ve Piktograflar Genişletilmiş-ASüryaniSüryani İlaveTagalogTagbanwaEtiketlerTai LeTai ThamTai VietTai Xuan Jing SembolleriTakriTamilTamil İlaveTangutTangut BileşenlerTeluguThaanaTaylandlıIBus arka plan programı çalışmıyor. Başlatmak ister misiniz?Özellik panelinin davranışı. 0 = Gösterme, 1 = Otomatik gizle, 2 = Her zaman gösterÖzellik panelinin gösterileceği milisaniye süresiOdaklanıldığında veya özellikler değiştirildiğinde özellik panelinin gösterileceği milisaniye süresi.Bir özellik için panel simgesinin gösterileceği milisaniye süresiÖzellik, IBusEngineDesc'deki icon-prop-key değeri ile belirtilirse, motorlar her değiştirildiğinde, panel simgesini motor simgesinden bir özellik simgesine göstermek için milisaniye süresi. Değer 0 ise, gecikme süresi yoktur ve hemen özellik simgesi gösterilir.Kayıt önbelleği geçersiz. Kaydedilen versiyon numarası, daha önce kurulmuş olan ibus ile mevcut ibus'un biri arasındaki farkı kontrol etmek için kullanılacaktır.Listedeki bir sonraki giriş yöntemine geçmek için kısayol tuşlarıListedeki bir önceki giriş yöntemine geçmek için kısayol tuşlarıListedeki bir sonraki giriş yöntemine geçmek için kısayol tuşlarıListedeki bir önceki giriş yöntemine geçmek için kısayol tuşlarıUnicode yazmayı açmak veya kapatmak için kısayol tuşlarıEmoji yazmayı açmak veya kapatmak için kısayol tuşlarıGiriş yöntemini kapatmak için kısayol tuşlarıGiriş yöntemini açmak için kısayol tuşlarıGiriş yöntemini açmak veya kapatmak için kısayol tuşlarıUnicode kod noktası dönüşümlerini etkinleştirmek için kısayol tuşlarıEmoji ek açıklamalarının veya Unicode isimlerinin dönüşümlerini etkinleştirmek için kısayol tuşlarıTibetTifinaghTirhutaSol üst köşeSağ üst köşeUlaşım ve Harita SembolleriSeyahat & YerlerTetikleme kısayol tuşlarıgtk_accelerator_parse için tetikleme kısayol tuşlarıABD düzeni Latin düzenlerine eklenir. varyant göz ardı edilebilir.UgaritUnicode SeçimiUnicode kod noktası:Unicode yazı tipi:gtk_accelerator_parse için Unicode kısayol tuşlarıBirleşik Kanada Yerli HeceleriBirleşik Kanada Yerli Heceleri GenişletilmişKullanım: %s KOMUT [SEÇENEK...] Özel yazı tipi kullanDil paneli için özel yazı tipi ismi kullanÖzel yazı tipi kullan:Ibus çekirdeği yerine, virgülle ayrılmış değerler olabilecek motor şema yollarını kullan.Global giriş yöntemini kullanÖnceki giriş yöntemine geçmek için kısayol ile shift tuşunu kullanınSistem klavye (XKB) düzenini kullanSistem klavye düzenini kullanxmodmap kullanVaiVaryasyon SeçicilerVaryasyon Seçiciler İlaveVedik UzantılarDikeyDikey FormlarWanchoWarang CitiEmoji ek açıklamalarının kısmen eşleşip eşleşemeyeceğiEmoji ek açıklamalarının tam eşleme yerine kısmi bir string ile eşleşip eşleşemeyeceği.Kayıt önbelleği DOSYASI'nı yaz.Sistem kayıt önbelleğini yaz.XKB simgesi yerleşim stringini gösterir ve string RGBA değeri ile oluşturulur. RGBA değeri; 1. X11'den bir renk adı, 2. 'r', 'g' ve 'b' kırmızı, yeşil ve mavinin onaltılık basamakları olmak üzere '#rrggbb' şeklinde bir onaltılık değer, 3. 'rgb(r,g,b)' biçimindeki bir RGB rengi veya 4. 'r', 'g' ve 'b' 0 ila 255 aralığındaki tamsayılar veya %0 ile %100 aralığındaki yüzde değerleri ve 'a', alfa'nın 0 ile 1 aralığındaki bir ondalık sayı değeri olmak üzere 'rgba(r,g,b,a)' biçimindeki bir RGBA rengi olabilir.Yi RadikallerYi HeceleriYijing Altıgen SembolleriBu listeden favori bir emoji için bir açıklama atayabilirsiniz.Bu listede herhangi bir karakter varsa, favori emojileri emoji listesinde gösterebilirsiniz.Zanabazar Kare_Hakkında_Ekle_Uygula_İptal_Kapat_Sil_Aşağı_Tamam_Tercihler_Kaldır_Yukarıvarsayılan:LTR (soldan sağa)emoji iletişim kutusundaki favori emoji ek açıklama listesiemoji iletişim kutusundaki favori emoji listesidil: %s giriş yöntemlerini değiştirmeSerdar Sağlam , 2019. Oğuz Ersen , 2019ibus-1.5.22/po/fr.gmo0000644000000000000000000013051113623751603011172 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIf7g[7h&hhhh8h!i?iYiykii j jOj$k*k2kCkHk ]k%hkkk"kkkll%l+l/y y,yUzpzz z#zzz"{1{ C{N{a{v{{{{||H|}0}G}^}t} }}}.} }~~$~ ,~ 9~G~P~U~^~~~ ~~~~~~ ~&.'Em~  :,)2'\g؂")9A Jkt x ÃӃ ۃ ,:>Xhx/؄ 5"Lo)tr< N(Z ʈ ӈވtlM;=:y(݊ 1JOd Ƌ֋$)FW^qlymTX`rz ōՍ/ڍ !+MTfl͎ Վ %)%OEu֏܏  ( 5 @Lir 'А? [ <*g.4$)2G^f3#ܓS+7c x` ! ,F7K~ʕ&'("PGsQ- ;"Y?|;CDL i&0C*&BQ]&E%_(ɛݛ $=S \i2q#ޜ -Ie&)ĝ++F\l#uŞ͞Ԟݞ & :D KDXo? uMNà#)MMR5MF֣OIm@AJ:Okե AKT\s(¦9\ x  9ͧ&3.(b%;%)[.(Hq'ƪ ۪ M ~Y1ث* 5 Stm   # .9BQZ bJn: "#%JWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2020-02-05 04:16+0000 Last-Translator: Julien Humbert Language-Team: French Language: fr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: Weblate 3.10.3 « POLICE » des émoticônes dans la boite de dialogue« LANGUE » des annotations dans la boite de dialogue des émoticône. Par ex : « fr »%s n’est pas une commande connue ! (Non implémenté)…Police et StyleConfiguration de la méthode d’éntrée globaleDisposition du clavierRaccourcis clavierDémarrageIBus The intelligent input bus Page d’accueil : https://github.com/ibus/ibus/wiki 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.À proposActivitésAjouter la méthode d’entrée selectionnée aux méthodes d’entrée activesAdlamAvancéNombres égéensAhomSymboles alchimiquesAlias : %sFormes de présentation alphabétiqueToujours afficherHiéroglyphes hittitesNotation musicale grecque ancienneNombres grecs anciensSymboles anciensAnimaux & natureAnnotations : %sArabeArable étendu-ASymboles mathématiques alphanumériques arabesFormes A de présentation arabesFormes B de présentation arabesSupplément arabeArménienFlèchesAuteur : %s Masquage automatiqueAvestiqueBalinaisBamounSupplément BamounLatin de baseBassa VahBatakBengaliBhaiksukiÉléments blocsBopomofoBopomofo étenduCoin inférieur gaucheCoin inférieur droitDessiner des boîtesBrahmîMotifs en brailleRétablir le choix emojiBouguinaisBuhidSymboles musicaux byzantinsCompatibilité CJCFormes de compatibilité CJCIdéographes de compatibilité CJCIdéographes de compatibilité CJK supplémentairesSupplément Radicaux CJCTraits CJCSymboles et ponctuation CJCIdéographes unifiés CJCIdéographes unifiés CJC Extension AIdéographes unifiés CJC Extension BIdéographes unifiés CJC Extension CIdéographes unifiés CJC Extension DIdéographes unifiés CJC Extension EIdéographes unifiés CJC Extension FConnexion à IBus impossible. Abandon du choix d’émoticône.Orientation de la liste des candidats :CarienAlbanais du CaucaseChakmaChamCherokeeSupplément cherokeeSymboles d’échecsChoisir une condition de correspondance partielle d’annotations d’émoticônesChoisissez la langue par défaut pour les dictionnaires d’émoticônes dans la boite de dialogue. La valeur $Lang est appliquée à /usr/share/ibus/dicts/emoji-$lang.dictChoisissez une des conditions suivantes pour pour la correspondance partielle d’annotations d’émoticônes : 0 == correspondance de préfixe, 1 == correspondance de suffixe, 2 == correspondance de contenuCliquez pour voir le message d’avertissementFermerPoint de code : %sMarques diacritiques combinantesMarques diacritiques combinantes étenduesSupplément marques diacritiques combinantesMarques diacritiques combinantes pour symbolesDemi-signes combinatoiresCommandes : Formes numériques communes indiennesComposantCorrespondance de contenuContrôler des photosUne émoticône a été copiée dans le presse-papier.CopteNombres epact coptesCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Chiffres-bâtonnets chinoisCréer le cache du registreCunéiformeNombres cunéiformes et ponctuationSymboles monétairesPersonnaliséePolice personnaliséeNom de la police personnalisée pour les caractères d’émoticônes dans la boite de dialoguePolice personnalisée pour la barre de languesSyllabaire ChyprioteCyrilliqueCyrillique étendu-ACyrillique étendu-BCyrillique étendu-CSupplément cyrilliquePréservation des préfixes de nom DConfLangue par défaut pour le dictionnaire des émoticônesDescription : Description : %sDeseretDevanagariDevanagari étenduCasseauxDésactiver les raccourcis clavierDésactiver :Ne pas afficherDogriDominosEffectuéeDuployanCunéiforme dynastique archaïqueRéglages du format hiéroglyphes égyptiensHiéroglyphes égyptiensElbasanÉlymaïqueInsérer le texte en cours d’éditionInsérer le texte en cours d’édition dans la fenêtre de l’applicationInsérer le texte en cours d’édition dans la fenêtre de l’applicationInsérer le texte en cours d’édition par la méthode d’entrée dans la fenêtre de l’applicationÉmoticôneChoix d’émoticônesLangue d’annotations des émoticônes :Annotation des émoticônes :Les annotations d’émoticônes peuvent correspondre partiellementRaccourcis clavier des émoticônes pour gtk_accelerator_parseÉmoticônesPar défaut, activer la méthode d’entréePar défaut, activer la méthode d’entrée lorsque l’application reçoit le focusActiver / désactiver :Activer les raccourcis clavierActiver :Supplément alphanumérique cercléAlphanumériques cerclésLettres et mois CJC cerclésSupplément idéographique cercléOrdre des moteursÉthiopienÉthiopien étenduÉthiopien étendu-ASupplément éthiopienQuitter ibus-daemonPOLICEImpossible d’obtenir l’application texte actuelle. Veuillez sélectionner à nouveau votre application. Par exemple, appuyez plusieurs fois sur la touche Échap pour relâcher le mode de saisie emoji, cliquez sur votre bureau et cliquez à nouveau sur votre application texte.FavorisDrapeauxSuivre le curseur d’insertion lorsque le panneau est toujours affichéNourriture & boissonParamètres générauxPonctuation généraleFormes géométriquesFormes géométriques étenduesGéorgienGéorgien étenduSupplément géorgienÉchec de la récupération du moteur global. GlagolitiqueSupplément GlagolitiqueGothiqueGranthaGrec étenduGrec et copteGujaratiGongGurmukhiFormes de demi et pleine chasseCompatibilité Hangeul JamoHangeul JamoHangeul Jamo étendu-AHangeul Jamo étendu-BSyllabes hangeulHanifi RohingyaHanunooA des variantes d’émoticônesHatranHébreuCacher automatiquementSubstituts d’utilisation privé hautsSubstituts hautsHiraganaHorizontalePanneau IBUSPréférences de IBusLe démon IBus n’a pas pu être démarré en %d secondesIBus 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. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus est un IME intelligent pour Linux/Unix.Extensions à l’APICaractères de description idéographiqueSymboles et ponctuation idéographiquesSi les annotations peuvent correspondre à une chaîne partielle plutôt qu’une correspondance exacteSi activé, le panneau suit le curseur d’insertion lorsque le panneau est toujours affiché. Sinon, le panneau est affiché à une position fixe.Araméen impérialNombres hindous SiyaqMéthode d’entréePehelevi des inscriptionsParthe des inscriptionsJavanaisKaïthîKana étendu ASupplément KanaKanbunRadicaux KangxiKannadaKatakanaExtensions Katakana phonétiquesKayah LiKbdTouche :Disposition du clavier : %s Raccourci clavierKharoshthiKhmerSymboles khmersKhojkïKhudawadiLANGUEPosition de la barre de languesAfficher la barre de langues :Langue : %s LaoLatin étendu additionnelLatin étendu-ALatin étendu-BLatin étendu-CLatin étendu-DLatin étendu-EDispositions latines ne disposant pas d’ASCIISupplément Latin-1LepchaSymboles LetterlikeLimbuLinéaire AIdéogrammes du linéaire BSyllabaire linéaire BNe lister que les noms des moteursLisuCharge les données Unicode au démarrageCharge les données Unicode au démarrage si la condition est remplie. 15Mb de mémoire sont nécessaires pour charger ces données. Sinon, les données Unicode sont chargées lors de l’ouverture de la boite de dialogue des émoticônes. Même dans le cas où la condition est remplie, les données Unicode sont toujours chargées après les données des émoticônes.Charge les données relatives aux émoticônes au démarrageCharge les données relatives aux émoticônes au démarrage si la condition est remplie. 10Mb de mémoire sont nécessaires pour charger ces données. Sinon, les données des émoticônes sont chargées lors de l’ouverture de la boite de dialogue des émoticônes.Chargement d’un dictionnaire Unicode :Substituts basLycienLydienMahajaniTuiles de mahjongMakaMalayalamMandéenManichéenMarchenGondi de MasaramCorrespondances partielles avec plus que le nombre de caractères spécifié plutôt qu’une correspondance exacte.Correspondances partielles d’annotations des émoticônes ayant les conditions suivantes et plus que le nombre de caractères :Correspondance d’annotations d’émoticônes ayant la longueur spécifiéeFaire correspondre avec la condition de l’entier indiquéFaire correspondre avec la longueur de l’entier indiquéSymboles mathématiques alphanumériquesOpérateurs mathématiquesChiffres mayasMedfMeetei MayekExtensions meetei mayekÉcriture mendé KikakuiMenuCursive MéroïtiqueHiéroglyphes MéroïtiqueMiaoDivers symboles mathématiques-ASymboles mathématiques-B diversSymboles diversSymboles et flèches diversSymboles et pictogrammes diversDivers techniquesModiLettres modificatives de tonModificateurs :MongolSupplément MongolPlus…Déplacer vers le bas la méthode d’entrée sélectionnée dans la liste des méthodes d’entrée activesDéplacer vers le haut la méthode d’entrée sélectionnée dans la liste des méthodes d’entrée activesMroMultaniSymboles musicauxMyanmarMyanmar étendu-AMyanmar étendu-BN’KoNabatéenNom : %sNandinagariNouveau Tai LueNewaRaccourci clavier pour passer au moteur suivantMéthode d’entrée suivante :Aucun moteur n’est configuré. AucuneFormes numéralesNushuNyiakeng Puachue HmongObjetsOghamOl ChikiHongrois AncienVieux italiqueArabe ancien du NordPermienVieux perseSogdiane ancienArabe ancien du SudTurc AncienOuvrir un choix UnicodeReconnaissance optique de caractèresOrientation de la liste des candidatsOrientation de la liste des candidats. 0 = Horizontale, 1 = VerticaleOriyaCasseaux ornementauxOsageOsmanyaAutreAutresNombres ottomans SiyaqPage suivantePage précédentePahawh HmongPalmyrènePau Cin HauPersonnes & parties du corpsPhags-paDisque de PhaistosPhénicienExtensions phonétiquesSupplément d’extensions phonétiquesCartes à jouerVeuillez appuyer sur une touche (ou une combinaison de touches)Veuillez appuyer sur une touche (ou une combinaison de touches). La boîte de dialogue se fermera lorsque la touche sera relâchée.Délai en millisecondes d’affichage de la fenêtre du commutateur de méthode d’entréePréférencesCorrespondance de préfixePréfixes des clés DConf pour arrêter la conversion de nomPrécharger les moteursPrécharger les moteurs au démarrage d’ibusRaccourci clavier pour revenir au moteur précédentMéthode d’entrée précédente :Afficher l’adresse D-Bus de ibus-daemonZone à usage privéPehelevi des psautiersQuitterValeur RGBA de l’icône XKBLire le fichier FILE du cache du registre système.Lire le cache du registre système.RejangSupprimer la méthode d’entrée sélectionnée des méthodes d’entrées activesRéinitialiser les valeurs de configurationRéinitialisation…RedémarrerRedémarrer ibus-daemonSymboles numériques RûmîLancer xmodmap si le fichier .xmodmap ou .Xmodmap existe lors d’un basculement de moteur ibus.RuniqueSamaritainSaurachtraCopie l’émoticône dans la boite de dialogue vers le presse-papier L’ordre des moteurs enregistrés dans la liste des méthodes d’entréesNuméro de version enregistréSélectionner la langueSélectionnez une méthode d’entréeSélection du raccourci clavier pour %sDéfinir les préférences de IBusDéfini la police des émoticônes candidates dans la boite de dialogueDéfini la langue pour les annotations d’émoticônes dans la boite de dialogueÉchec de la configuration du moteur global. Définir ou obtenir le moteurDé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.Permet de choisir l’affichage de la barre de langues d’ibusPermet de choisir l’orientation de la liste des candidatsSharadaPartager la même méthode d’entrée pour toutes les applicationsShavienRéglages du format abrégéAfficher les moteurs disponiblesMontrer les variantes d’émoticônesAfficher l’icône dans la boîte à miniaturesAfficher les informations de la méthode d’entrée sélectionnéeAfficher le nom de la méthode d’entréeAfficher le nom de la méthode d’entrée sur la barre de languesAfficher le nom de la méthode d’entrée sur la barre de langue lorsque la case est cochéeAfficher le panneau de propriétés :Afficher le paramétrage de la méthode d’entrée sélectectionnéeAfficher les valeurs de configurationAfficher le contenu du cache du registreAfficher cette informationAfficher la versionSiddhamSinhalaNombre archaïque CingalaisPetites variantes de formeExtension de petits KanaFrimousses & émotionSogdianeSora SompengSoyomboDiacritiques sans chasse combinés avec une espaceCaractères spéciauxDémarrer IBus lors de la connexionCorrespondance de suffixeSundanaisSupplément sundanaisExposants et indicesFlèches-A supplémentairesFlèches-B supplémentairesFlèches-C supplémentairesSupplément opérateurs mathématiquesPonctuation complémentaireSymboles et pictogrammes supplémentairesArea-A Zone à usage privé supplémentaireArea-B Zone à usage privé supplémentaireSignWriting de SuttonSylotî nâgrîSymbolesSymboles et pictogrammes étendus-ASyriaqueSupplément SyriaqueRuniqueBuhidBalisesTai LeTai ThamTai VietSymboles Tai Xuan JingTakrîTamilSupplément TamoulTangouteComposants tangouteTélougouThaanaThaïlandaisLe démon IBus n’est pas démarré. Souhaitez-vous le démarrer ?Comportement du panneau de propriétés. 0 = Ne pas afficher, 1 = Cacher automatiquement, 2 = Toujours afficherTemps en millisecondes pour afficher le panneau de propriétésTemps en millisecondes pour afficher le panneau de propriétés après prise du focus ou changement des propriétés.Temps en millisecondes pour afficher l’icône de panneau d’une propriétéMillisecondes d’affichage de l’icône du panneau d’une propriété lorsqu’un moteur est chargé si la propriété est renseignée par a valeur de icon-prop-key dans IBusEngineDesc. Si la valeur est 0, sans délai et l’icône de propriété est montrée immédiatement.Le cache du registre est invalide. 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.Raccourci clavier pour passer à la méthode d’entrée suivante de la listeRaccourci clavier pour revenir à la méthode d’entrée précédente de la listeRaccourci clavier pour passer à la méthode d’entrée suivante de la listeRaccourci clavier pour revenir à la méthode d’entrée précédenteLes touches de raccourcis pour activer ou désactiver la frappe en mode UnicodeRaccourcis clavier pour activer ou désactiver la saisie des émoticônesLes raccourcis clavier pour désactiver la méthode d’entréeLes raccourcis clavier pour la méthode d’entrée sont activésRaccourcis claviers pour activer ou désactiver les méthodes d’entréesLes touches de raccourcis pour activer les conversions en point de code UnicodeLes touches de raccourcis pour activer les conversions des annotations d’émoticônes ou des noms UnicodeTibétainTifinaghTirhutaCoin supérieur gaucheCoin supérieur droitSymboles du transport et cartographiquesVoyages & lieuxRaccourci clavier déclencheurRaccourci clavier déclencheur pour gtk_accelerator_parseLa disposition US est ajoutée aux dispositions Latines. Les variantes peuvent être omises.OugqritiqueChoix UnicodePoint de code Unicode :Police de caractère Unicode :Touches de raccourcis Unicodes pour gtk_accelerator_parseSyllabaire autochtone canadien unifiéSyllabaires canadiens autochtones unifiés étendusUtilisation : %s COMMANDE [OPTION…] Utiliser une police personnalisée :Utiliser une police personnalisée pour la barre de languesUtiliser une police personnalisée :Utilisez les chemins de schéma du processeur au lieu du noyau ibus, qui peuvent être des valeurs séparées par des virgules.Utiliser la méthode d’éntrée globaleUtiliser le raccourci clavier avec Maj pour revenir à la méthode d’entrée précédenteUtiliser la disposition clavier système (XKB)Utiliser la disposition clavier systèmeUtiliser xmodmapVaiSélecteurs de varianteSuppléments de sélecteurs de varianteExtensions védiquesVerticaleFormes verticalesWantchoWarang CitiSi les annotations d’émoticônes peuvent correspondre partiellement ou nonSi les annotations d’émoticônes peuvent correspondre ou non à une chaîne partielle plutôt qu’à la chaîne complète.Enregistrer le fichier FILE du cache du registre.Enregistrer le cache du registre système.L’icône XKB affiche la chaîne de caractères de la disposition et cette chaîne de caractères est affichée avec sa valeur RGBA. Cette valeur RGBA peut être 1. le nom d’une couleur X11, 2. une valeur hexadécimale sous la forme « #rrggbb » où « r », « g » et « b » sont des chiffres hexadé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, est un nombre à virgule flottante compris entre 0 et 1.Radicaux YiSyllables YiSymboles hexagrammes Yì JīngVous pouvez assigner une annotation pour une émoticône favorite dans cette liste.Vous pouvez afficher les émoticônes favorites dans la liste des émoticônes si celle-ci contient des caractères.Zanabazar carréÀ _propos_AjouterA_ppliquerA_nnuler_Fermer_Supprimer_Descendre_Valider_Préférences_Enlever_Monterdefault:LTRliste des annotations d’émoticônes favorites dans la boite de dialogueliste des émoticônes favorites dans la boite de dialoguelangue : %s Changement de méthode d’entréeJulien Humbert ibus-1.5.22/po/id.po0000644000000000000000000026515613623751600011026 00000000000000# translation of ibus.pot to Indonesia # Indonesia translation of ibus. # Copyright (C) 2008-2015 Peng Huang # This file is distributed under the same license as the ibus package. # # Translators: # Rahman Yusri Aftian , 2019 msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2019-07-16 11:19+0700\n" "Last-Translator: Rahman Yusri Aftian \n" "Language-Team: Indonesian\n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 2.2.1\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Sebelum memuat mesin" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Sebelum memuat mesin selama ibus dimulai" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Urutan mesin" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Mesin yang disimpan memesan dalam daftar metode input" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Popup delay milidetik untuk jendela pengalih IME" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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 "" "Tetapkan milidetik tunda munculan untuk menampilkan jendela pengalih IME. " "Standarnya adalah 400. 0 = Tunjukkan jendela dengan segera. 0 < Tunda " "milidetik. 0 > Jangan perlihatkan jendela dan alihkan mesin Sebelum/" "Sesudah." #: data/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Nomor versi tersimpan" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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 "" "Nomor versi yang disimpan akan digunakan untuk memeriksa perbedaan antara " "versi ibus yang diinstal sebelumnya dan salah satu ibus saat ini." #: data/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Gunakan tata letak keyboard sistem" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Gunakan tata letak keyboard (XKB) sistem" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Sematkan Teks Preedit" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Sematkan Teks Preedit di Jendela Aplikasi" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Gunakan metode input global" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Bagikan metode input yang sama di antara semua aplikasi" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Aktifkan metode input secara default" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "Aktifkan metode input secara default ketika aplikasi mendapat fokus input" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf menyimpan awalan nama" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Awalan kunci DConf untuk menghentikan konversi nama" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Kunci pintas pemicu" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Tombol pintas untuk mengaktifkan atau menonaktifkan metode input" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Kunci pintas pemicu untuk gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Aktifkan tombol pintas" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Tombol pintas untuk mengaktifkan metode input" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Nonaktifkan tombol pintasan" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Tombol pintas untuk mematikan metode input" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Tombol pintas mesin berikutnya" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "Tombol pintas untuk beralih ke metode input berikutnya dalam daftar" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Prev engine shortcut keys" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "Tombol pintas untuk beralih ke metode input sebelumnya" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Sembunyi otomatis" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Perilaku panel properti. 0 = Jangan tampilkan, 1 = Sembunyikan otomatis, 2 = " "Selalu tampilkan" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Posisi panel bahasa" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "Ikuti kursor input jika panel selalu ditampilkan" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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 "" "Jika benar, panel mengikuti kursor input jika panel selalu ditampilkan. Jika " "salah, panel ditampilkan di lokasi tetap." #: data/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Milidetik untuk menampilkan panel properti" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Milidetik untuk menampilkan panel properti setelah fokus-masuk atau properti " "diubah." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orientation of lookup table" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientasi tabel pencarian. 0 = Horisontal, 1 = Vertikal" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Tampilkan ikon pada baki sistem" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Tampilkan nama metode input" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Tampilkan nama metode input pada bilah bahasa" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 #, fuzzy msgid "The milliseconds to show the panel icon for a property" msgstr "Milidetik untuk menampilkan panel properti" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Gunakan font khusus" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Gunakan nama font khusus untuk panel bahasa" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Fonta Khusus" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Nama font khusus untuk panel bahasa" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Kunci pintas pemicu untuk gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Tombol pintas untuk mengaktifkan atau menonaktifkan metode input" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 #, fuzzy msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Kunci pintas pemicu untuk gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 #, fuzzy msgid "The shortcut keys for turning emoji typing on or off" msgstr "Tombol pintas untuk mengaktifkan atau menonaktifkan metode input" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "Nama font khusus untuk panel bahasa" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Lain" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "Pilih metode input" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "Ba_tal" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Ihwal" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Keluar" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Bahasa: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Keyboard layout: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Pembuat: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Deskripsi:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Pilih metode input" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "T_ambah" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Metode Input" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Preferensi IBus" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Setel Preferensi IBus" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Pintasan keyboard" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Kata kunci:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Pengubah:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "Mener_apkan" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "Men_ghapus" #: 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 "" "Silakan tekan tombol (atau kombinasi tombol).\n" "Dialog akan ditutup ketika kunci dilepaskan." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Silakan tekan tombol (atau kombinasi tombol)" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "Gunakan pintasan dengan shift untuk beralih ke metode input sebelumnya" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "Daemon IBus tidak berjalan. Apakah Anda ingin memulainya?" #: setup/main.py:536 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 telah dimulai! Jika Anda tidak dapat menggunakan IBus, tambahkan baris " "berikut ke $ HOME / .bashrc Anda; kemudian masuk kembali ke desktop Anda.\n" " ekspor GTK_IM_MODULE=ibus\n" " export XMODIFIERS =@im= ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: setup/main.py:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Daemon IBus tidak dapat dimulai dalam% d detik" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Pilih pintasan keyboard untuk %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "beralih metode input" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horisontal" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertikal" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Pojok kiri atas" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Ujung kanan atas" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Pojok kiri bawah" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Pojok kanan bawah" #: setup/setup.ui:37 msgid "Custom" msgstr "Custom" #: setup/setup.ui:48 msgid "Do not show" msgstr "Jangan ditampilkan" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Otomatis sembunyikan" #: setup/setup.ui:54 msgid "Always" msgstr "Selalu" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "Tombol pintas untuk beralih ke metode input berikutnya dalam daftar" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Metode input selanjutnya:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Tombol pintas untuk beralih ke metode input sebelumnya dalam daftar" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Metode input sebelumnya:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Aktifkan atau nonaktifkan:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Aktifkan:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Nonaktifkan:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Keyboard Shortcuts" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Atur orientasi kandidat di tabel pencarian" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Orientasi kandidat:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Atur perilaku ibus cara menampilkan atau menyembunyikan bilah bahasa" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Tampilkan panel properti:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Posisi panel bahasa:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Tampilkan nama metode input pada bilah bahasa saat mencentang kotak centang" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Sematkan teks yang sudah disiapkan di jendela aplikasi" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "Sematkan teks metode input yang sudah ada di jendela aplikasi" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Gunakan font khusus:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Font and Style" #: setup/setup.ui:579 msgid "General" msgstr "Umum" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" "Tambahkan metode input yang dipilih ke dalam metode input yang diaktifkan" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Hapus" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "Hapus metode input yang dipilih dari metode input yang diaktifkan" #: setup/setup.ui:700 msgid "_Up" msgstr "_Naik" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Naikkan metode input yang dipilih dalam daftar metode input yang diaktifkan" #: setup/setup.ui:718 msgid "_Down" msgstr "_Turun" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" "Naikkan metode input yang dipilih dalam daftar metode input yang diaktifkan" #: setup/setup.ui:736 msgid "_About" msgstr "Ihw_al" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Tampilkan informasi tentang metode input yang dipilih" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Preferensi" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Tampilkan pengaturan metode input yang dipilih" #: setup/setup.ui:812 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 "" " Metode input aktif dapat diubah dari yang dipilih dalam daftar di " "atas dengan menekan tombol pintasan keyboard atau mengklik ikon panel. " #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Tombol pintas untuk mengaktifkan atau menonaktifkan metode input" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Gunakan font khusus:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Keyboard Layout" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Pengaturan metode input global" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Lanjutan" #: setup/setup.ui:1317 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" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Mulai ibus saat masuk" #: setup/setup.ui:1358 msgid "Startup" msgstr "Startup" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Vertikal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "Daftar nama mesin saja" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Tidak dapat terhubung ke IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "bahasa: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Tidak ada mesin yang diatur.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Setel mesin global gagal.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Dapatkan mesin global gagal.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Baca cache registri sistem." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Baca FILE cache registri." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "Cache registri tidak valid.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Tulis cache registri sistem." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Tulis FILE cache registri." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Atur atau dapatkan mesin" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Keluar dari ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "Tampilkan mesin yang tersedia" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Tidak diterapkan)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Muat ulang ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "Tampilkan versi" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Tampilkan konten cache registri" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Buat cache registri" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Cetak alamat D-Bus ibus-daemon" #: tools/main.vala:453 #, fuzzy msgid "Show the configuration values" msgstr "Perlihatkan informasi ini" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "Perlihatkan informasi ini" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Menggunakan: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Perintah:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s perintah tidak dikenal!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Lain" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Keluar" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "Deskripsi:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "IBus Update" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus adalah bus input cerdas untuk Linux / Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "kredit-penerjemah" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Prefensi" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Muat ulang" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "Keluar" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 "" #~ "Posisi panel bahasa. 0 = Pojok kiri atas, 1 = Pojok kanan atas, 2 = Pojok " #~ "kiri bawah, 3 = Pojok kanan bawah, 4 = Kustom" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Super + space sekarang merupakan hotkey default." ibus-1.5.22/po/en_GB.po0000644000000000000000000025747113623751600011405 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:46+0000\n" "Last-Translator: Steven Panek (Espreon) \n" "Language-Team: English (British)\n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Preload engines" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Preload engines during ibus starts up" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Use system keyboard layout" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Use system keyboard (XKB) layout" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Embed Pre-edit Text" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Embed Pre-edit Text in Application Window" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Use global input method" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Share the same input method among all applications" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Enable input method by default" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 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/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Trigger shortcut keys" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "The shortcut keys for turning input method on or off" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Enable shortcut keys" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "The shortcut keys for turning input method on" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Disable shortcut keys" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "The shortcut keys for turning input method off" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Next engine shortcut keys" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 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/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Prev engine shortcut keys" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "The shortcut keys for switching to the previous input method" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Auto hide" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Language panel position" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orientation of lookup table" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Show icon on system tray" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Show input method name" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Show input method name on language bar" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Use custom font" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Use custom font name for language panel" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Custom font" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Custom font name for language panel" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "The shortcut keys for turning input method on or off" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 #, fuzzy msgid "The shortcut keys for turning emoji typing on or off" msgstr "The shortcut keys for turning input method on or off" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "Custom font name for language panel" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Other" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "Select an input method" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Cancel" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "About" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Close" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Language: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Keyboard layout: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Author: %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 "Select an input method" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Add" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Input Method" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus Preferences" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Set IBus Preferences" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Keyboard shortcuts" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Key code:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modifiers:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Apply" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Delete" #: 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 "" "Please press a key (or a key combination).\n" "The dialog will be closed when the key is released." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Please press a key (or a key combination)" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Select keyboard shortcut for %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horizontal" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertical" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Top left corner" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Top right corner" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Bottom left corner" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Bottom right corner" #: setup/setup.ui:37 msgid "Custom" msgstr "Custom" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "Always" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Next input method:" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Previous input method:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Enable or disable:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Enable:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Disable:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Keyboard Shortcuts" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Set the orientation of candidates in lookup table" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Candidates orientation:" #: setup/setup.ui:407 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:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Language panel position:" #: setup/setup.ui:494 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:508 msgid "Embed preedit text in application window" msgstr "Embed pre-edit text in application window" #: setup/setup.ui:513 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:527 msgid "Use custom font:" msgstr "Use custom font:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Font and Style" #: setup/setup.ui:579 msgid "General" msgstr "General" #: setup/setup.ui:671 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:682 msgid "_Remove" msgstr "_Remove" #: setup/setup.ui:689 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:700 msgid "_Up" msgstr "_Up" #: setup/setup.ui:707 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:718 msgid "_Down" msgstr "_Down" #: setup/setup.ui:725 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:736 msgid "_About" msgstr "_About" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Show information of the selected input method" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Preferences" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "The shortcut keys for turning input method on or off" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Use custom font:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Keyboard Layout" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Global input method settings" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Advanced" #: setup/setup.ui:1317 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" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Start ibus on login" #: setup/setup.ui:1358 msgid "Startup" msgstr "Startup" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Vertical" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Other" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Close" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "Description:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "IBus Preferences" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus is an intelligent input bus for Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Steven Panek, " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Preferences" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Restart" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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" ibus-1.5.22/po/hi.gmo0000644000000000000000000003754313623751603011176 00000000000000~     #   8 oG  <     3 G _ w H  #   - C L (_ ( @  DVi~  .0  3F^ w @C+EXk9)^0P .% #?(h(p91:2l-&@$'e8@DD`<.-4?t/' 3D>\   !) - 9G_}r.*#6N,5" N^n",/K#LpH%WV\W) ]G 9!!g""C#N# J$k$$>$$$O%X%\'`'}''*'4','-)(W(Wi(((()?<*+|*/*3*m + z+l++,V-vj-*-V .Bc.-...//d/60XU040c0G1j1N2O2Z&393]34Z455I55f667z+8}8$9)9,9E:lG:,:L:~.;M;V;R<b=\e=====>=>Y>q>>>>> >>D>11?:3%Ii&7;Mn}5Q<tOH> P2,b 4#qa|!6d*pF@j \YRws? [~ oLvCSKlN.fEZcJ/x Ag-$(W_+]1VD{0)^uk'U`Bymz"9G=8rXehT%s is unknown command! ...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Embed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderGeneralGet global engine failed. HorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s List engine name onlyModifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:QuitRemove the selected input method from the enabled input methodsRestartSaved engines order in input method listSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow setup of the selected input methodStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutVertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:46+0000 Last-Translator: Rajesh Ranjan Language-Team: Hindi Language: hi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s अज्ञात कमांड है! ...फ़ॉन्ट व शैलीकोई इनपुट विधि चुनेंकुंजीपट लेआउटकुंजीपटल शॉर्टकटस्टार्टअपIBus तेज-तर्रार इनपुट बस होमपेज: https://github.com/ibus/ibus/wiki परिचयसक्रिय किए गए इनपुट विधि में चुनी गई इनपुट विधियों को जोड़ेंउन्नतहमेशालेखक: %s स्वतः छुपाएँनिचला बायां कोनानिचला दाहिना कोनाIBus में कनेक्ट नहीं हो सकता है. कंडीडेट दिशा:कमांड: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.मनपसंदमनपसंद फ़ॉन्टभाषा पटल के लिए मनपसंद फ़ॉन्ट नामDConf नाम उपसर्ग को संरक्षित करता हैविवरण: शॉर्टकट कुँजियाँ निष्क्रिय करेंनिष्क्रिय करें:पूर्वसंपादित पाठ अंतःस्थापित करेंअनुप्रयोग विंडो में पूर्वसंपादित पाठ अंतःस्थापित करेंअनुप्रयोग विंडो में पूर्वसंपादित पाठ अंतःस्थापित करेंइनपुट विधि के पूर्वसंपादित पाठ को अनुप्रयोग विंडो में अंतःस्थापित करेंइनपुट विधि को तयशुदा रूप से सक्रिय करेंजब अनुप्रयोग इनपुट फोकस पाता है तो इनपुट विधि को तयशुदा रूप से सक्रिय करेंसक्रिय या निष्क्रिय करें:शॉर्टकट कुँजियाँ सक्रिय करेंसक्रिय करें:इंजन क्रमसामान्यवैश्विक इंजन विफल पाएँ. क्षैतिजIBus वरीयताIBus %d सेकेंड में आरंभ नहीं हो सकाIBus को आरंभ किया गया है! यदि आप IBus का उपयोग नहीं करना चाहते हैं, अपने $HOME/.bashrc; में निम्नलिखित पंक्ति जोड़ें फिर अपने डेस्कटॉप में लॉग करें. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus Linux/Unix के लिए तेज तर्रार इनपुट बस है.इनपुट विधिKbdकुंजी कोड:कुंजीपट लेआउट: %s कुंजीपटल शॉर्टकर्टभाषा पैनल स्थितिभाषा पैनल स्थिति:भाषा: %s इंजन नाम को केवल सूचीबद्ध करता हैपरिवर्तनकर्ता:सक्रिय की गई इनपुट विधियों में चुनी गई इनपुट विधियों को खिसकाएँसक्रिय की गई इनपुट विधि सूची में चुनी गई इनपुट विधियों को ले जाएँअगला इंजन शॉर्टकट कुंजीअगली इनपुट विधि :कोई इंजन सेट नहीं. लुकअप सारणी की दिशासारणी देखने के लिए दिशा. 0 = क्षैतिज, 1 = लंबवतअन्यकृपया कोई कुंजी दबाएँ (या कोई कुंजी संयोग)कृपया कोई कुंजी दबाएँ (या कोई कुंजी संयोग). यह संवाद कुंजी छोड़े जाने पर बंद हो जाएगा.IME स्विचर विंडो के लिए आरंभिक विलम्ब मिलीसकेण्ड मेंवरीयता DConf कुँजी का उपसर्ग नाम वार्तालाप रोकने के लिएपहले से लोड इंजनibus आरंभन के दौरान पहले से लोड इंजनपिछला इंजन शॉर्टकट कुंजीपिछली इनपुट विधि:बाहर जाएँसक्रिय की गई इनपुट विधियों में चुनी गई इनपुट विधियों हटाएँपुनः प्रारंभ करेंइंजन क्रम को इनपुट विधि सूची में सहेजाकोई इनपुट विधि चुनें%s के लिए कुंजीपटल शॉर्टकर्ट चुनेंIBus वरीयताएँ सेट करेंवैश्विक इंजन विफल के रूप में सेट करें. ibus का आचरण सेट करें कि कैसे भाषा पट्टी को दिखाना या छिपाना हैलुकअप सारणी में कंडीडेट की दिशा सेट करेंसभी अनुप्रयोगों के बीच समान इनपुट विधि को साझा करेंतंत्र तश्तरी पर प्रतीक दिखाएँचुनी गई इनपुट विधि की सूचना दिखाएँइनपुट विधि नाम दिखाएँभाषा पट्टी पर इनपुट विधि नाम दिखाएँभाषा पट्टी पर इनपुट विधि नाम दिखाएँ जब जाँचपेटी जाँचा गया हैचुने गए इनपुट विधि का सेटअप दिखाएँलॉगिन पर ibus आरंभ करेंIBus डेमॉन चल नहीं रहा है. क्या आप इसे आरंभ करना चाहते हैं?सूची में अगली इनपुट विधि में जाने के लिए शॉर्टकट कुंजीसूची में पिछली इनपुट विधि में जाने के लिए शॉर्टकट कुंजीसूची में अगली इनपुट विधि में जाने के लिए शॉर्टकट कुंजियाँसूची में पिछली इनपुट विधि में जाने के लिए शॉर्टकट कुंजियाँइनपुट विधि को बंद करने के लिए शॉर्टकट कुँजियाँइनपुट विधि को चालू करने के लिए शॉर्टकट कुँजियाँइनपुट विधि को चालू या बंद रखने के लिए शॉर्टकट कुंजीऊपरी बायां कोनाऊपरी दाहिना कोनाशॉर्टकट कुंजी ट्रिगर करेंgtk_accelerator_parse के लिए शॉर्टकट कुंजी ट्रिगर करेंप्रयोग: %s COMMAND [OPTION...] मनपसंद फ़ॉन्ट का प्रयोग करेंभाषा पटल के लिए मनपसंद फ़ॉन्ट नाम का प्रयोग करेंमनपसंद फ़ॉन्ट का प्रयोग करें:लक्ष्य इनपुट विधि का प्रयोग करेंपिछले इनपुट विधि में जाने के लिए शिफ्ट के साथ शॉर्टकट का उपयोग करेंतंत्र कुंजीपट (XKB) लेआउट का प्रयोग करेंतंत्र कुंजीपट लेआउट का प्रयोग करेंलंबवतपरिचय (_A)जोड़ें (_A)लागू करें (_A)रद्द करें (_C)बंद करें (_C)मिटाएँ (_D)नीचे (_D)ठीक (_O)वरीयता (_P)हटाएँ (_R)ऊपर (_U)default:LTRभाषा: %s इनपुट विधि स्विच कर रहा हैराजेश रंजन (rranjan@redhat.com)ibus-1.5.22/po/it.gmo0000644000000000000000000004031713623751603011203 00000000000000 +17Oae#{oO<CLS c oyw "H #&J%g  ((@@-D%8M Uct y9   .I0 JW [ez  @C;9) ^J0 .%%Ke&|?=\d"x("7Rd9$1^2-!&8@_'" 4A8UO@D? D < .!-5!4c!!!!/! !/ "="]"'m""">" "# 9#E#N# m######### ### ### $$1$D$7%>2&q&&& &&&' !'r.'' i(;v(((( ((()))I)g))* 2*<*F\****F*",+0O+ +++ + ++ +A+A?,U,,3,7-fV---- - .. .I*.t.%}.. . ..0./4 0B0R0V0h0000 0 00 11C#1Bg1,111 2%2E;22.2l2?#3 c3>n33*3,34)54_4d4'4)4;4) 575?5*\555555. 6;6%V6|66T7=778V8&p868"8=8Y/9$939&9, :6:S:f:7}:j:% ;IF;I;I;=$<3b<0<B< =$=<=4\==3=#==D>`>>I>1>+?G? X?(b?*? ? ??????? ?@@ @3 @ T@"`@K@RMc-Km*Akw3`Q@$oX:qg+D]}Lu=0GvE1e OZ f| F Nn{Uz9p,/iV(P<j6'%)sxJbI[_ rdl>4;\HWTy5 tYha"C#87B~?2S!.&^"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAnnotations: %sAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:Choose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictCode point: %sCommands: Copied an emoji to your clipboard.Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDisable shortcut keysDisable:Do not showDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmoji annotation:Emoji shortcut keys for gtk_accelerator_parseEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFONTFavoritesFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLANGLanguage panel positionLanguage panel position:Language: %s List engine name onlyModifiers:More…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. NoneOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesRestartRestart ibus-daemonSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe registry cache is invalid. The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUnicode font:Unicode shortcut keys for gtk_accelerator_parseUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2020-02-16 14:38+0000 Last-Translator: Luigi Toscano Language-Team: Italian Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 3.10.3 "FONT" per i caratteri emoji sulla finestra degli emoji"LANG" per le annotazioni sulla finestra degli emoji. es. "en"%s è un comando sconosciuto! (Non implementato)...Tipo di carattere e stileSeleziona un metodo di inputDisposizione tastieraScorciatoie da tastieraAvvioIBus Il bus di input intelligente Sito web: https://github.com/ibus/ibus/wiki Il metodo di input attivo può essere commutato tra quelli selezionati nella lista sopra premendo i tasti di scelta rapida della tastiera o facendo clic sull'icona del pannello.InformazioniAggiunge il metodo selezionato ai metodi di input abilitatiAvanzateSempreAnnotazioni: %sAutore: %s Nasconde automaticamenteAngolo inferiore sinistroAngolo inferiore destroImpossibile collegarsi a IBus. Annullato scegliere un emoji.Orientamento dei candidati:Scegliere una lingua predefinita di dizionari emoji nella finestra di dialogo. Il valore di $lang viene applicato a /usr/share/ibus/dicts/emoji-$lang.dictPunto di codice: %sComandi: Copiato un emoji negli appunti.Copyright © 2007-2010 Peng Huang Copyright © 2007-2010 Red Hat, Inc.Creare cache del registroPersonalizzatoCarattere personalizzatoNome del tipo di carattere personalizzato per il pannello della linguaMantieni i prefissi dei nomi DConfLingua predefinita per il dizionario degli emojiDescrizione: Descrizione: %sDisabilita i tasti scorciatoiaDisabilita:Non mostrareFattoInserire il testo pre-modificatoInserire il testo pre-modificato nella finestra dell'applicazioneInserire il testo pre-modificato nella finestra dell'applicazioneInserisce il testo premodificato del metodo di input nella finestra dell'applicazioneAnnotazione emoji:Tasti scelta rapida Emoji per gtk_accelerator_parseAbilita per impostazione predefinita il metodo di inputAbilita per impostazione predefinita il metodo di input quando le applicazioni ottengono l'input focusAbilitare o disabilitare:Abilita i tasti scorciatoiaAbilita:Ordine motoriEsci ibus-daemonFONTPreferitiSegui il cursore di input nel caso in cui il pannello sia sempre visibileGeneraliAcquisizione motore globale fallita. Nascondi automaticamenteOrizzontalePannello IBusPreferenze di IBusImpossibile avviare il demone IBus in %d secondiIBus è stato avviato! Se non puoi utilizzare IBus aggiungi le seguenti righe in $HOME/.bashrc; successivamente eseguire una nuova registrazione sul desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibus"IBus è un bus di input intelligente per Linux/Unix.Metodo di inputKbdCodice del tasto:Disposizione tastiera: %s Scorciatoie da tastieraLANGPosizione pannello della linguaPosizione pannello della lingua:Lingua: %s Elenca solo il nome del motoreModificatori:Altro...Sposta in basso il metodo selezionato nei metodi di input abilitatiSposta in alto il metodo selezionato nei metodi di input abilitatiMotore dei tasti di scelta rapida successivoMetodo di input successivo:Nessun motore impostato. NessunoOrientamento della tabella di ricercaOrientamento della tabella di ricerca. 0 = Orizzontale, 1 = VerticaleAltroPremere un tasto (o una combinazione di tasti)Premere un tasto (o una combinazione di tasti). La finestra verrà chiusa dopo il rilascio del tasto stesso.Ritardo popup in millisecondi per la finestra del selettore IMEPreferenzePrefissi di chiavi DConf per arrestare la conversione dei nomiPre-carica i motoriPrecarica i motori durante l'avvio di ibusMotore dei tasti di scelta rapida precedenteMetodo di input precedente:Stampare l'indirizzo D-Bus di ibus-deamonEsciValore RGBA dell'icona XKBLeggere la cache del registro dei FILE.Leggere la cache del registro di sistema.Rimuove il metodo selezionato dai metodi di input abilitatiReimpostare i valori della configurazioneRiavviaFai ripartire il demone ibusSalvare emoji sulla finestra degli appuntiOrdine motori salvati nell'elenco del metodo di inputNumero di versione salvataSelezionare una linguaSeleziona un metodo di inputSelezione delle scorciatoie da tastiera per %sImposta Preferenze di IBusImpostazione motore globale fallita. Impostare od ottenere motoreImposta 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.Imposta il comportamento di IBus su come mostrare o nascondere la barra della linguaImposta l'orientamento dei candidati nella tabella di ricercaCondivide lo stesso metodo di input tra le applicazioniMostra motori disponibiliMostrare l'icona nell'area di notificaMostra le informazioni sul metodo di input selezionatoMostra il nome del metodo di inputMostrare il nome del metodo di input nella barra della linguaQuando la casella è spuntata mostra il nome del metodo di input nella barra della linguaMostra il pannello delle proprietà:Mostra l'impostazione dell'input method selezionatoMostrare i valori della configurazioneMostra il contenuto della cache del registroMostrare questa informazioneMostra la versioneAvvia IBus all'accessoIl demone IBus non è in esecuzione. Desideri avviarlo?Comportamento del pannello proprietario. 0 = Non mostrare, 1 = Nascondi automaticamente, 2 = Mostra sempreLa cache del registro non è valida. I tasti scorciatoia per passare al metodo di input successivo nell'elencoI tasti scorciatoia per passare al metodo di input precedente nell'elencoI tasti scorciatoia per passare al metodo di input successivo nell'elencoI tasti scorciatoia per passare al metodo di input precedenteI tasti scorciatoia per disabilitare l'input methodI tasti scorciatoia per abilitare l'input methodI tasti scorciatoia per abilitare o disabilitare i metodi di inputAngolo superiore sinistroAngolo superiore destroTasto di scelta rapida di avvioAttiva i tasti scorciatoia per gtk_accelerator_parseCarattere Unicode:Tasti scorciatoia Unicode per gtk_accelerator_parseUtilizzo: %s COMANDO [OPZIONE...] Usare carattere personalizzatoUsa un tipo di carattere personalizzato per il pannello della linguaUsare carattere personalizzato:Usa il metodo di input globaleUsa i tasti scorciatoia e shift per passare al metodo di input successivoUsa la disposizione di tastiera del sistema (XKB)Usa la disposizione di tastiera del sistemaUtilizza xmodmapVerticaleScrivere la cache del registro dei FILE.Scrivere la cache del registro di sistema.I_nformazioniA_ggiungiA_pplicaA_nnulla_ChiudiEli_mina_Giù_OKPreferen_ze_Rimuovi_Sudefault:LTRLista di emoji preferite sulla finestra degli emojilingua: %s selezione metodi di input in corsoLaunchpad Contributions: Sergio Zanchetta https://launchpad.net/~primes2hibus-1.5.22/po/gu.gmo0000644000000000000000000005562513623751603011212 000000000000004L     # 1Hboq<  ": RH] # 4 =IN(a(@DXk 9 ".3b02c  '? X!f @C6Pcv9)^0[ .%&.UZq? #J7( '991s2-6&M@t'"3 IV8jO'Qm@D\D<.#-R4/C `  '   > !A! \!h!q! !!######## ### # #$$+$/%.&B&0F&[w&,&2' 3'T'f' K)X)) **%/*9U*9*7*,+.+H@+8++%+V+?U,,H,, -*-*:-be-b-+.e./</?$0d0x0800g1h}1"1 22^.22U)4/4"555*5+6)?63i66P6C7D7[7n78<8391G98y9W9 :o::~~;;<<<n<EE=<=D= >.+>?Z>L>>a?B?9@0W@@nK).LXMMyNOiOlOkP9Q9YQ/QOQR)R;Rm SExSTSTTTNT?U ^U9kUFUUYY$YZ/Z!HZjZZZZZ ZZL[AS[cp{C~fB}*X /ntZ7TbQ%@ SFOgV)`w=?6jsd_Au 3+h\$ imI]M&Dk"zlErx:1N8-J(^|HGRW;[L4y!K Yqa5eP0,2vU9<>#'o.%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.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.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Latin layouts which have no ASCIIList engine name onlyModifiers:More…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.Saved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.Usage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2018-02-20 04:22-0500 Last-Translator: Copied by Zanata Language-Team: Gujarati (http://www.transifex.com/projects/p/ibus/language/gu/) Language: gu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 3.9.6 %s એ અજ્ઞાત આદેશ છે! (અમલીકરણ થયેલ નથી)...ફોન્ટ અને શૈલીઓવૈશ્ર્વિક ઇનપુટ પદ્દતિ સુયોજનોકિબોર્ડ લેઆઉટકિબોર્ડ ટૂંકાણોશરૂઆત કરોIBus હોશિયાર ઇનપુટ બસ ઘરપાનું: https://github.com/ibus/ibus/wiki કિબોર્ડ ટૂંકાણ કીને દબાવીને અથવા પેનલ ચિહ્ન પર ક્લિક કરીને ઉપરની યાદીમાં પસંદ થયેલ એકમાંથી સક્રિય ઇનપુટ પદ્દતિને બદલી શકાય છે.વિશેસક્રિય થયેલ ઇનપુટ પદ્દતિઓમાં પસંદ થયેલ ઇનપુટ પદ્દતિને ઉમેરોઉન્નતહંમેશાલેખક: %s આપમેળે છુપાવોનીચે ડાબી બાજુનો ખૂણોનીચે જમણી બાજુનો ખૂણોIBus માં જોડી શકાતુ નથી. ઉમેદવારોની દિશા:આદેશો: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.રજીસ્ટરી કેશને બનાવોવૈવિધ્યવૈવિધ્ય ફોન્ટભાષા પેનલ માટે વૈવિધ્ય ફોન્ટ નામDConf નામ ઉપસર્ગને સાચવે છેવર્ણન: ટૂંકાણ કીઓને નિષ્ક્રિય કરોનિષ્ક્રિય:બતાવશો નહિપૂર્ણબેસાડેલ Preedit લખાણકાર્યક્રમ વિન્ડોમાં બેસાડેલ Preedit લખાણકાર્યક્રમ વિન્ડોમાં બેસાડેલ Preedit લખાણકાર યક્મ વિન્ડોમાં ઇનપુટ પદ્દતિનાં preedit લખાણને બેસાડોમૂળભૂત રીતે ઇનપુટ પદ્દતિને સક્રિય કરોમૂળભૂત રીતે ઇનપુટ પદ્દતિને સક્રિય કરો જ્યારે કાર્યક્રમને ઇનપુટ ફોકસ મળે છેસક્રિય અથવા નિષ્ક્રિય:ટૂંકાણ કીઓને સક્રિય કરોસક્રિય:એંજિન ક્રમibus-daemon માંથી બહાર નીકળોસ્થિતિમાં ઇનપુટ કર્સરને અનૂસરો જે પેનલ હંમેશા બતાવેલ હોયસામાન્યવૈશ્ર્વિક એંજિનને મેળવવામાં નિષ્ફળતા. આપોઆપ છુપાવોઆડુIBus પસંદગીઓIBus ડિમન %d સેકંડમાં શરૂ કરી શક્યા નહિંIBus ને શરૂ કરી દેવામાં આવી છે! જો તમે IBus ને વાપરી શકતા ન હોય તો, તમારી $HOME/.bashrc માં નીચેના વાક્યોને ઉમેરો; પછી ડેસ્કટોપમાં પુન:લોગ કરો. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus એ Linux/Unix માટે હોશિયાર ઇનપુટ બસ છે.જો true હોય તો, પેનલ હંમેશા બતાવેલ છે તે સ્થિતિમાં ઇનપુટ કર્સરને અનૂસરે છે. જો false હોય તો, પેનલ સુધારેલ સ્થાન પર બતાવેલ છે.ઇનપુટ પદ્દતિKbdકિ કોડ:કિબોર્ડ લેઆઉટ: %s કિબોર્ડ ટૂંકાણોભાષા પેનલ સ્થાનભાષા પેનલનું સ્થાન:ભાષા: %s લેટિન લેઆઉટ કે જેની પાસે ASCII નથીફક્ત એંજિન નામની યાદી કરોબદલનારો:વધારે...સક્રિય થયેલ ઇનપુટ પદ્દતિઓમાં પસંદ થયેલ ઇનપુટ પદ્દતિને નીચે ખસેડોસક્રિય થયેલ ઇનપુટ પદ્દતિઓ યાદીમાં પસંદ થયેલ ઇનપુટ પદ્દતિને ઉપર ખસેડોપછીની એંજિન ટૂંકાણ કીઓપછીની ઇનપુટ પદ્દતિ:એજિંન સુયોજિત નથી. કોષ્ટકને જોવાની દિશાકોષ્ટકને જોવાની દિશા. 0 = આડુ, 1 = ઊભુ બીજામહેરબાની કરીને કી ને દબાવો (અથવા કી સંયોજન)મહેરબાની કરીને કીને દબાવો (અથવા કી સંયોજન). સંવાદ એ બંધ થયેલ હશે જ્યારે કી પ્રકાશિત થયેલ હોય તો.IME સ્વીચર વિન્ડો માટે પોપઅપનો મિલીસેકંડનો વિલંબપસંદગીઓ નામનું રૂપાંતરણને બંધ કરવા માટે DConf કીઓનાં ઉપસર્ગોએંજિનોને ફરીથી લોડ કરોibus શરૂ કરવા દરમ્યાન એંજિનોને ફરીથી લોડ કરોપહેલાંની એંજિન ટૂંકાણ કીઓપહેલાંની ઇનપુટ પદ્દતિ:ibus-daemon નાં D-Bus સરનામાંને છાપોબહાર નીકળો XKB ચિહ્નની RGBA કિંમતરજીસ્ટરી કેશ FILE ને વાંચો.સિસ્ટમ રજીસ્ટરી કેશને વાંચો.સક્રિય થયેલ ઇનપુટ પદ્દતિઓ માંથી પસંદ થયેલ ઇનપુટ પદ્દતિને દૂર કરોરૂપરેખાંકન કિંમતોને પુન:સુયોજિત કરોપુન:સુયોજિત કરી રહ્યા છે..પુન:શરૂ કરોibus-daemon ને પુન:શરૂ કરોxmodmap ને ચલાવો જો .xmodmap અથવા .Xmodmap અસ્તિત્વમાં હોય જ્યારે ibus એંજિન બદલેલ હોય.ઇનપુટ પદ્દતિ યાદીમાં સંગ્રહેલ એંજિન ક્રમસંગ્રહેલ આવૃત્તિ નંબરઇનપુટ પદ્દતિને પસંદ કરો%s માટે કિબોર્ડ ટૂંકાણોને પસંદ કરોIBus પસંદગીઓને સુયોજિત કરોવૈશ્ર્વિક એંજિનને સુયોજિત કરવામાં નિષ્ફળતા. એંજિનને સુયોજિત અથવા મેળવોભાષા પેનલને કેવી રીતે બતાવવી અથવા છુપાડવી તે માટે ibus નાં વર્ણતૂકને સુયોજિત કરોકોષ્ટક જોવામાં સભ્યોની દિશાને સુયોજિત કરોબધા કાર્યક્રમોમાં એજ ઇનપુટ પદ્દતિને વહેંચોઉપલબ્ધ એંજિનને બતાવોસિસ્ટમ ટ્રે પર ચિહ્નને બતાવોપસંદ થયેલ ઇનપુટ પદ્દતિની જાણકારીને બતાવોઇનપુટ પદ્દતિ નામને બતાવોભાષા પેનલ પર ઇનપુટ પદ્દતિ નામને બતાવોજ્યારે ચેકબોક્સને ચકાસતા હોય ત્યારે ભાષા પેનલ પર ઇનપુટ પદ્દતિનાં નામને બતાવોગુણધર્મ પેનલ બતાવો:પસંદ થયેલ ઇનપુટ પદ્દતિનાં સુયોજનને બતાવોરૂપરેખાંકન કિંમતોને બતાવોરજીસ્ટરી કેશનાં સમાવિષ્ટને બતાવોઆ જાણકારીને બતાવોઆવૃત્તિને બતાવોપ્રવેશ પર ibus ને શરૂ કરોIBus ડિમન ચાલી રહ્યુ નથી. શું તમે તેને શરૂ કરવા ઇચ્છો છો?ગુણધર્મ પેનલનું વર્તન. 0 = બતાવો નહિં, 1 = આપમેળે છુપાડો, 2 = હંમેસા બતાવોગુણધર્મ પેનલને બતાવવા માટે મિલિસેકંડપ્રકાશિત થાય પછી ગુણધર્મ પેનલને બતાવવા માટે મિલિસેકંડ અથવા ગુણધર્મો બદલેલ છેરજીસ્ટરી કેશ અયોગ્ય છે. પહેલાંની સ્થાપિત થયેલ ibus અને હાલની ibus ની એકની આવૃત્તિ વચ્ચે તફાવત ચકાસવા માટે સંગ્રહેલ આવૃત્તિ નંબરને વાપરેલ હશે.યાદીમાં પછીની ઇનપુટ પદ્દતિને ખસેડવા માટે ટૂંકાણ કીઓયાદીમાં પહેલાંની ઇનપુટ પદ્દતિને ખસેડવા માટે ટૂંકાણ કીઓયાદીમાં પછીની ઇનપુટ પદ્દતિને બદલવા માટે ટૂંકાણ કીઓયાદીમાં પહેલાંની ઇનપુટ પદ્દતિને લાવવા માટે ટૂંકાણ કીઓઇનપુટ પદ્દતિને બંધ કરવા માટે ટૂંકાણ કીઓઇનપુટ પદ્દતિને ચાલુ કરવા માટે ટૂંકાણ કીઓઇનપુટ પદ્દતિને ફેરબદલી કરવાનું ચાલુ અથવા ા બંધ કરવા માટે ટૂંકાણ કીઓઉંચે ડાબી બાજુનો ખૂણોઉંચે જમણી બાજુનો ખૂણોટ્રીગર ટૂંકાણ કીઓgtk_accelerator_parse માટે ટ્રીગર ટૂંકાણ કીUS લેઆઉટ એ લેટિન લેઆઉટ સાથે જોડાયેલ છે. ચલને કાઢી શકાય છે.વપરાશ: %s COMMAND [OPTION...] વૈવિધ્ય ફોન્ટને વાપરોભાષા પેનલ માટે વૈવિધેય ફોન્ટ નામ ને વાપરોવૈવિધ્યપૂર્ણ ફોન્ટ વાપરો:વૈશ્ર્વિક ઇનપુટ પદ્દતિને વાપરોપહેલાંની ઇનપુટ પદ્દતિને બદલવા shift સાથે ટૂંકાણ વાપરોસિસ્ટમ કિબોર્ડ (XKB) લેઆઉટને વાપરોસિસ્ટમ કિબોર્ડ લેઆઉટને વાપરોxmodmap ને વાપરોઊભુંરજીસ્ટરી કેશ FILE ને લખો.સિસ્ટમ રજીસ્ટરી કેશને લખો.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 માં ફ્લોટીંગ પોઇંટ કિંમત છે.વિશે (_A)ઉમેરો (_A)અમલમાં મૂકો (_A)રદ કરો (_C)બંધ કરો (_C)કાઢી નાંખો (_D)નીચે કરો (_D)બરાબર (_O)પસંદગીઓ (_P)દૂર કરો (_R)ઉપર કરો (_U)default:LTRભાષા: %s ઇનપુટ પદ્દતિને બદલી રહ્યા છેશ્ર્વેતા કોઠારી ibus-1.5.22/po/es.po0000644000000000000000000031314113623751600011025 00000000000000# Spanish translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2019 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # Alberto Castillo , 2016. #zanata # Máximo Castañeda Riloba , 2016. #zanata # Omar Berroterán S. , 2016. #zanata # Waldo Ribeiro , 2016. #zanata # Máximo Castañeda Riloba , 2017. #zanata # fujiwara , 2017. #zanata # Máximo Castañeda Riloba , 2018. #zanata # fujiwara , 2018. #zanata # Máximo Castañeda Riloba , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2019-03-02 11:55+0000\n" "Last-Translator: Máximo Castañeda Riloba \n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 4.6.2\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Precargar máquinas" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Precargar los motores durante el inicio de ibus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Orden de las máquinas" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Orden de las máquinas guardada en la lista de métodos de entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Retraso en milisegundos de Popup para ventana del interruptor IME" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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 en milisegundos para mostrar la ventana del selector IME. " "El valor predeterminado es 400. 0 = Muestra la ventana inmediatamente. 0 < " "Demora en milisegundos. 0 > No muestra la ventana ni los motores siguientes " "o anteriores." #: data/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Número de versión guardada" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Disposiciones latinas que no tienen ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 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/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Usar xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 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/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Usar la distribución del teclado del sistema" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Usar la distribución del teclado del sistema (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Insertar texto preeditado" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Insertar texto previamente editado en la ventana de la aplicación" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Utilizar método de entrada global" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Compartir el mismo método de entrada con todas las aplicaciones" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Habilitar método de entrada por defecto" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "Habilitar método de entrada por defecto cuando la aplicación consigue el " "foco de entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf preserva los prefijos de nombres" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefijos para las claves de DConf para parar la conversión de nombres" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Activadora de los Atajos de teclado" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Atajo de teclado para encender o apagar el método de entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Activador de llaves de atajos para leer gtk_accelerator " #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Habilitar atajos de teclado" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Los atajos de teclado para habilitar el método de entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Deshabilitar atajos de teclado" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Los atajos de teclado para deshabilitar el método de entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Atajo de teclado para el siguiente motor" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 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/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Atajo de teclado para la máquina previa" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 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/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Auto Ocultar" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 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/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Posición del panel de idioma" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 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/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Los milisegundos para mostrar el panel de propiedad" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 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/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orientación de la tabla de búsqueda" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientación de la tabla de búsqueda. 0 = Horizontal, 1 = Vertical" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Mostrar un ícono en la bandeja del sistema" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Mostrar el nombre del método de entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Mostrar el nombre del método de entrada en la barra de idioma" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "Valor RGBA del ícono XKB" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "Los milisegundos para mostrar el icono del panel para una propiedad" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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 "" "Los milisegundos para mostrar el icono del panel desde el icono del motor a " "un icono de la propiedad cada vez que los motores se encienden si la " "propiedad se especifica por el valor de icono-prop-clave en IBusEngineDesc. " "Si el valor es 0, no hay tiempo de retardo y el icono de la propiedad se " "muestra inmediatamente." #: data/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Usar fuente personalizada" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Usar nombre de fuente personalizado para el panel de idioma" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Fuente personalizada" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Nombre de fuente personalizado para el panel de idioma" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Atajos de teclado Unicode para gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Los atajos de teclado para activar y desactivar la escritura Unicode" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Atajos de teclado de emoji para gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "Los atajos de teclado para activar y desactivar la escritura de emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" "Nombre de fuente personalizada para caracteres emoji en el diálogo de emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Idioma predeterminado para el diccionario de emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Elija un idioma predeterminado para el diccionario de emoji. Su valor " "($lang) se aplica a /usr/share/ibus/dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "lista de emoji favoritos en el diálogo de emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Puede mostrar sus emoji favoritos en la lista de emoji si los incluye en " "esta lista." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "lista de anotaciones de emoji favoritos en el diálogo de emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "Puede poner anotaciones a sus emoji favoritos en esta lista." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" "Si se permiten o no las coincidencias parciales en las anotaciones de emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Si se puede obtener una coincidencia parcial en la búsqueda de anotaciones " "de emoji en lugar de una exacta." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" "Realizar búsquedas en las anotaciones de emoji con la longitud de texto " "indicada" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Obtener coincidencias parciales en lugar de exactas en las anotaciones de " "emoji que tengan más que el número de caracteres indicado " #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" "Elija una condición para las coincidencias parciales de anotaciones de emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Elija una de estas condiciones para las coincidencias parciales de " "anotaciones de emoji: 0 == inicio del texto, 1 == final del texto, 2 == " "contiene el texto." #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Cargar los datos de emoji al inicio" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Cargar los datos de emoji al inicio. Se necesitan alrededor de 10MB. Si está " "desactivado, se cargarán al abrir el cuadro de selección de emoji." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Cargar los datos de Unicode al inicio" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Cargar los datos de Unicode al inicio. Se necesitan alrededor de 15MB. Si " "está desactivado, se cargarán al abrir el cuadro de selección de emoji. Los " "datos de Unicode sólo se cargarán después de los de emoji, incluso cuando " "esta opción esté activa." #: 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:209 msgid "Other" msgstr "Otro" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Elija un idioma" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Cancelar" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_Aceptar" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Más..." #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Acerca de" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Cerrar" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Idioma: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Distribución del teclado: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Descripción:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Seleccione un método de entrada" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Añadir" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Métodos de Entrada" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Preferencias de IBus" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Defina las preferencias de IBus" #: setup/keyboardshortcut.py:55 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/main.py:121 setup/main.py:588 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:515 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:536 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:550 #, 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:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Seleccione la tecla de atajo para %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "cambiando métodos de entrada" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horizontal" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertical" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Esquina superior izquierda" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Esquina superior derecha" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Esquina inferior izquierda" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Esquina inferior derecha" #: setup/setup.ui:37 msgid "Custom" msgstr "Personalizado" #: setup/setup.ui:48 msgid "Do not show" msgstr "No mostrar" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Ocultar automáticamente" #: setup/setup.ui:54 msgid "Always" msgstr "Siempre" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Siguiente método de entrada:" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Método de entrada anterior:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Habilitar o inhabilitar:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Habilitar:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Inhabilitar:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Establecer la orientación de los candidatos en la tabla de búsqueda" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Orientación de los candidatos:" #: setup/setup.ui:407 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:409 msgid "Show property panel:" msgstr "Mostrar panel de propiedades:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Posición del panel de idioma:" #: setup/setup.ui:494 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:508 msgid "Embed preedit text in application window" msgstr "Insertar texto previamente editado en la ventana de la aplicación" #: setup/setup.ui:513 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:527 msgid "Use custom font:" msgstr "Usar fuente personalizada:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Fuente y Estilo" #: setup/setup.ui:579 msgid "General" msgstr "General" #: setup/setup.ui:671 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:682 msgid "_Remove" msgstr "_Quitar" #: setup/setup.ui:689 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:700 msgid "_Up" msgstr "_Subir" #: setup/setup.ui:707 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:718 msgid "_Down" msgstr "_Bajar" #: setup/setup.ui:725 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:736 msgid "_About" msgstr "Acerca _de" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Mostrar información sobre el método de entrada seleccionado" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Preferencias" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Mostrar la configuración del método de entrada seleccionado" #: setup/setup.ui:812 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." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" "Los atajos de teclado para activar las conversiones de las anotaciones de " "emoji o nombre Unicode" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Anotación emoji:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" "Los atajos de teclado para activar las conversiones de los códigos Unicode" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Código Unicode:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "Fuente a usar para los candidatos Unicode en el cuadro de emoji." #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Fuente Unicode:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Idioma a usar en el cuadro de emoji para las anotaciones de los mismos" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Idioma para las anotaciones de emoji:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Realizar búsqueda parcial en las anotaciones de emoji con la siguiente " "condición y más que un mínimo de caracteres:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Si se puede obtener una coincidencia parcial en lugar de exacta en la " "búsqueda de anotaciones de emoji." #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Comienza con el texto" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Acaba con el texto" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Contiene el texto" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emoji" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Distribución del teclado" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Configuraciones globales de método de entrada" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Avanzado" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "Iniciar ibus al ingresar" #: setup/setup.ui:1358 msgid "Startup" msgstr "Inicio" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Actividades" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Animales y naturaleza" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Componente" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Banderas" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Comida y bebida" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Objetos" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "Gente y cuerpo" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "Emociones" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Símbolos" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Viajes y lugares" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Latino básico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Latino-1 (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Latino extendido-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Latino extendido-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "Extensiones IPA" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Modificadores del espaciado" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Marcas diacríticas combinantes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Griego y copto" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Cirílico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Cirílico (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Armenio" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Hebreo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Árabe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Sirio" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Árabe (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "N'Ko" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Samaritano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandeo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Sirio (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Árabe extendido-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Devanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengalí" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmukhi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Gujarati" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Oriya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tamil" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Telugu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Kannada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malayalam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Sinhala" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Tailandés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Lao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tibetano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Myanmar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Georgiano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Hangul Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Etíope" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Etíope (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Cheroqui" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Silabarios indígenas canadienses" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Rúnico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Tagalo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunóo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buhid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Tagbanwa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Jemer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Mongol" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Silabarios indígenas canadienses extendidos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai Le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Nuevo Tai Lue" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Jemer (símbolos)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Buginés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Tai Tham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Marcas diacríticas combinantes extendidas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Balinés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Sondanés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepcha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ol Chiki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Cirílico extendido-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "Georgiano extendido" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Sondanés (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Extensiones vedas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Extensiones fonéticas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Extensiones fonéticas (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Marcas diacríticas combinantes (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Latino extendido adicional" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Griego extendido" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Puntuación general" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Superíndices y subíndices" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Símbolos monetarios" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Marcas diacríticas combinantes para símbolos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Símbolos similares a letras" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Formas numéricas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Flechas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Operadores matemáticos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Técnicos variados" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Descriptores de control" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Reconocimiento óptico de caracteres" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Alfanuméricos encerrados" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Dibujos de cuadros" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Bloques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Formas geométricas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Símbolos variados" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Caracteres gráficos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Símbolos matemáticos variados A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Flechas suplementarias A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Patrones Braille" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Flechas suplementarias B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Símbolos matemáticos variados B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Operadores matemáticos suplementarios" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Símbolos y flechas variados" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Glagolítico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Latino extendido-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Copto" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Georgiano (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinag" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Etíope extendido" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Cirílico extendido-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Puntuación (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "CJK, radicales (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Kangxi (radicales)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Caracteres ideográficos de descripción" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "CJK, símbolos y puntuación" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Jamo con compatibilidad hangul" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Bopomofo extendido" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "CJK, trazos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Katakana, extensiones fonéticas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "CJK, letras y meses encerrados" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "CJK (compatibilidad)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "CJK, ideogramas unificados extensión A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Hexagramas del I-Ching" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "CJK, ideogramas unificados" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Yi, sílabas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Yi, radicales" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Vai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Cirílico extendido-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Shümom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Letras modificadoras del tono" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Latino extendido-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Syloti Nagri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Formas numéricas índicas comunes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "'Phags-pa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurashtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Devanagari extendido" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Hangul Jamo extendido-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Javanés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Myanmar extendido-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Cham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Myanmar extendido-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tai Viet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Meetei Mayek, extensiones" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Etíope extendido-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Latino extendido-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Cheroqui (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Hangul, sílabas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Hangul Jamo extendido-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Subrogaciones altas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Subrogaciones altas de uso privado" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Subrogaciones bajas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Área de uso privado" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "CJK, ideogramas de compatibilidad" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Formas de presentación alfabética" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Formas de presentación árabes-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Selectores de variación" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Formas verticales" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Marcas intermedias combinantes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "CJK, formas de compatibilidad" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Variantes de formas pequeñas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Árabe, formas de presentación B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Formas de ancho completo e intermedio" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Especiales" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Silabario lineal B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Ideogramas lineales B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Números egeos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Números de griego antiguo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Símbolos antiguos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Disco de Festo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Licio" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Cario" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Números epact coptos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Italo antiguo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gótico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Pérmico antiguo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ugarítico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Persa antiguo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Deseret" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Shaviano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmanya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Elbasano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Albanocaucásico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Lineal A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Silabario chipriota" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "Arameo imperial" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Palmireno" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nabateo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Hatrano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Fenicio" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lidio" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Meroítico, jeroglíficos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Meroítico, cursiva" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Karosti" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Árabe meridional antiguo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Árabe del norte antiguo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Maniqueo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Avéstico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Parto, inscripciones" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Pahlaví, inscripciones" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Pahlaví, salmos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Turco antiguo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Húngaro antiguo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "Hanifi rohinyá" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Numerales rumi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "Sogdiano antiguo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "Sogdiano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Brahmi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaithi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Sora Sompeng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Chakma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Mahajani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Sharada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Sinhala, numerales antiguos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Khojki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Multani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Khudawadi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Grantha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Newa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Tirhuta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Siddham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Modi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Mongol (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Dogra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Warang Citi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Zanabazar cuadrada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Soyombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Masaram Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Gunjala Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Macasar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Cuneiforme" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Cuneiforme, números y puntuación" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Cuneiforme arcaico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Jeroglíficos egipcios" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Jeroglíficos anatolios" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Shümom (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mro" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Pahawh Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Medefidrin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Pollard Miao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Símbolos y puntuación ideográfica" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Tangut" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Tangut, componentes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Kana (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Kana extendido-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Nü shu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Duployana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Taquigrafía, controles de formato" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Símbolos musicales biznatinos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Símbolos musicales" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Notación musical del griego antiguo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "Numeración maya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Tai Xuan Jing" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Varillas de numeración" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Símbolos matemáticos alfanuméricos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Lengua de signos Sutton" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Glagolítico (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Silabario ki-ka-ku" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "Números índicos siyah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Símbolos alfabéticos matemáticos árabes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Fichas de Mahjong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Fichas de dominó" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Naipes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Alfanuméricos encerrados (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Ideogramas encerrados (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Símbolos y pictogramas varios" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Emoticonos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Pictogramas ornamentales" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Símbolos de transporte y mapas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Símbolos alquímicos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Formas geométricas extendidas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Flechas (suplemento-C)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Símbolos y pictogramas (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "Símbolos de ajedrez" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "CJK, ideogramas unificados extensión B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "CJK, ideogramas unificados extensión C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "CJK, ideogramas unificados extensión D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "CJK, ideogramas unificados extensión E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "CJK, ideogramas unificados extensión F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "CJK, ideogramas de compatibilidad (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Etiquetas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Selectores de variación (suplemento)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Área suplementaria de uso privado A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Área suplementaria de uso privado B" #: tools/main.vala:51 msgid "List engine name only" msgstr "Listar sólo los nombres de máquinas" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "No se puede conectar a IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "idioma: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "No se configuró la máquina.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Falló la configuración de la máquina global.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Falló al obtener la máquina global.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Lea el cache del registro del sistema." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Lea el ARCHIVO de caché del registro." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "El caché del registro es inválido.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Escriba al caché del registro del sistema." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Escriba al ARCHIVO caché del registro." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "Usar rutas de esquema del motor en lugar del núcleo ibus." #: tools/main.vala:381 msgid "Resetting…" msgstr "Restableciendo..." #: tools/main.vala:399 msgid "Done" msgstr "Hecho" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Ponga u obtenga una máquina" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Detener el ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "Mostrar las máquinas disponibles" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(no implementado)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Reiniciar el ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "Mostrar la versión" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Mostrar el contenido del caché del registro" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Crear el caché del registro" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Imprimir la dirección de D-Bus de ibus-daemon" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Mostrar los valores de la configuración" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Restablecer los valores de la configuración" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Guardar emoji del diálogo en el portapapeles." #: tools/main.vala:458 msgid "Show this information" msgstr "Mostrar esta información" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Uso: %s COMANDO [OPCIÓN...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Comandos:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "¡%s es un comando desconocido!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Favoritos" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Otros" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Abrir selección Unicode" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Volver a la selección emoji" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Siguiente" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Anterior" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Mostrar variantes de emoji" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Cerrar" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Menú" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Pulse para ver mensaje de aviso" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Cargando un diccionario Unicode:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Punto de código: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Tiene variantes emoji" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Descripción: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Ninguna" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Anotaciones: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Nombre: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Alias: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Selección de emoji" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Selección Unicode" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "No se pudo obtener la aplicación de texto actual, por favor devuélvala el " "foco (por ejemplo, pulse escape varias veces para salir del modo emoji, haga " "clic en el escritorio y de nuevo en su aplicación." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Cancelada la selección de emoji." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Se copió un emoji al portapapeles." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "FUENTE para los emoji en el cuadro de diálogo de emoji" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "FUENTE" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" "IDIOMA para las anotaciones en el cuadro de diálogo de emoji (p.ej.: \"es\")." #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "IDIOMA" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Se permiten coincidencias parciales en las anotaciones de emoji" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Buscar coincidencias con la longtud indicada" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Buscar coincidencias con la condición indicada por el código" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "Panel IBus" #: ui/gtk3/panel.vala:1095 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:1099 msgid "translator-credits" msgstr "Créditos de Traducción" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Preferencias" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Reiniciar" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/bn_IN.gmo0000644000000000000000000006166613623751603011566 000000000000004L     # 1Hboq<  ": RH] # 4 =IN(a(@DXk 9 ".3b02c  '? X!f @C6Pcv9)^0[ .%&.UZq? #J7( '991s2-6&M@t'"3 IV8jO'Qm@D\D<.#-R4/C `  '   > !A! \!h!q! !!######## ### # #$$+$4%'&.&-2&d`&9&4&4'T'a'Y)o)*/*B*K`*5*5*I+<b+++Hb,$,1,-h- .F.)d...Y.//k0r<11F2=2 :3.[3>33V4bi4;450!5`R55J7L7"&9I9M91c9-9A9B:H:OZ::/;I;Y;.<X=9\=L=3=z>>i>??@@CAtcATAB-BNpBB(BCCTECCW\DDDLD6EE>eFUF^FVYGeG:HQHHIA;Jo}JJ\KKlLB6MyMDM`>N#N%NMNw7OOfPP?Q R"SSTU}lV}VhW5#X5YX8XhX1YDYQ,Z~ZR#[?v[[o\i\*b]]F]W]B^ab$!bFb[b!zbbbb!bb cc;.cKjccp{C~fB}*X /ntZ7TbQ%@ SFOgV)`w=?6jsd_Au 3+h\$ imI]M&Dk"zlErx:1N8-J(^|HGRW;[L4y!K Yqa5eP0,2vU9<>#'o.%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.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.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Latin layouts which have no ASCIIList engine name onlyModifiers:More…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.Saved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.Usage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2018-02-20 04:21-0500 Last-Translator: Copied by Zanata Language-Team: Bengali (India) Language: bn_IN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 3.9.6 %s একটি অজানা কমান্ড! (বাস্তবায়িত নয়)...ফন্ট ও বিন্যাসইনপুট পদ্ধতির সার্বজনীন বৈশিষ্ট্যকি-বোর্ডের বিন্যাসকি-বোর্ড শর্ট-কাটপ্রারম্ভIBus বুদ্ধিবিশিষ্ট ইনপুট বাস হোম-পেজ: https://github.com/ibus/ibus/wiki কীবোর্ড শর্টকাট কী টিপে বা প্যানেল অাইকনে ক্লিক করে, উপরের তালিকায় নির্বাচিতটি থেকে সক্রিয় ইনপুট পদ্ধতি পাল্টানো যেতে পারে।পরিচিতিনির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকা যোগ করা হবেউন্নতসর্বদানির্মাতা: %s স্বয়ংক্রিয়ভাবে আড়াল করা হবেনীচে বাঁদিকের কোণায়নীচে ডানদিকের কোণায়IBus-র সাথে সংযোগ করতে ব্যর্থ। নির্বাচিত বস্তুর দিশা:কমান্ড: স্বত্বাধিকার (c) ২০০৭-২০০৯ পেং হুয়াং স্বত্বাধিকার (c) ২০০৭-২০০৯ Red Hat, Inc.রেজিস্ট্রি ক্যাশ তৈরি করুনস্বনির্ধারিতস্বনির্ধারিত ফন্টভাষার প্যানেলের জন্য ব্যবহারযোগ্য স্বনির্ধারিত ফন্টের নামDConf দ্বারা নেম প্রেফিক্স সংরক্ষণ করা হবেবিবরণ: শর্ট-কাট কি নিষ্ক্রিয় করুননিষ্ক্রিয় করুন:দেখাবেন নাসম্পন্নপ্রি-এডিট টেক্সট সন্নিবেশ করা হবেঅ্যাপ্লিকেশন উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবেঅ্যাপ্লিকেশনের উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবেঅ্যাপ্লিকেশনের উইন্ডোর মধ্যে ইনপুট পদ্ধতির প্রি-এডিট টেক্সট সন্নিবেশ করা হবেডিফল্ট অবস্থায় ইনপুট পদ্ধতি সক্রিয় করা হবেইনপুট প্রাপ্ত করার উদ্দেশ্যে অ্যাপ্লিকেশনে ফোকাস করা হলে, ডিফল্ট রূপে ইনপুট পদ্ধতি সক্রিয় করা হবেসক্রিয় অথা নিষ্ক্রিয় করুন:শর্ট-কাট কি সক্রিয় করুনসক্রিয় করুন:ইঞ্জিনের অনুক্রমibus-daemon থেকে প্রস্থান করুনপ্যানেল সর্বদা দেখানো হলে, ইনপুট কার্সার অনুসরণ করুনসাধারণগ্লোবাল ইঞ্জিন প্রাপ্ত করতে ব্যর্থ। স্বয়ংক্রিয় ভাবে লুকানঅনুভূমিকIBus সংক্রান্ত পছন্দIBus ডেমনটি %d সেকেন্ডে আরম্ভ করা যায়নি।IBus আরম্ভ করা হয়েছে! IBus ব্যবহার করা সম্ভব না হলে $HOME/.bashrc ফাইলের মধ্যে নিম্নলিখিত পংক্তিগুলি যোগ করে ডেস্কটপে পুনরায় লগ-ইন করুন। export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusLinux/Unix-র সাথে ব্যবহারযোগ্য বুদ্ধিবিশিষ্ট ইনপুট বাস হল IBusসত্য হলে, প্যানেল সর্বদা দেখানো হলে প্যানেল ইনপুট কার্সার অনুসরণ করে। মিথ্যা হলে, প্যানেল একটি নির্দিষ্ট অবস্থানে দেখানো হয়।ইনপুট পদ্ধতিKbdকি-র কোড:কি-বোর্ড বিন্যাস: %s কি-বোর্ড শর্ট-কাটভাষার প্যানেলের অবস্থানভাষার প্যানেলের অবস্থান:ভাষা: %s ল্যাটিন সজ্জা যাতে কোনো ASCII নেইশুধুমাত্র ইঞ্জিনের নামের তালিকা প্রদর্শন করা হবেপরিবর্তক:অারো…নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় নীচে স্থানান্তর করা হবেনির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় উপরে স্থানান্তর করা হবেপরবর্তী ইঞ্জিনের জন্য শর্টকাট-কিপরবর্তী ইনপুট পদ্ধতি:কোনো ইঞ্জিন নির্ধারিত হয়নি। লুক-আপ টেবিলের দিশালুক-আপ টেবিলের দিশা। 0 (০) = অনুভুমিক, 1 (১) = উল্লম্বঅন্যান্যঅনুগ্রহ করে একটি কি (অথবা কি সংকলন) টিপুনঅনুগ্রহ করে কোনো কি (অথবা কি সংকলন) টিপুন। কি মুক্ত করা হলে এই ডায়লগ বক্সটি বন্ধ করা হবে।IME স্যুইচার উইন্ডোর ক্ষেত্রে পপ-অাপ মিলিসেকেন্ড বিলম্বপছন্দনেম পরিবর্তন প্রতিরোধ করার জন্য DConf-কির প্রেফিক্সইঞ্জিন পূর্বে লোড করা হবেibus আরম্ভের সময় ইঞ্জিনগুলি পূর্বে লোড করা হবেপূর্ববর্তী ইঞ্জিনের শর্টকাট-কিপূর্ববর্তী ইনপুট পদ্ধতি:ibus-daemon এর D-Bus ঠিকানা প্রিন্ট করুনপ্রস্থানXKB অাইকনের RGBA মানরেজিস্ট্রি ক্যাশ FILE পড়ুন।সিস্টেম রেজিস্ট্রি ক্যাশ পড়ুন।সক্রিয় ইনপুট পদ্ধতির তালিকা থেকে নির্বাচিত ইনপুট পদ্ধতিটি মুছে ফেলা হবেকনফিগারেশন মানগুলি পুনঃসেট করুনপুনঃসেট…পুনরারম্ভibus-daemon বন্ধ করে অাবার চালু করুনibus ইঞ্জিনগুলি পাল্টানোর সময়ে, .xmodmap বা .Xmodmap বিদ্যমান থাকলে xmodmap চালান।ইনপুট পদ্ধতির তালিকায় সংরক্ষিত ইঞ্জিনের অনুক্রমসংরক্ষিত সংস্করণ নম্বরএকটি ইনপুট পদ্ধতি নির্বাচন করুন%s-র জন্য কি-বোর্ড শর্ট-কাট ধার্য করুনIBus সংক্রান্ত পছন্দ নির্ধারণ করুনগ্লোবাল ইঞ্জিন নির্ধারণ করতে ব্যর্থ। ইঞ্জিন সেট করুন বা পানভাষার বার প্রদর্শন ও আড়াল করার উদ্দেশ্যে ibus-র আচরণ নির্ধারণ করুনলুক-আপ টেবিলের মধ্যে প্রযোজ্য বিকল্পগুলির দিশা নির্ধারণ করুনসকল অ্যাপ্লিকেশনের মধ্যে একই ইনপুট পদ্ধতি ব্যবহার করা হবেউপলব্ধ ইঞ্জিনগুলি দেখানসিস্টেম ট্রের মধ্যে আইকন প্রদর্শন করা হবেনির্বাচিত ইনপুট পদ্ধতি সংক্রান্ত তথ্য প্রদর্শন করা হবেইনপুট পদ্ধতির নাম প্রদর্শন করা হবেভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবেচেকবক্স নির্বাচিত হলে, ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবেবিশিষ্টতা প্যানেল দেখান:নির্বাচিত ইনপুট পদ্ধতির সেট-আপ প্রদর্শন করা হবেকনফিগারেশন মানগুলি দেখানরেজিস্ট্রি ক্যাশের বিষয়বস্তু দেখানএই তথ্য দেখানসংস্করণ দেখানলগ-ইন করার সময় ibus আরম্ভ করা হবেIBus ডেমন বর্তমানে চলছে না। এটি আরম্ভ করা হবে কি?বিশিষ্টতা প্যানেলের অাচরণ। 0 = দেখাবেন না, 1 = স্বয়ংক্রিয় ভাবে লুকানো, 2 = সর্বদা দেখানবিশিষ্টতা প্যানেল দেখাতে মিলিসেকেন্ডফোকাস-ইন বা বিশিষ্টতা পরিবর্তিত হওয়ার পরে, বিশিষ্টতা প্যানেল দেখাতে মিলিসেকেন্ড।রেজিস্ট্রি ক্যাশ অবৈধ। পূর্বে ইনস্টল করা ibus এবং বর্তমান ibus এর একটির মধ্যে পার্থক্য যাচাই করতে সংরক্ষিত সংস্করণ নম্বর ব্যবহৃত হবে।তালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কিতালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কিতালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কিতালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কিইনপুট পদ্ধতি বন্ধ করার জন্য ব্যবহৃত শর্ট-কাট কিইনপুট পদ্ধতি চালু করার জন্য ব্যবহৃত শর্ট-কাট কিইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুনউপরে বাঁদিকের কোণায়উপরে ডানদিকের কোণায়ট্রিগারের শর্টকাট-কিgtk_accelerator_parse এর ক্ষেত্রে শর্টকাট কী ট্রিগারUS সজ্জা ল্যাটিন সজ্জাতে প্রয়োগ করা হয়। বৈচিত্র্য বাদ দেওয়া হতে পারে।ব্যবহারপ্রণালী: %s COMMAND [OPTION...] স্বনির্ধারিত ফন্ট প্রয়োগ করুনভাষার প্যানেলের জন্য স্বনির্ধারিত ফন্টের নাম ব্যবহার করা হবেস্বনির্ধারিত ফন্ট প্রয়োগ করুন:সার্বজনীন ইনপুট পদ্ধতি পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য শিফ্ট সমেত শর্ট-কাট কি ব্যবহার করুনসিস্টেম কি-বোর্ড (XKB) বিন্যাস প্রয়োগ করা হবেসিস্টেম কি-বোর্ড বিন্যাস প্রয়োগ করা হবেxmodmap ব্যবহার করুনউল্লম্বরেজিস্ট্রি ক্যাশ FILE লিখুন।সিস্টেম রেজিস্ট্রি ক্যাশ লিখুন।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 রেঞ্জে।পরিচিতি (_A)যোগ করুন (_A)প্রয়োগ করুন (_A)বাতিল (_C)বন্ধ করুন (_C)মুছে ফেলুন (_D)নীচে (_D)ঠিক আছে (_O)পছন্দ (_P)মুছে ফেলুন (_R)উপরে (_U)default:LTRভাষা: %s ইনপুট পদ্ধতি পরিবর্তনরুণা ভট্টাচার্য্য (runab@fedoraproject.org)ibus-1.5.22/po/vi.gmo0000644000000000000000000002457013623751604011211 00000000000000w   #3 W n  o  < J S Z f p    H  " #. R ` v   ( ( @ 1 P c x     . 0  (;S l z@C $79S)^ (%8^x?'9<1v2-"&9@`' 8@ND<.-@4n' 2C [|   2m.J   .F%_$H ( DOfm&DDS2# 6-U3  9Ja[\& A Y 5y  6 n!z!6!#!! "N"_" t"""$"<":+#;f#4#3# $4($Z]$"$5$%.%%H%Ln%O%J &3V&"&"&/&''-'*F'q'.''-'4 (4B(w(}(( (((((( ((( (((f)-Rhi+D4UC*Bd /b cMt:J&sg(Ko] qEr#7Gu'HOeAlW65$maY 0F",I@!L8% )<V>^;92=3Xp[\S`fNZ_v?QkP 1wjTn....Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontCustom font name for language panelDescription: Disable shortcut keysDisable:Do not showEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable or disable:Enable shortcut keysEnable:Exit ibus-daemonGeneralHide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Modifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.PreferencesPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:QuitRemove the selected input method from the enabled input methodsRestartRestart ibus-daemonSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse system keyboard (XKB) layoutUse system keyboard layoutVertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2018-06-21 07:54+0000 Last-Translator: Copied by Zanata Language-Team: Vietnamese Language: vi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 4.4.5 ...Phông và kiểuChọn một kiểu gõBố trí bàn phímPhím tắtKhởi độngIBus Bộ gõ thông minh Trang chủ: https://github.com/ibus/ibus/wiki Giới thiệuThêm kiểu gõ đã chọn vào những kiểu gõ cho phép sử dụngNâng caoLuôn luônTác giả: %s Tự động ẩnGóc dưới bên tráiGóc dưới bên phảiKhông thể kết nối với IBus. Hướng danh sách từ ứng cử:Lệnh: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Tùy biếnTùy biến phôngTùy biến phông cho thanh ngôn ngữMô tả: Tắt các phím tắtTắt:Không hiển thịNhúng văn bản tiền soạn thảoNhúng văn bản tiền soạn thảo trong cửa sổ ứng dụngNhúng văn bản tiền soạn thảo trong cửa sổ ứng dụngNhúng văn bản tiền soạn thảo của bộ gõ trong cửa sổ ứng dụngBật kiểu gõ theo mặc địnhBật hoặc tắt:Bật các phím tắtBật:Thoát ibus-daemonChungTự động ẩnNgangTùy chọn IBusIBus daemon không thể khởi động trong %d giâyIBus không thể khởi động! Nếu bạn không thể sử dụng IBus, hãy thêm các dòng dưới đây vào tệp tin $HOME/.bashrc của bạn; sau đó hãy đăng nhập lại vào màn hình làm việc. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus là một bộ gõ thông minh cho Linux/Unix.Kiểu gõKbdMã phím:Bố trí bàn phím: %s Những phím tắtVị trí thanh ngôn ngữ:Vị trí thanh ngôn ngữ:Ngôn ngữ: %s Phím bổ sung:Di chuyển kiểu gõ đã chọn xuống dưới trong những kiểu gõ cho phép sử dụngDi chuyển kiểu gõ đã chọn lên trên trong những kiểu gõ cho phép sử dụngPhím tắt cho kiểu gõ kế tiếpKiểu gõ kế tiếp:Hướng của bảng tra cứuHướng của bảng tra cứu. 0 = Ngang, 1 = DọcKhácVui lòng nhấn một phím (hoặc tổ hợp phím)Vui lòng nhấn một phím (hoặc tổ hợp phím). Hộp thoại này sẽ được đóng lại khi bạn thả phím ấn.Tùy thíchNạp trước các kiểu gõNạp trước các kiểu gõ khi khởi động ibusPhím tắt cho kiểu gõ trướcKiểu gõ trước:ThoátXóa kiểu gõ đã chọn ra khỏi những kiểu gõ cho phép sử dụngKhởi động lạiKhởi động lại ibus-daemonChọn một kiểu gõChọn phím tắt để %sThiết lập các tuỳ chọn IBusThiết lập việc ẩn hay hiển thị thanh ngôn ngữĐặt hướng của từ gợi ý trong bảng tra cứuChia sẻ cùng kiểu gõ cho tất cả các ứng dụngHiển thị biểu tượng trên khay hệ thốngHiển thị thông tin về kiểu gõ đã chọnHiển thị tên kiểu gõHiển thị tên kiểu gõ trên thanh ngôn ngữHiển thị tên của kiểu gõ trên thanh ngôn ngữ khi đánh dấu vào ô kiểmHiển thị bảng thuộc tính:Hiển thị thiết lập cho kiểu gõ đã chọnHiển thị thông tin nàyHiển thị phiên bảnKhởi động ibus khi đăng nhậpIBus daemon đang không chạy. Bạn có muốn khởi động nó không?Phím tắt dùng để chuyển đến kiểu gõ kế tiếp trong danh sáchPhím tắt dùng để chuyển về kiểu gõ trước trong danh sáchPhím tắt để chuyển sang kiểu gõ trướcPhím tắt để tắt kiểu gõPhím tắt để bật kiểu gõPhím tắt để bật hoặc tắt kiểu gõGóc trên bên tráiGóc trên bên phảiPhím tắt kích hoạtSử dụng: %s LỆNH [TUỲ CHỌN...] Dùng phông chữ tùy biếnDùng phông tùy biến cho thanh ngôn ngữDùng phông chữ tùy biến:Dùng chung kiểu gõ cho toàn hệ thốngDùng kiểu bố trí bàn phím hệ thống (XKB)Dùng kiểu bố trí bàn phím của hệ thốngDọcG_iới thiệuThê_mÁ_p dụng_ThôiĐón_g_Xoá_Xuống_OKTù_y thích_Bỏ_Lêndefault:LTRngôn ngữ: %s chuyển các kiểu gõLê Quốc Tuấn , 2009 Đoàn Hoà Khiêm , 2018ibus-1.5.22/po/da.po0000644000000000000000000030636713623751577011033 00000000000000# Danish translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2019 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Kris Thomsen , 2009,2011 # scootergrisen , 2017. #zanata # fujiwara , 2018. #zanata # scootergrisen , 2018. #zanata # scootergrisen , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2019-06-22 05:37+0000\n" "Last-Translator: scootergrisen \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 4.6.2\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Forindlæs motorer" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Forindlæs motorer under opstarten af IBus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Rækkefølge for motorer" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Gemte rækkefølge på motorer i indtastningsmetodeliste" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Pop op-forsinkelse i millisekunder for IME-skifter-vindue" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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 "" "Sæt pop op-forsinkelse millisekunder som IME-skifter-vindue skal vises. " "Standarden er 400. 0 = Vis vinduet med det samme. 0 < Forsinkelse " "millisekunder. 0 > Vis ikke vinduet og skift til forrige/næste motorer." #: data/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Gemt versionsnummer" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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 "" "Det gemte versionnummer vil blive brugt til at tjekke forskellen mellem " "versionen af den tidligere installerede ibus og en af den nuværende ibus." #: data/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Latinske layout som ikke har nogen ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "US-layout tilføjes til de Latinske layouts. Variant kan udelades." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Brug xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "Kør xmodmap hvis .xmodmap eller .Xmodmap findes når der skiftes ibus-motorer." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Brug systemets tastaturlayout" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Brug systemets tastaturlayout (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Indbyg forudredigeret tekst" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Indlejr forudredigeret tekst i programvindue" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Brug global indtastningsmetode" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Brug den samme indtastningsmetode i alle programmer" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Aktivér indtastningsmetode som standard" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "Aktivér indtastningsmetode som standard når programmet modtager " "indtastningsfokus" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf bevar navnepræfiks" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Præfiks af DConf-taster til stop af navnekonvertering" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Udløs tastaturgenveje" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Genvejstasterne for at tænde og slukke indtastningsmetode" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Udløs tastaturgenveje for gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Aktivér genvejstaster" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Genvejstasterne for at tænde indtastningsmetode" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Deaktivér genvejstaster" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Genvejstasterne for slukning af indtastningsmetode" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Genvejstaster for næste motor" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "Genvejstasterne for at skrive til næste indtastningsmetode i listen" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Genvejstaster for forrige motor" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "Genvejstasterne for at skifte til forrige indtastningsmetode" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Skjul automatisk" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Opførsel for egenskabspanelet. 0 = Vis ikke, 1 = Skjul automatisk, 2 = Vis " "altid" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Placering for sprogpanel" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "Følg inputmarkøren hvis panelet altid vises" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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 "" "Hvis sand, følger panelet inputmarkøren hvis panelet altid vises. Hvis " "falsk, vises panelet på en fastsat placering." #: data/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Millisekunder som egenskabspanelet skal vises i" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Millisekunderne som egenskabspanelet skal vises i efter fokus-ind eller " "egenskaber ændres." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orientering af opslagstabel" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientering af opslagstabel. 0 = Horisontal, 1 = Vertikal" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Vis ikon i systembakke" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Vis navn på indtastningsmetode" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Vis navn på indtastningsmetode i sprogpanel" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "RGBA-værdi for XKB-ikon" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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-ikon viser layoutstrengen og strengen gengives med RGBA-værdien. RGBA-" "værdien kan være 1. Et farvenavn fra X11, 2. En heksadecimalværdi i formatet " "'#rrggbb' hvor 'r', 'g' og 'b' er heksadecimale cifre af den røde, grønne og " "blå, 3. En RGB-farve i formatet 'rgb(r,g,b)' eller 4. En RGBA-farve i " "formatet 'rgba(r,g,b,a)' hvor 'r', 'g', og 'b' enten er heltal fra 0 til 255 " "eller procentværdier fra 0% til 100%, og 'a' hvis det er en kommatalværdi " "fra 0 til 1 af alfaen." #: data/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "Millisekunder som panelikonet for en egenskab skal vises i" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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 "" "Millisekunder som panelikonet vises fra motorikonet til et egenskabsikon når " "motorer skiftes hvis egenskaben er angivet af værdien af icon-prop-key i " "IBusEngineDesc. Hvis værdien er 0, er der ingen forsinkelsestid og " "egenskabsikonet vises med det samme." #: data/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Brug tilpasset skrifttype" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Brug tilpasset skrifttypenavn til sprogpanel" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Tilpasset skrifttype" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Tilpasset skrifttypenavn til sprogpanel" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Unicode-genvejstaster til gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Genvejstasterne til at slå Unicode-skrivning til eller fra" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Emoji-genvejstaster for gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "Genvejstasterne til at slå emoji-indtastning til eller fra" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "Tilpasset skrifttypenavn for emoji-tegn i emoji-dialog" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Standardsprog for emojiordbog" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Vælg et standardsprog af emoji-ordbøger i emoji-dialogen. Værdien $lang " "anvendes på /usr/share/ibus/dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "favorit emojiliste i emoji-dialog" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Du kan vise favorit emojierne i emojiliste hvis denne liste har nogen tegn." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "favorit emoji-annonteringsliste i emoji-dialog" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "Du kan tildele en annotering til en favorit-emoji i denne liste." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "Hvorvidt emoji-annonteringer kan matches delvist eller ej" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Hvorvidt emoji-annoteringer kan matches med en delvis streng i stedet for " "det præcise match eller ej." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Match emoji-annoteringer med den angivne længde" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Match emoji-annoteringer delvist med flere end det angivne antal tegn i " "stedet for det præcise match." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "Vælg en betingelse til delvist at matche emoji-annonteringer" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Vælg en af følgende betingelser for at matche emoji-annoteringer delvist: 0 " "== Præfiks match, 1 == Suffiks match, 2 == Indeholdende match" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Indlæs emoji-dataene ved opstart" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Indlæs emoji-dataene ved opstart hvis sand. Det behøves omkring 10 MB " "hukommelse for at indlæse dataene. Indlæs emoji-dataene når emoji-dialogen " "åbnes ved begyndelsen hvis falsk." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Indlæs unicode-dataene ved opstart" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Indlæs unicode-dataene ved opstart hvis sand. Det behøves omkring 15 MB " "hukommelse for at indlæse dataene. Indlæs unicode-dataene når emoji-dialogen " "åbnes ved begyndelsen hvis falsk. Unicode-dataene indlæses altid efter emoji-" "dataene indlæses selv hvis sand." #: 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\n" "Ophavsret (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Andre" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Vælg et sprog" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Annuller" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Mere…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Om" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Luk" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Sprog: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Tastaturlayout: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Forfatter: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Beskrivelse:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Vælg en indtastningsmetode" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Tilføj" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Indtastningsmetode" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus-præferencer" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Angiv IBus-præferencer" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Tastaturgenveje" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Nøglekode:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Kombinationstaster:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Anvend" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Slet" #: 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 "" "Tryk venligst på en tast (eller en tastekombination).\n" "Dialogen bliver lukket, når tasten slippes." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Tryk venligst på en tast (eller en tastekombination)" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "Brug genvej med skift for at skifte til forrige indtastningsmetode" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus-dæmonen kører. Vil du starte den?" #: setup/main.py:536 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 er blevet startet! Hvis du ikke kan bruge IBus, så tilføj følgende " "linjer til din $HOME/.bashrc; og så log ind på dit skrivebord igen.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: setup/main.py:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus-dæmon kunne ikke startes på %d sekunder" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Vælg tastaturgenveje til %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "skifter indtastningsmetoder" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Vandret" #: setup/setup.ui:14 msgid "Vertical" msgstr "Lodret" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Øverste venstre hjørne" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Øverste højre hjørne" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Nederste venstre hjørne" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Nederste højre hjørne" #: setup/setup.ui:37 msgid "Custom" msgstr "Tilpasset" #: setup/setup.ui:48 msgid "Do not show" msgstr "Vis ikke" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Skjul automatisk" #: setup/setup.ui:54 msgid "Always" msgstr "Altid" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "Genvejstaster for skift til den næste indtastningsmetode i listen" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Næste indtastningsmetode:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Genvejstaster for skift til den forrige indtastningsmetode i listen" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Forrige indtastningsmetode:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Aktivér eller deaktivér:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Aktivér:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Deaktivér:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Tastaturgenveje" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Angiv orientering af kandidater i opslagstabel" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Orientering for kandidater:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Angiv opførsel for hvordan IBus skal vises eller sprogpanelet" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Vis egenskabspanel:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Placering af sprogpanel:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Vis indtastningsmetodens navn i sprogpanelet når tjek-boksen er vinget af" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Indlejr forudredigeret tekst i programvindue" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "Indlejr forudredigeret tekst for indtastningsmetode i programvinduet" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Brug tilpasset skrifttype:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Skrifttype og stil" #: setup/setup.ui:579 msgid "General" msgstr "Generelt" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" "Tilføj den valgte indtastningsmetode i de aktiverede indtastningsmetoder" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Fjern" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" "Fjern den valgte indtastningsmetode fra de aktiverede indtastningsmetoder" #: setup/setup.ui:700 msgid "_Up" msgstr "_Op" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Flyt den valgte indtastningsmetode op i listen over aktiverede " "indtastningsmetoder" #: setup/setup.ui:718 msgid "_Down" msgstr "_Ned" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" "Flyt den valgte indtastningsmetode ned i listen over aktiverede " "indtastningsmetoder" #: setup/setup.ui:736 msgid "_About" msgstr "_Om" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Vis information om den valgte indtastningsmetode" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Præferencer" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Vis opsætning for den valgte indtastningsmetode" #: setup/setup.ui:812 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 "" "Den aktive indtastningsmetode kan skiftes til en anden i listen " "ovenfor, ved at trykke på tastaturgenvejene eller ved at klikke på " "panelikonet." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" "Genvejstasterne til at aktivere samtaler med emoji-annoteringer eller " "unicode-navne" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Emoji-annotering:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Genvejstasterne til at aktivere konvertering af unicode-kodepunkt" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Unicode-kodepunkt:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "Sæt en skrifttype af unicode-kandidater i emoji-dialogen" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Unicode-skrifttype:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Sæt et sprog af emoji-kandidater i emoji-dialogen" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Emoji-annoteringssprog:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Match emoji-annoteringer delvist med følgende betingelse og flere end " "antallet af tegn:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Hvorvidt emoji-annonteringer kan matches med en delvis streng i stedet for " "det præcise match" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Præfiks match" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Suffiks match" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Indeholdende match" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emoji" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Tastaturlayout" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Indstillinger for global indtastningsmetode" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Avanceret" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Den intelligente indtastningsbus\n" "Hjemmeside: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Start ibus ved login" #: setup/setup.ui:1358 msgid "Startup" msgstr "Opstart" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Aktiviteter" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Dyr og natur" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Komponent" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Flag" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Mad og drikke" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Objekter" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "Personer og kroppe" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "Smileyer og emotikoner" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Symboler" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Rejser og steder" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Grundlæggende latinsk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Latin-1 supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Latinsk udvidet-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Latinsk udvidet-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "IPA-udvidelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Mellemrumsændringer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Kombinerende diakritiske tegn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Græsk og koptisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Kyrillisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Kyrillisk supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Armensk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Hebraisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Arabisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Syrisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Arabisk supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "NKo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Samaritansk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandæisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Syrisk supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Arabisk udvidet-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Devanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengali" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmukhi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Gujarati" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Oriya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tamilsk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Telugu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Kannada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malayalam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Sinhala" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Thai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Lao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tibetansk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Myanmar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Georgisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Hangul Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Ethiopisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Etiopisk supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Cherokee" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Forenede canadisk-indiansk stavelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Runer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Tagalog" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunoo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buhid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Tagbanwa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Khmer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Mongolsk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Forenede canadisk-indianske stavelser, udvidet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai Le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Ny Tai Lue" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Khmer-symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Buginesisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Tai Tham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Kombinerede diakritiske tegn udvidet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Balinesisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Sundanesisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepcha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ol Chiki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Kyrillisk udvidet-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "Georgisk udvidet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Sudanesisk supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Vediske udvidelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Fonetiske udvidelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Supplement til fonetiske udvidelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Supplement til kombination af diakritiske tegn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Latisk ekstra udvidet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Græsk udvidet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Generel tegnsætning" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Hævede og sænkede tegn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Valutasymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Kombinerende diakritiske tegn til symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Bogstavlignende symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Talformer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Pile" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Matematiske operatorer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Diverse teknisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Kontrolbilleder" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Optisk tegngenkendelse" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Indrammede alfanumeriske" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Rammetegning" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Blokelementer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Geometriske former" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Diverse symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Tingester" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Diverse matematiske symboler-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Ekstra pile-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Braille-mønstre" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Ekstra pile-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Diverse matematiske symboler-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Ekstra matematiske operatorer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Diverse symboler og pile" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Glagolitisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Latinsk udvidet-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Koptisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Georgisk supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Etiopisk udvidet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Kyrillisk udvidet-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Supplerende tegnsætning" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "CJK-radikaler-supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Kangxi-radikaler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Ideografiske beskrivelsestegn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "CJK-symboler og punktueringer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Hangul kompatibilitets-Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Bopomofo udvidet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "CJK-streger" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Katakana-fonetiske udvidelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Indrammede CJK-bogstaver og -måneder" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "CJK-kompatibilitet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "CJK-forenede ideografer-udvidelse A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Yijing-hexagramsymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "CJK-forenede ideografer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Yi-stavelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Yi-radikaler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Vai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Kyrillisk udvidet-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Toneændringstegn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Latinsk udvidet-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Syloti Nagri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Almindelige indiske talformer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Phags-pa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurashtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Devanagari udvidet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Hangul Jamo udvidet-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Javanesisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Myanmar udvidet-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Cham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Myanmar udvidet-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tai Viet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Meetei Mayek udvidelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Etiopisk udvidet-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Latinsk udvidet-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Cherokee-supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Hangul-stavelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Hangul Jamo udvidet-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Høje surrogater" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Høje surrogater til privat brug" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Lave surrogater" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Område til privat brug" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "CJK-kompatibilitetsideografer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Alfabetiske præsentationsformer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Arabiske præsentationsformer-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Variationsvælgere" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Vertikale former" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Kombinerende halvtegn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "CJK-kombatibilitetsformer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Små former-varianter" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Arabiske præsentationsformer-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Halvbredde og fuldbredde former" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Specialtegn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Linear B-stavelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Linear B-ideogrammer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Aegæiske tal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Oldgræske tal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Oldtidssymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Festosdiskossen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Lykisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Karisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Koptisk epact tal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Olditalisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gotisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Oldpermisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ugaritisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Oldpersisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Deseret" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Shaviansk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmanya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Elbasan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Kaukasisk Albansk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Linear A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Cypriske stavelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "Fyrstetidsaramæisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Palmyrisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nabatæisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Hatran" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Fønikisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lydisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Meroitiske hieroglyffer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Meroitisk skrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Kharoshthi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Oldsydarabisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Oldnordarabisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Manikæisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Avestisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Inskriptions-parthisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Inskriptions-pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Psalter Pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Oldtyrkisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Oldungarsk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "Hanifi rohingya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Rumi numeriske symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "Oldsogdian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "Sogdian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "Elym" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Bramisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaithi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Sora Sompeng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Chakma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Mahajani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Sharada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Sinhala-arkaiske tal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Khojki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Multani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Khudawadi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Grantha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Newa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Tirhuta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Siddham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Modi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Mongolsk supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Dogra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Warang Citi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "Nand" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Zanabazar kvadratisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Soyombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Masaram Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Gunjala gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Makasar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "Tamilsk supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Kileskrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Kileskriftstal og -tegnsætning" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Tidlig dynastisk kileskrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Ægyptiske hieroglyffer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "Ægyptiske hieroglyffer formatteringskontroltegn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Anatoliske hieroglyffer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Bamum-supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mro" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Bassa Vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Pahawh Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Medefaidrin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Miao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Ideografiske symboler og tegn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Tangut" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Tangut-komponenter" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Kana-supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Kana udvidet-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "Små kana udvidelse" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Nushu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Duployan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Forkortede formatteringskontroltegn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Byzantiske musiske symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Musiske symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Oldgræsk musiknotation" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "Maya talsystem" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Tai Xuan Jing-symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Kinesisk stregtalsystem" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Matematiske alfanumeriske symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Sutton tegnsprogskrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Glagolitisk supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "Nyiakeng Puachue Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "Wancho" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Mende Kikakui" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "Indisk siyaq tal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "Ottomanske siyaq tal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Arabiske matematiske alfabetiske symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Mahjong-brikker" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Domino-brikker" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Spillekort" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Indrammet alfanumerisk supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Indrammet ideografisk supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Diverse symboler og piktogrammer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Emotikoner" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Pyntedingbatter" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Transport- og kortsymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Alkymisymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Geometriske former udvidet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Ekstra pile-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Supplerende symboler og piktogrammer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "Skaksymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "Symboler og piktogrammer udvidet-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "Forenede CJK-ideografer, udvidelse B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "Forenede CJK-ideografer, udvidelse C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "Forenede CJK-ideografer, udvidelse D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "Forenede CJK-ideografer, udvidelse E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "CJK-forenede ideografer-udvidelse F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "Supplerende CJK-kompatibilitetsideografer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Mærkater" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Variationsvælgere-supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Ekstra privat brug-område-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Ekstra privat brug-område-B" #: tools/main.vala:51 msgid "List engine name only" msgstr "Vis kun motornavn" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Kan ikke oprette forbindelse til IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "sprog: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Ingen motor er sat.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Sætning af global motor mislykkedes.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Hentning af global motor mislykkedes.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Læs systemets registreringsmellemlager." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Læs den registreringsmellemlageret FIL." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "Registreringsmellemlageret er ugyldigt.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Skriv systemets registreringsmellemlager." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Skriv den registreringsmellemlageret FIL." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "Brug motorskema-stier i stedet for ibus-kerne, hvilket kan være " "kommaseparerede værdier." #: tools/main.vala:381 msgid "Resetting…" msgstr "Nulstiller…" #: tools/main.vala:399 msgid "Done" msgstr "Færdig" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Sæt eller hent motor" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Forlad ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "Vis tilgængelige motorer" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(ikke implementeret)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Genstart ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "Vis version" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Vis indholdet af registreringsmellemlager" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Opret registreringsmellemlager" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Print D-Bus-adressen af ibus-daemon" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Vis konfigurationsværdierne" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Nulstil konfigurationsværdierne" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Gem emoji i dialog til udklipsholder " #: tools/main.vala:458 msgid "Show this information" msgstr "Vis denne information" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Anvendelse: %s KOMMANDO [TILVALG...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Kommandoer:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s er ukendt kommando!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Favoritter" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Andre" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Åbn valg af unicode" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Tilbage til valg af emoji" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Page Down" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Page Up" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Vis emoji-varianter" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Luk" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Menu" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Klik for at vise en advarselsmeddelelse" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Indlæser en unicode-ordbog:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Kodepunkt: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Har emoji-varianter" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Beskrivelse: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Ingen" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Annoteringer: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Navn: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Alias: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Valg af emoji" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Valg af unicode" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "Kunne ikke hente det nuværende tekstprogram. Giv venligst fokus til dit " "program igen. Tryk f.eks. på Esc-tasten flere gange for at slippe fri fra " "emoji-indtastningstilstanden, klik på dit skrivebord og klik på " "tekstprogrammet igen." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Annulleret for at vælge en emoji." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Kopierede en emoji til dit skrivebord." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "\"SKRIFTTYPE\" for emoji-tegn i emoji-dialog" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "SKRIFTTYPE" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "\"SPROG\" for annoteringer i emoji-dialog. F.eks. \"en\"" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "SPROG" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Emoji-annoteringer kan matches delvist" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Match med længen af det angive heltal" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Match med betingelsen af det angive heltal" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus-panel" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus er en intelligent indtastningsbus til Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "Kris Thomsen\n" "\n" "Dansk-gruppen \n" "Mere info: http://www.dansk-gruppen.dk" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Præferencer" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Genstart" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/ja.gmo0000644000000000000000000013452513623751603011166 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIf?gD,h%qhhh"h1h%i+4i`i}i?jNkUkN\kkkkkk kl"l$5lZlyl ll lll$l m%m=mVmlm smmm mmmm mnn$n@n Sn`nsnznnn nnnnno &o4oEo\o mo{oooooo p&p!?p-appp'ppp q qW [h!{Ho?VExܳU e oW|ԶY u  ÷η շ H?K $JWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2019-07-24 03:07+0000 Last-Translator: Copied by Zanata Language-Team: Japanese Language: ja MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Zanata 4.6.2 絵文字ダイアログ上の絵文字用の「フォント」絵文字ダイアログ上のルビ用の「言語」。例「en」%s は不明なコマンドです。 (実装されていません)…フォントとスタイルグローバル入力メソッドの設定キーボードレイアウトキーボードショートカットスタートアップIBus インテリジェントなインプットバス ホームページ: https://github.com/ibus/ibus/wiki アクティブなインプットメソッドは、キーボードショートカットキーを押すかパネルアイコンをクリックすることによってリストされている中から1つのインプットメソッドを選択することで切り替えることが可能です。情報活動選択した入力メソッドを有効な入力メソッドへ追加しますアドラム文字詳細エーゲ数字アーホム文字錬金術記号別名: %sアルファベット表示形常に表示するアナトリア・ヒエログリフ古代ギリシア音符記号古代ギリシア数字古代記号動物と自然ルビ: %sアラビア文字アラビア文字拡張 Aアラビア数学用英数字記号アラビア表示形 Aアラビア表示形 Bアラビア文字補助アルメニア文字矢印作者: %s 自動的に隠すアヴェスター文字バリ文字バムン文字バムン文字補助基本ラテン文字バサ文字バタク文字ベンガル文字バイクシュキー文字ブロック要素注音字母注音字母拡張左下右下けい線素片ブラーフミー文字点字図形絵文字の選択に戻るブギス文字ブヒッド文字ビザンチン音楽記号CJK 互換用文字CJK 互換形CJK 互換漢字CJK 互換漢字補助CJK 部首補助CJK の筆画CJK の記号及び句読点CJK 統合漢字CJK 統合漢字拡張 ACJK 統合漢字拡張 BCJK 統合漢字拡張 CCJK 統合漢字拡張 DCJK 統合漢字拡張 ECJK 統合漢字拡張 FIBus に接続できません。 絵文字の選択を取り消しました。候補ウィンドウの向き:カリア文字カフカース・アルバニア文字チャクマ文字チャム文字チェロキー文字チェロキー文字補助チェス記号絵文字ルビを部分一致させる条件を選ぶ絵文字ダイアログ上の絵文字辞書のデフォルトの言語を選択します。その値 $lang は、/usr/share/ibus/dicts/emoji-$lang.dict に適用されます。絵文字ルビを部分一致させる次の条件のうちの1つを選ぶ: 0 == 文頭一致、1 == 文末一致、2 == 文中一致警告メッセージを閲覧するためにクリックしてください閉じるコードポイント: %sダイアクリティカルマーク (合成可能)ダイアクリティカルマーク (合成可能) 拡張ダイアクリティカルマーク (合成可能) 補助記号用ダイアクリティカルマーク (合成可能)半記号 (合成可能)コマンド: 共通インド数字に準じるもの構成要素文中一致制御機能用記号クリップボードに絵文字をコピーしました。コプト文字コプト・エパクト数字Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.算木用数字レジストリーキャッシュを作成するくさび形文字くさび形文字の数字及び句読点通貨記号カスタムカスタムフォント絵文字ダイアログ上の絵文字用のカスタムフォント名言語パネル用のカスタムフォント名キプロス音節文字キリール文字キリール文字拡張 Aキリール文字拡張 Bキリール文字拡張 Cキリール文字補助DConf により名前のプレフィックスを維持する絵文字辞書用のデフォルトの言語説明: 説明: %sデザレット文字デーヴァナーガリー文字デーヴァナーガリー文字拡張装飾記号ショートカットキーを無効にする無効:表示しないドーグリー文字ドミノ牌完了デュプロワイエ式速記シュメール楔形文字ヒエログリフ文字書式制御記号ヒエログリフ文字エルバサン文字エリマイス文字前編集テキストを組み込むアプリケーションウィンドウに前編集テキストを組み込みますアプリケーションウィンドウに前編集テキストを組み込むアプリケーションウィンドウに入力メソッドのプリエディットテキストを組み込みます絵文字絵文字の選択絵文字ルビの言語:絵文字ルビ:絵文字ルビを部分一致させることが可能になるgtk_accelerator_parse のための絵文字ショートカットキー顔文字デフォルトで入力メソッドを有効にするアプリケーションで入力が必要とされる場合にはデフォルトで入力メソッドを有効にします切り替えショートカットキーを有効にする有効:囲み英数字補助囲み英数字囲み CJK 文字・月囲み表意文字補助エンジンの順序エチオピア文字エチオピア文字拡張エチオピア文字拡張 Aエチオピア文字補助ibus-daemon を終了するフォント現在のテキストアプリケーションを取得するのに失敗しました。アプリケーションを再フォーカスさせてください。例えば、Esc キーを数回入力して絵文字入力モードを開放し、デスクトップをクリックして、テキストアプリケーションを再度クリックしてください。お気に入り国旗パネルが常に表示されている場合に入力カーソルに従う食べ物と飲み物一般一般句読点幾何学模様幾何学模様拡張グルジア文字グルジア文字補助グルジア文字補助グローバルエンジンの取得に失敗しました。 グラゴル文字グラゴル文文字補助ゴート文字グランタ文字ギリシア文字拡張ギリシア文字及びコプト文字グジャラート文字グンジャラ・ゴーンディー文字グルムキー文字半角・全角形ハングル互換字母ハングル字母ハングル字母拡張 Aハングル字母拡張 Bハングル音節文字ハニーフィー・ロヒンギャ文字ハヌノオ文字絵文字異形ありハトラ文字ヘブライ文字自動的に隠す上位私用代用符号位置上位代用符号位置平仮名横IBus パネルIBus の設定IBus デーモンを %d 秒以内に開始できませんでした。IBus は起動されています。IBus が使用できない場合は、次の行を $HOME/.bashrc に追記し、デスクトップにログインし直してみてください。 export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus は Linux/Unix のためのインテリジェントなインプットバスです。IPA 拡張漢字構成記述文字、IDC漢字の記号及び句読点絵文字ルビを完全一致ではなく部分文字列で一致させることが可能かどうかtrue ならば、パネルが常に表示されている場合にパネルは入力カーソルに従います。false ならば、パネルは固定位置に表示されます。アラム文字インド・シヤク数字入力メソッド碑文パフラヴィー文字碑文パルティア文字ジャワ文字カイティ文字仮名文字拡張 A仮名文字補助漢文用記号康熙部首カンナダ文字片仮名片仮名拡張カヤー文字Kbdキーコード:キーボードレイアウト: %s キーボードショートカットカローシュティー文字クメール文字クメール文字用記号ホジャ文字フダーワーディー文字言語言語パネルの位置言語パネルの位置言語: %s ラオス文字ラテン文字拡張追加ラテン文字拡張 Aラテン文字拡張 Bラテン文字拡張 Cラテン文字拡張 Dラテン文字拡張 EASCII を持たないラテンレイアウトラテン1補助レプチャ文字文字様記号リンブ文字線文字 A線文字 B 表意文字線文字 B 音節文字エンジン名のみ表示リス文字起動時に Unicode データを読み込むtrue の場合、起動時に Unicode データを読み込みます。約 15 MB メモリーがデータを読み込むために必要になります。false の場合、初めて絵文字ダイアログを開く時に Unicode データを読み込みます。true の場合、常に絵文字データが読み込まれた後で、Unicode データが読み込まれます。起動時に絵文字データを読み込むtrue の場合、起動時に絵文字データを読み込みます。約 10 MBメモリーがデータを読み込むために必要になります。false の場合、初めて絵文字ダイアログを開く時に絵文字データを読み込みます。Unicode の辞書を読み込んでいます:下位代用符号位置リキア文字リディア文字マハージャニー文字麻雀牌マカサル文字マラヤーラム文字マンダ文字マニ文字マルチェン文字マサラム・ゴーンディー文字絵文字ルビを完全一致ではなく指定した文字数で部分一致させる絵文字ルビを次の条件と文字数以上で部分一致させる:指定した長さで絵文字ルビを一致させる指定した数字の条件で一致させる指定した数字をもつ長さで一致させる数学用英数字記号数学記号マヤ数字メデファイドリン文字マニプリ文字マニプリ文字拡張メンデ文字メニューメロエ草書体メロエ記念碑文体ポラード文字その他の数学記号 Aその他の数学記号 Bその他の記号その他の記号及び矢印その他の記号と絵文字その他の技術用記号モーディー文字声調修飾文字修飾キー:モンゴル文字モンゴル文字補助さらに…有効な入力メソッド一覧内で選択した入力メソッドを下へ移動させます有効な入力メソッド一覧内で選択した入力メソッドを上へ移動させますムロ文字ムルターニー文字音楽記号ミャンマー文字ミャンマー文字拡張 Aミャンマー文字拡張 Bンコ文字ナバテア文字名前: %sナンディナーガリー文字新タイ ロ文字ネワ文字次のエンジンへのショートカットキー次の入力メソッド:エンジンが設定されていません。 なし数字に準じるもの女書ニアケン・プアチェ・フモン文字物体オガム文字オル・チキ文字ロヴァーシュ文字古代イタリア文字古典北アラビア文字古代ペルム文字古代ペルシャ文字旧ソグド文字古典南アラビア文字古テュルク文字Unicode の選択を開く光学的文字認識、OCR検索テーブルの向き検索テーブルの向きです。0 = 横、1 = 縦オリヤー文字オーナメントオセージ文字オスマニア文字その他その他オスマン・シヤク数字ページをめくるページを戻すパハウ・フモン文字パラミラ文字パウ・チン・ハウ文字人と体パスパ文字ファイストスの円盤の文字フェニキア文字音声記号拡張音声記号拡張補助トランプキーもしくはキーの組み合わせを入力してくださいキーもしくはキーの組み合わせを入力してください。 キーを離すとダイアログを閉じます。IME 切り替えウィンドウのポップアップ遅延時間 (ミリ秒単位)設定文頭一致名前の変換を阻止する DConf キーのプレフィックスですプリロードエンジンibus 起動時のプリロードエンジン前のエンジンへのショートカットキーひとつ前の入力メソッド:ibus-daemon の D-Bus アドレスを表示する私用領域聖詠パフラヴィー文字終了XKB アイコンの RGBA 値レジストリーキャッシュ FILE を読み込みます。システムレジストリーキャッシュを読み込みます。ルジャン文字選択した入力メソッドを有効な入力メソッドから削除します設定値を初期化する初期化中…再起動ibus-daemon を再起動するルーミー数字記号ibus エンジンが切り替えられたときに .xmodmap もしくは .Xmodmap が存在すれば xmodmap を実行します。ルーン文字サマリア文字サウラーシュトラ文字ダイアログ上の絵文字をクリップボードに保存する入力メソッドの一覧の中から保存されたエンジンの順序保存されているバージョン番号言語の選択入力メソッドの選択%s のキーボードショートカットを選択IBus を設定します絵文字ダイアログ上の Unicode 候補のフォントを設定絵文字ダイアログ上の絵文字ルビの言語を設定しますグローバルエンジンの設定に失敗しました。 エンジンを設定もしくは表示する。IME 切り替えウィンドウのポップアップ表示を遅延させるミリ秒数を指定します。デフォルトは 400 ミリ秒です。「0 =」ならウィンドウが直ちに表示されます。「0 <」にすると指定したミリ秒数遅延します。「0 >」の場合はウィンドウは表示されず前のエンジンまたは次のエンジンに切り替わります。言語バーをどのように表示するもしくは隠すかの ibus の動作を設定しますルックアップテーブルの中で候補ウィンドウの向きを設定しますシャラダ文字すべてのアプリケーション間で同じ入力メソッドを共有するシェイヴィアン文字速記書式制御記号利用可能なエンジンを表示する絵文字異形を表示するシステムトレイにアイコンを表示する選択した入力メソッドの情報を表示します入力メソッド名を表示する言語バーに入力メソッド名を表示するチェックボックスにチェック付けると、言語バーに入力メソッド名が表示されますプロパティーパネルを表示する:選択した入力メソッドの設定を表示します設定値を表示するレジストリーキャッシュの内容を表示するこの情報を表示するバージョンを表示する悉曇文字シンハラ文字シンハラ旧数字小字形小書き仮名拡張顔文字と感情ソグド文字ソラ・ソンペン文字ソヨンボ文字前進を伴う修飾文字特殊用途文字ログイン時に IBus を起動文末一致スンダ文字スンダ文字補助上付き・下付き補助矢印 A補助矢印 B補助矢印 C補助数学記号補助句読点補助記号と絵文字補助私用領域 A補助私用領域 Bサットン手話表記法シロティナグリ文字記号記号と絵文字拡張 Aシリア文字シリア文字補助タガログ文字タグバヌア文字タグタイ ロ文字ラーンナー文字タイ・ヴェト文字太玄経記号タクリ文字タミル文字タミル文字補助西夏文字西南文字の構成要素テルグ文字ターナ文字タイ文字IBus デーモンが実行されていません。起動しますか?プロパティーパネルの挙動。 0 = 表示しない、1 = 自動的に隠す、2 = 常に表示するプロパティーパネルを表示するミリ秒フォーカスインまたはプロパティが変更された後でプロパティーパネルを表示するミリ秒。プロパティー用にパネルアイコンを表示する遅延時間 (ミリ秒単位)あるプロパティーが IBusEngineDesc の icon-prop-key の値に指定されている場合、エンジンが切り替えられたときはいつでも、エンジンアイコンを表示の後にそのプロパティーをパネルアイコンを表示するためのミリ秒単位の遅延時間。値が 0 の場合、遅延無くプロパティーアイコンが即時に表示される。レジストリーキャッシュは無効です。 保存されているバージョン番号は、以前インストールした ibus のバージョンと現在の ibus のバージョンの違いをチェックする場合に使用されます。一覧内の次の入力メソッドに切り替えるためのショートカットキー一覧内のひとつ前の入力メソッドに切り替えるためのショートカットキー一覧内の次の入力メソッドに切り替えるためのショートカットキー一覧内のひとつ前の入力メソッドに切り替えるためのショートカットキーUnicode 入力の有効と無効を切り替えるためのショートカットキー絵文字入力の有効と無効を切り替えるためのショートカットキー入力メソッドをオフに切り替えるためのショートカットキー入力メソッドをオンに切り替えるためのショートカットキー入力メソッドをオンまたはオフするためのショートカットキーUnicode コードポイント変換を可能にするショートかっトーキー絵文字ルビまたは Unicode 名の変換を可能にするショートカットキーチベット文字ティフナグ文字ティルフータ文字左上右上交通と地図の記号旅行と場所トリガーショートカットキーgtk_accelerator_parse のためのトリガーショートカットキーUS レイアウトはラテンレイアウトに追加されます。variant は省略可能です。ウガリト文字Unicode の選択Unicode コードポイント:Unicode フォント:gtk_accelerator_parse のための Unicode ショートカットキー統合カナダ先住民音節統合カナダ先住民音節拡張使い方: %s コマンド [オプション...] カスタムフォントを使う言語パネル用にカスタムフォント名を使用するカスタムフォントを使う:ibus コアの代わりにエンジンのスキーマパスを使用し、コンマで区切られた値が可能です。グローバル入力メソッドを使用する以前の入力メソッドに切り替えるにはショートカットにシフトキーを付けて使用しますシステムのキーボード (XKB) レイアウトを使用するシステムのキーボードレイアウトを使用するxmodmap を使用するヴァイ文字字形選択子字形選択子補助ヴェーダ文字拡張縦縦書き形ワンチョ文字ワラング・クシティ文字絵文字ルビを部分一致させることを可能にするか否か絵文字ルビを完全一致ではなく部分文字列で一致させることを可能にするか否か。レジストリーキャッシュ FILE を書き込みます。システムレジストリーキャッシュを書き込みます。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 までの範囲内の浮動小数値のこと。イ文字部首イ文字易経記号このリストの中にお気に入りの絵文字用のルビを指定できます。このリストが文字を含む場合、絵文字リスト上にお気に入りの絵文字を表示することができます。ザナバザル方形文字情報(_A)追加(_A)適用(_A)キャンセル(_C)閉じる(_C)削除(_D)下へ(_D)OK(_O)設定(_P)削除(_R)上へ(_U)default:LTR絵文字ダイアログ上のお気に入りの絵文字ルビリスト絵文字ダイアログ上のお気に入り絵文字リスト言語: %s 入力メソッドの切り替え中UTUMI Hirosi IWAI, Masaharu 日向原 龍一 MIZUMOTO, Noriko ibus-1.5.22/po/nb.po0000644000000000000000000025330513623751601011023 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:48+0000\n" "Last-Translator: Kjartan Maraas \n" "Language-Team: Norwegian Bokmål \n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Slå på inndatametode som forvalg" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Slå av snarveitaster" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Skjul automatisk" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Egendefinert skrift" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Egendefinert skriftnavn for språkpanelet" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "Egendefinert skriftnavn for språkpanelet" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Opphavsrett © 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Annet" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "Velg en inndatametode" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Avbryt" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Om" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Lukk" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Språk: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Tastaturutforming: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Forfatter: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Beskrivelse: \n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Velg en inndatametode" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Legg til" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Inndatametode" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Tastatur" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Brukervalg for IBus" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Sett brukervalg for IBus" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Tastatursnarveier" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Tastekode:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Endringstaster:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Bruk" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Slett" #: 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 "" "Vennligst trykk en tast (eller en tastekombinasjon)\n" "Dialogen vil lukkes når tasten slippes." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Vennligst trykk en tast (eller en tastekombinasjon)" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Velg tastatursnarvei for %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horisontal" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertikal" #: setup/setup.ui:25 msgid "Top left corner" msgstr "" #: setup/setup.ui:28 msgid "Top right corner" msgstr "" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Nederste venstre hjørne" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Nederste høyre hjørne" #: setup/setup.ui:37 msgid "Custom" msgstr "Egendefinert" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "Alltid" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Neste inndatametode:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Forrige inndatametode:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Slå på eller av:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Slå på:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Slå av:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Tastatursnarveier" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Posisjon for språkpanel:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Bruk egendefinert skrift:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Skrift og stil" #: setup/setup.ui:579 msgid "General" msgstr "Generelt" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "Fje_rn" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "_Opp" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "Ne_d" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "_Om" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Vis informasjon om valgt inndatametode" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Brukervalg" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Bruk egendefinert skrift:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Tastaturutforming" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Globale innstillinger for inndatametode" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Avansert" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Start ibus ved pålogging" #: setup/setup.ui:1358 msgid "Startup" msgstr "Oppstart" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Vertikal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Annet" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Lukk" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "Beskrivelse: \n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "Brukervalg for IBus" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus er en intelligent inndatabuss for Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Kjartan Maraas " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Brukervalg" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Start på nytt" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/hu.gmo0000644000000000000000000012745313623751603011212 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIf; hKEhhhh h,hi1iIipYiiqjzjOjj j jjj k"!kDkKkck}kkkkkk%k! l!-lOlclll sll llll l lll l llmm+mwSwx'x;xXx7mx=x x1xb yy yy(y$y#z(Czlzzzzzz zz { {:|?| N|Z|t|||||4| }}-}2}:}M} ^}j}y}%}} }}} ~~+~3~N~U~\~)r~~~ ~ ~~8~?4 I)jZ ρ 7?HhqwÂւ ߂ #.2Lcz) &2N)h'''܆ !1 9D LV^urz:c15Ј&-E V bo  ĉ,ɉ,#7#Vz  ֊[\=ً   '%Mh ƌό  %1 BPp@$ >H P ] gs &Ž:n55ڏJI1d#(ѐ,' :D1^9ʑWё+)Uix^  #9.=hΓ'V/K7Ҕ( 3X2=ɖ9і '@#h0?&=$[b"<'=F" șә4:IR n${Ԛ%0V*t00Л  $-1_ezȜΜԜ #e:<rݝIP0:=NJK=>ԡ<<P;Gɢcu|'أB ILĤ:ۤ*5A(w!1¥"q#S80:k# ҧߧ 9a@/7Ҩb m }INB [ e r|  ƬGҬ7 R]wJWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2020-01-05 18:49+0000 Last-Translator: Balázs Meskó Language-Team: Hungarian Language: hu MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 3.9.1 „BETŰKÉSZLET” az emodzsiválasztó párbeszédablakon„NYELV” az emodzsi párbeszédablak annotációhoz. Például „en”%s: ismeretlen parancs! (Nincs megvalósítva)…Betűkészlet és stílusGlobális bevitelimód-beállításokBillentyűzetkiosztásGyorsbillentyűkIndulásIBus Az intelligens beviteli busz Honlap: https://github.com/ibus/ibus/wiki Az aktív beviteli mód a fenti listában szereplők közül állítható be, a gyorsbillentyűk megnyomásával, vagy a panel ikonra kattintva.NévjegyTevékenységekA kiválasztott beviteli mód hozzáadása az engedélyezett beviteli módokhozAdlamSpeciálisÉgei számokAhomAlkímiai szimbólumokÁlnév: %sAlfabetikus megjelenítési alakokMindigAnatóliai hieroglifákÓgörög zenei jelölésÓgörög számokŐsi szimbólumokÁllatok és természetAnnotációk: %sArabArab bővített – AArab matematikai ábécészimbólumokArab megjelenítési alakok – AArab megjelenítési alakok – BArab kiegészítésÖrményNyilakSzerző: %s Automatikus elrejtésAvesztánBalinézBamumBamum kiegészítésAlap latinBassa VahBatakBengáliBhaiksukiBlokkelemekBopomofoBopomofo bővítettBal alsó sarokJobb alsó sarokDobozrajzolásBráhmiBraille-jelekEmodzsi választás visszahozásaBuginézBuhidBizánci zenei szimbólumokCJK kompatibilitásCJK kompatibilitási alakokCJK kompatibilitási képírásjelekCJK kompatibilitási képírásjel kiegészítésCJK radikális kiegészítésCJK vonalakCJK szimbólumok és központozásCJK egyesített képírásjelekCJK egyesített képírásjel kiegészítés – FCJK egyesített képírásjel kiegészítés – BCJK egyesített képírásjel kiegészítés – CCJK egyesített képírásjel kiegészítés – DCJK egyesített képírásjel kiegészítés – ECJK egyesített képírásjel kiegészítés – FNem lehet csatlakozni a IBushoz. Emodzsi kiválasztás megszakítva.Jelöltek tájolása:KariaiKaukázusi albaniaiCsakmaChamCserokiCseroki kiegészítésSakk szimbólumokVálasszon egy feltételt az emodzsi annotációk részleges illesztéséhezVálassza ki az emodzsi párbeszédablakon megjelenő emodzsi szótárak alapértelmezett nyelvét. A $lang érték ebbe lesz behelyettesítve: /usr/share/ibus/dicts/emoji-$lang.dictVálasszon egyet a következő feltételek közül, az emodzsi annotációk részleges illesztéséhez: 0 == szó elejére illesztés, 1 == szó végére illesztés, 2 == tartalmazási illesztésKattintson a figyelmeztető üzenet megtekintéséhezBezárásKódpont: %sEgyesítő diakritikus jelekEgyesítő diakritikus jelek bővítettEgyesítő diakritikus jelek kiegészítéseEgyesítő diakritikus jelek szimbólumokhozEgyesítő féljelekParancsok: Általános indiai számalakokÖsszetevőTartalmazó illeszkedésVezérlőkarakterek jeleiEmodzsi vágólapra másolva.KoptKopt epact számokCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Számolórúd számjegyekRegisztrációs gyorsítótár létrehozásaÉkírásÉkírásos szimbólumok és írásjelekPénznemek szimbólumaiEgyéniEgyéni betűkészletEgyéni emodzsi betűkészlet neve az emodzsi párbeszédablakonEgyéni betűkészlet neve a nyelv panelhezCiprióta szótagírásCirillCirill bővített – ACirill bővített – BCirill bővített – CCirill kiegészítésA DConf megőrzi a név előtagokatEmodzsi szótár alapértelmezett neveLeírás: Leírás: %sDeseretDévanágariDévanágari bővítettÁbrácskákGyorsbillentyűk letiltásaLetiltás:Ne mutassaDograDominókKészDuployanKora dinasztiai ékírásEgyiptomi hieroglifa formátumvezérlőkEgyiptomi hieroglifákElbasanElámiElőszerkesztett szöveg beágyazásaElőszerkesztett szöveg beágyazása az alkalmazásablakbaElőszerkesztett szöveg beágyazása az alkalmazás ablakábaA beviteli mód előszerkesztett szövegének beágyazása az alkalmazás ablakábaEmodzsiEmodzsi választásEmodzsi annotációk nyelve:Emodzsi annotáció:Az emodzsi annotációkra lehet részlegesen illeszteniEmodzsi gyorsbillentyűket a gtk_accelerator_parse részéreEmotikonokBeviteli mód engedélyezése alapértelmezésbenBeviteli mód engedélyezése alapértelmezésben, amikor az alkalmazás beviteli fókuszba kerülEngedélyezés vagy tiltás:Gyorsbillentyűk engedélyezéseEngedélyezés:Közrezárt alfanumerikus kiegészítésKözrezárt alfanumerikus karakterekKözrezárt CJK betűk és hónapokKözrezárt képírásjel kiegészítésAlrendszerek sorrendjeEtiópEtióp bővítettEtióp bővített – AEtióp kiegészítésKilépés az ibus-daemon-bólBETŰKÉSZLETNem sikerült lekérni a jelenlegi szöveges alkalmazást. Hozza újra fókuszba az alkalmazást. Például nyomja meg többször az Esc gombot az emodzsi beírási módból kilépéshez, kattintson az asztalra, majd újra a szöveges alkalmazásra.KedvencekZászlókA bemeneti kurzor követése, ha a panel mindig megjelenikÉtel és italÁltalánosÁltalános központozásGeometriai alakzatokGeometriai alakzatok bővítettGrúzGrúz bővítettGrúz kiegészítésNem sikerült az általános alrendszer lekérése. GlagolitaGlagolita kiegészítésGótGranthaGörög bővítettGörög és koptGudzsarátiGunjalai gondiGurmukhiFél- és teljes szélességű alakokHangul jamo kompatibilitásHangul jamoHangul jamo bővített – AHangul jamo bővített – BHangul szótagokHanifi rohingjaHanunooVannak emodzsi változataiHatranHéberAutomatikus elrejtésFelső pótlások személyes használatraFelső pótlásokHiraganaVízszintesIBus panelIBus beállításokAz IBus démon nem indítható el %d másodpercen belülAz IBus elindult. Ha nem tudja használni az IBust, adja a következő sorokat a $HOME/.bashrc fájlhoz; majd jelentkezzen be újra. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusAz IBus egy intelligens beviteli busz Linux/Unix rendszerekhez.IPA kiegészítésekKépírásjel leíró karakterekIdeografikus szimbólumok és írásjelekHa az emodzsi annotációkat részleges szövegre kell illeszteni, pontos egyezés helyettHa igaz, akkor a panel követi a bemeneti kurzort abban az esetben, ha a panel mindig megjelenik. Ha hamis, akkor a panel egy fix helyen jelenik meg.Birodalmi arámiIndiai siyaq számjegyekBeviteli módFeliratos pahlaviFeliratos pártusJávaiKaithiKana bővített – AKana kiegészítésKanbunKang-hszi radikálisokKannadaKatakanaKatakana fonetikus bővítésekKayah LiBill.Billentyűkód:Billentyűzetkiosztás: %s GyorsbillentyűkKharostiKhmerKhmer szimbólumokKhodzskiKhudawadiNYELVNyelvi panel pozíciójaNyelvi panel elhelyezése:Nyelv: %s LaoLatin további bővítettLatin bővített – ALatin bővített – BLatin bővített – CLatin bővített – DLatin bővített – ELatin kiosztások, amelyekben nincs ASCIILatin-1 kiegészítésLepchaBetűszerű szimbólumokLimbuLineáris ALineáris B képírásjelekLineáris B szótagírásCsak az alrendszerek nevének listázásaLisuUnicode adatok betöltése indításkorUnicode adatok betöltése indításkor, ha igaz. Körülbelül 15 MB memória szükséges az adatok betöltéséhez. Ha hamis, akkor a Unicode adatok a párbeszédablak megnyitásakor lesznek betöltve. A Unicode adatok mindenképpen az emodzsi adatok után lesznek betöltve, akkor is ha igaz.Emodzsi adatok betöltése indításkorEmodzsi adatok betöltése indításkor, ha igaz. Körülbelül 10 MB memória szükséges az adatok betöltéséhez. Ha hamis, akkor az emodzsi adatok a párbeszédablak megnyitásakor lesznek betöltve.Unicode szótár betöltése:Alsó pótlásokLükiaiLüdMahajaniMadzsong kövekMakasarMalajálamMandeusManicheaiMarchenMasaram-féle gondiAz emodzsi annotációk részleges illesztése, a pontos egyezés helyett, ha több mint ennyi karakter lett megadva.Az emodzsi annotációk részleges illesztése a következő feltétel szerint, ha több mint ennyi karakter lett megadva:Illesztés a megadott hosszúságú emodzsi annotációkraIllesztés a megadott egész szám feltételévelIllesztés a megadott egész számmal egyező hosszraMatematikai alfanumerikus szimbólumokMatematikai operátorokMaja számjegyekMedefaidrinMeetei MayekMeetei Mayek kiegészítésekMende KikakuiMenüMeroita dőltMeroita hieroglifákMiaoKiegészítő matematikai szimbólumok – AKiegészítő matematikai szimbólumok – BEgyéb szimbólumokEgyéb szimbólumok és nyilakEgyéb szimbólumok és piktogramokEgyéb műszaki jelekModiMódosító hangjelekMódosítók:MongolMongol kiegészítésTovább…A kiválasztott beviteli mód mozgatása lefelé az engedélyezett beviteli módok közöttA kiválasztott beviteli mód mozgatása felfelé az engedélyezett beviteli módok közöttMroMultaniZenei szimbólumokBurmaiBburmai bővített – ABurmai bővített – BNKoNabateusNév: %sNandinágariÚj Tai LüNewaKövetkező alrendszer gyorsbillentyűiKövetkező beviteli mód:Nincs alrendszer beállítva. NincsSzámalakokNü-suNyiakeng Puachue HmongTárgyakOghamOl ChikiSzékely–magyar rovásírásRégi itáliaiRégi északi arabRégi permiÓperzsaRégi szogdRégi déli arabRégi törökUnicode választás megnyitásaOptikai karakterfelismerésKikeresési tábla tájolásaKikeresési tábla tájolása. 0 = vízszintes, 1 = függőlegesOrijaDíszítő apróságokOsageOsmanyaEgyébTöbbiOszmán siyaq számjegyekPage DownPage UpPahawh HmongPalmüraiPau Cin HauEmberek és testPhags-paPhaisztoszi korongFöníciaiFonetikus bővítésekFonetikus bővítések kiegészítéseJátékkártyákNyomjon meg egy billentyűt (vagy billentyűkombinációt)Nyomjon meg egy billentyűt (vagy billentyűkombinációt). Az ablak a billentyű felengedésekor bezáródik.Felugró ablak késleltetése az IME váltóablaknálBeállításokElőtag illeszkedésA DConf előtaggal látja el a kulcsokat, hogy ne legyenek névkonverziókAlrendszerek előtöltéseAlrendszerek előtöltése az ibus indításakorElőző alrendszer gyorsbillentyűiElőző beviteli mód:Az ibus-daemon D-Bus címének kiírásaSzemélyes használatra kijelölt tartományZsoltáros pahlaviKilépésAz XKB ikon RGBA értékeA rendszer regisztrációs FÁJLjának olvasása.A rendszer regisztrációs gyorsítótárának olvasása.RejangA kiválasztott beviteli mód eltávolítása az engedélyezett beviteli módok közülA beállítási értékek visszaállításaVisszaállítás…ÚjraindításAz ibus-daemon újraindításaRumi számszimbólumokAz xmodmap futtatása, ha létezik .xmodmap vagy .Xmodmap fájl az ibus alrendszerváltáskor.RúnákSzamaritánusSaurashtraA párbeszédablakon lévő emodzsi vágólapra mentése Mentett alrendszerek sorrendje a beviteli módok listájábanMentett verziószámVálasszon nyelvetVálasszon beviteli módot%s gyorsbillentyűjének kiválasztásaIBus beállítások megadásaUnicode jelöltekből álló betűkészlet beállítása az emodzsi párbeszédablakonEmodzsi annotációk nyelvének beállítása az emodzsi párbeszédablakonNem sikerült az általános alrendszer beállítása. Alrendszer beállítása vagy lekéréseBeállítja a felugró ablak késleltetését az IME váltóablaknál. Az alapértelmezett 400.0 = Ablak azonnali megjelenítése. 0 < Késleltetés ezredmásodpercben. 0 > Nem jeleníti meg az ablakot, és átvált a következő/előző alrendszerre.Az ibus viselkedésének megadása, hogyan jelenítse meg vagy rejtse el a nyelvi sávotJelöltek tájolásának beállítása a keresési táblábanSharadaAzonos beviteli mód megosztása minden alkalmazás köztShaw-féle ábécéGyorsírás formátum vezérlőkElérhető alrendszerek megjelenítéseEmodzsi változatok megjelenítéseIkon megjelenítése az értesítési területenInformációk megjelenítése a kiválasztott beviteli módrólBeviteli mód nevének megjelenítéseBeviteli mód nevének megjelenítése a nyelvi eszköztáronA beviteli mód nevének megjelenítése a nyelvi eszköztáron, ha be van jelölve a mezőTulajdonságpanel megjelenítése:Jelenítse meg a kiválasztott beviteli mód beállításaitBeállítási értékek megjelenítéseA regisztrációs gyorsítótár tartalmának megjelenítéseEzen információk megjelenítéseVerzió megjelenítéseSziddhamSzingalézSzinhala archaikus számokKisalakú változatokKis kana bővítésHangulatjelek és érzelmekSzogdSzora szompengSzojomboTérköz módosító betűkKülönlegesAz IBus indítása bejelentkezéskorUtótag illeszkedésSzundaiSzundai kiegészítésAlsó és felső indexKiegészítő nyilak AKiegészítő nyilak BKiegészítő nyilak CKiegészítő matematikai operátorokKözpontozási kiegészítésKiegészítő szimbólumok és piktogramokKiegészítő személyes használatú terület AKiegészítő személyes használatú terület BSutton-féle jelnyelvSyloti NagriSzimbólumokSzimbólumok és piktogramok bővített – ASzírSzír kiegészítésTagalogTagbanwaCímkékTai LeTai ThamTai VietTai Xuan Jing szimbólumokTakriTamilTamil kiegészítésTangutTangut komponensekTeluguThaanaThaiAz IBus démon nem fut. Elindítja?A tulajdonságpanel viselkedése. 0 = Nem jelenik meg, 1 = Automatikus elrejtés, 2 = Mindig látszikA tulajdonságpanel megjelenítési ideje ezredmásodpercbenHány ezredmásodpercig jelenjen meg a tulajdonságpanel a fókuszálás, vagy a tulajdonságok változása után.A panel ikon megjelenítési ideje egy tulajdonsághoz ezredmásodpercbenA panel ikon megjelenítési ideje egy tulajdonsághoz ezredmásodpercben, ha az alrendszerek között vált, és ha a tulajdonság az icon-prop-key értékeként van megadva az IBusEngineDesc-ben. Ha az érték 0, akkor nincs késleltetés, és a tulajdonságikon azonnal megjelenik.A regisztrációs gyorsítótár érvénytelen. A mentett verziószám arra lesz használva, hogy ellenőrizve legyen az előzőleg telepített ibus, és az ibus jelenlegi verziója közti különbség.Gyorsbillentyűk a következő beviteli módra váltáshozGyorsbillentyűk az előző beviteli módra való váltáshozA lista következő beviteli módjára váltásához használt gyorsbillentyűA lista előző beviteli módjára váltásához használt gyorsbillentyűGyorsbillentyű az Unicode bevitel ki- vagy bekapcsolásáhozGyorsbillentyűk az emodzsi bevitel ki- vagy bekapcsolásáhozA beviteli mód kikapcsolásához használt gyorsbillentyűkA beviteli mód bekapcsolásához használt gyorsbillentyűkGyorsbillentyűk a beviteli mód ki- vagy bekapcsolásáhozGyorsbillentyű az Unicode kódpont-átalakítások engedélyezéséhezGyorsbillentyű az emodzsi annotációk vagy a Unicode nevek átalakításának engedélyezéséhezTibetiTifinaghTirhutaBal felső sarokJobb felső sarokKözlekedési és térkép szimbólumokUtazás és helyekGyorsbillentyűk aktiválásaAktiválja a gyorsbillentyűket a gtk_accelerator_parse részéreUSA kiosztás a Latin kiosztások mögé fűzve. A változat elhagyható.UgaritiUnicode választásUnicode kódpont:Unicode betűkészlet:Unicode gyorsbillentyű a gtk_accelerator_parse részéreEgyesített kanadai őslakos szótagírásEgyesített kanadai őslakos szótagírás bővítettHasználat: %s PARANCS [KAPCSOLÓK…] Egyéni betűkészlet használataEgyéni betűkészlet használata a nyelv panelenEgyéni betűkészlet használata:A motor séma útvonalainak használata az ibus mag helyett, mely vesszővel elválasztott értékekből állhat.Globális beviteli mód használataHasználja a Shift billentyűt a gyors visszaváltáshoz a korábbi beviteli módraA rendszer billentyűzetkiosztásának (XKB) használataRendszer billentyűzetkiosztásának használataXmodmap használataVaiVáltozatválasztókVariációválasztó kiegészítésVédikus bővítésekFüggőlegesFüggőleges alakokWanchoWarang CitiAz emodzsi annotációkra lehet-e részlegesen illeszteniIlleszthetőek-e részleges karakterláncokra az emodzsi annotációk, a pontos egyezés helyett.A rendszer regisztrációs FÁJLjának írása.A rendszer regisztrációs gyorsítótárának írása.Az XKB ikon a kiosztási karakterláncot mutatja, és a karakterlánc RGBA értékként jelenik meg. Az RGA érték a következők egyike lehet. 1. egy X11 színnév, 2. egy hexadecimális érték „#rrggbb” formában, ahol az „r”, „g” és „b” a vörös, zöld és kék színek értékei hexadecimális számjegyekkel, 3. egy RGB szín „rgb(r,g,b,a)” vagy 4. egy RGBA szín „rgba(r,g,b,a)” alakban, ahol az „r”, „g” és „b” egész számok 0 és 255 között, vagy százalékos értékek 0% és 100% között, az „a” pedig az alfa lebegőpontos értéke 0 és 1 között.Yi radikálisokYi szótagokJi csing hexagram szimbólumokAnnotációkat adhat hozzá a kedvenc, listában szereplő emodzsijainak.Megjelenítheti a kedvenc emodzsijait a listában, ha vannak ilyen karakterek.Zanabazar-féle négyzet_NévjegyHozzá_adás_Alkalmaz_Mégse_Bezárás_Törlés_Le_OKB_eállítások_Eltávolítás_Feldefault:LTRkedvenc emodzsik annotációinak listája az emodzsi párbeszédablakonkedvenc emodzsik listája az emodzsi párbeszédablakonnyelv: %s beviteli módok váltásaZoltan Hoppar , 2012. Meskó Balázs , 2017. Launchpad Contributions: Gabor Kelemen https://launchpad.net/~kelemeng Muszela Balázs https://launchpad.net/~bazsi86-deactivatedaccount Ocsovszki Dorián https://launchpad.net/~gorkhaan Robert Roth https://launchpad.net/~evfool Token https://launchpad.net/~kozmad fergekolferol https://launchpad.net/~ferge-kolferolibus-1.5.22/po/pt_BR.po0000644000000000000000000031307213623751602011431 00000000000000# Portuguese (Brazil) translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2020 Takao Fujiwara # 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 # Daniel Lara , 2016. #zanata # Frederico Henrique Gonçalves Lima , 2017. #zanata # Jonathan Muttini Topanotti , 2017. #zanata # Mateus de Melo Santos , 2017. #zanata # fujiwara , 2018. #zanata # Cássio Rodrigo Honorato Rodrigues , 2019. #zanata # Rafael Fontenelle , 2020. msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2020-01-05 18:49+0000\n" "Last-Translator: Rafael Fontenelle \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.9.1\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Pré-carregar motores" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Carrega motores durante a inicialização do ibus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Ordem dos motores" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Ordem dos motores salva na lista de método de entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Milissegundos de atraso do pop-up para a janela de alternador IME" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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 "" "Define o atraso do pop-up em milissegundos para mostrar a janela do " "comutador IME. O padrão é 400. 0 = Mostra a janela imediatamente. 0 < Atraso " "em milissegundos. 0 > Não mostra a janela e troca os motores anteriores/" "próximos." #: data/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Número da versão salvo" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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 "" "O número da versão salvo será utilizado para verificar a diferença entre a " "versão do ibus instalado anteriormente e o da versão atual do ibus." #: data/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Layouts latinos que não contêm ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" "O layout dos EUA é anexado aos layouts Latinos, variantes podem ser omitidas." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Usar xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "Executar xmodmap se .xmodmap ou .Xmodmap existir quando os motores do ibus " "forem alternados." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Usar o layout de teclado do sistema" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Usa o layout de teclado do sistema (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Embutir texto de pré-edição" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Embute texto de pré-edição na janela do aplicativo" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Usar método de entrada global" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Compartilha o mesmo método de entrada entre todos os aplicativos" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Habilitar método de entrada por padrão" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "Habilita método de entrada por padrão quando o aplicativo obtiver o foco de " "entradas" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "Prefixos de nome de preservação do DConf" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefixos das chaves do DConf para parar a conversão do nome" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Aciona teclas de atalho" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 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" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Acionar teclas de atalho para gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Habilitar teclas de atalho" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "As teclas de atalho para ligar o método de entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Desabilitar teclas de atalho" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "As teclas de atalho para desligar o método de entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Atalhos de teclado do próximo motor" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 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/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Teclas de atalho do motor anterior" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 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/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Ocultar automaticamente" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "O comportamento do painel de propriedades. 0 = Não mostrar, 1 = Ocultar " "automaticamente, 2 = Sempre mostrar" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Posição do painel de idioma" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "Siga o cursor de entrada no caso do painel estar sendo sempre exibido" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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 "" "Se verdadeiro, o painel seguirá o cursor de entrada no caso do painel estar " "sendo sempre exibido. Se falso, o painel é exibido em uma localização fixa." #: data/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Os milissegundos para exibir as propriedades do painel" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Os milissegundos para exibir as propriedades do painel após obter foco ou as " "propriedades foram alteradas." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orientação da tabela de pesquisa" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientação da tabela de pesquisa. 0 = Horizontal, 1 = Vertical" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Mostrar um ícone na área de notificação" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Mostrar nome do método de entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Mostra o nome do método de entrada na barra de idiomas" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "Valor RGBA de um ícone XKB" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage values in the range 0% to 100%, and 'a' is a floating point value " "in the range 0 to 1 of the alpha." msgstr "" "O ícone XKB exibe a cadeia de caracteres de leiaute e a cadeira de " "caracteres é apresentada pelo valor RGBA. O valor RGBA pode ser 1. um nome " "de cor do X11, 2. um valor hexa no formato '#rrggbb' aonde 'r', 'g' e 'b' " "são dígitos hexa para o red (vermelho), green (verde), e blue (azul), 3. uma " "cor RGB no formato 'rgb(r,g,b)' ou 4. Uma cor RGBA no formato 'rgba(r,g,b," "a)' aonde 'r', 'g', e 'b' são ou inteiros entre 0 e 255 ou valores em " "porcentagem entre 0% e 100%, e 'a' é um valor em ponto flutuante entre 0 e 1 " "do alfa." #: data/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "Os milissegundos para exibir o ícone do painel para uma propriedade" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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 "" "Os milissegundos para exibir o ícone do painel através do ícone do motor " "para um ícone de propriedade sempre que motores são alternados se a " "propriedade está especificada pelo valor de icon-prop-key em IBusEngineDesc. " "Se o valor é 0, não há tempo de espera e o ícone da propriedade será exibido " "imediatamente." #: data/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Usar fonte personalizada" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Usa o nome de fonte personalizada para o painel de idiomas" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Fonte personalizada" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Nome de fonte personalizada para o painel de idiomas" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Teclas de atalho Unicode para gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "As teclas de talho para ligar ou desligar digitação em Unicode" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Teclas de atalho de emoji para o gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "As teclas de atalho para ligar ou desligar a digitação de emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "Nome da fonte customizada para caracteres emoji no diálogo emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Idioma padrão para o dicionário emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Escolha o idioma padrão para os dicionários emoji no diálogo emoji. O valor " "$lang é aplicado em /usr/share/ibus/dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "lista de emoji favoritos no diálogo emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Você pode exibir os emojis favoritos na lista de emoji se essa lista tiver " "algum caractere." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "Lista de anotações emoji favorita no diálogo emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "Você pode atribuir uma anotação para um emoji favorito nesta lista." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "Se as anotações emoji podem ser combinadas parcialmente ou não" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Se as anotações emoji podem ser correspondidas com uma string parcial em vez " "da correspondência exata ou não." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Corresponder anotações emoji com o comprimento especificado" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Combina as anotações emoji parcialmente com mais do que o número " "especificado de caracteres, em vez da correspondência exata." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" "Escolher uma condição para corresponder parcialmente às anotações de emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Escolha uma das seguintes condições para corresponder parcialmente às " "anotações de emoji: 0 == Correspondência de prefixo, 1 == Correspondência de " "sufixo, 2 == Correspondência de correspondência" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Carregar os dados emoji no momento da inicialização" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Carrega os dados de emoji no momento da inicialização, se verdadeiro. São " "necessários cerca de 10 MB de memória para carregar os dados. Carrega os " "dados do emoji quando abrir a caixa de diálogo emoji no início, se falso." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Carregar os dados Unicode no momento da inicialização" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Carrega os dados Unicode no momento da inicialização, se verdadeiro. São " "necessários cerca de 15 MB de memória para carregar os dados. Carrega os " "dados Unicode quando abrir a caixa de diálogo emoji no início, se falso. Os " "dados Unicode sempre são carregados após os dados emoji serem carregados, " "mesmo que sejam verdadeiros." #: 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:209 msgid "Other" msgstr "Outros" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Selecione um idioma" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Cancelar" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Mais…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Sobre" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Fechar" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Idioma: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Layout do teclado: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Descrição:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Selecione um método de entrada" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Adicionar" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Método de entrada" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Preferências do IBus" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Definir Preferências do IBus" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Atalhos do teclado" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Código de tecla:" #: 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 "_Excluir" #: 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 "" "Pressione uma tecla (ou uma combinação de teclas).\n" "O diálogo será encerrado quando a tecla for liberada." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Pressione uma tecla (ou uma combinação de teclas)" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "Utilize o atalho com o shift para mudar para o método de entrada anterior" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "O daemon IBus não está em execução. Você deseja iniciá-lo?" #: setup/main.py:536 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.\n" "export GTK_IM_MODULE=ibus\n" "export XMODIFIERS=@im=ibus\n" "export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: setup/main.py:550 #, 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:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Selecione o atalho de teclado para %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "mudando métodos de entrada" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horizontal" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertical" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Canto superior esquerdo" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Canto superior direito" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Canto inferior esquerdo" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Canto inferior direito" #: setup/setup.ui:37 msgid "Custom" msgstr "Personalizado" #: setup/setup.ui:48 msgid "Do not show" msgstr "Não mostrar" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Ocultar automaticamente" #: setup/setup.ui:54 msgid "Always" msgstr "Sempre" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Próximo método de entrada:" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Método de entrada anterior:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Ativa ou desativa:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Habilitar:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Desabilitar:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Atalhos de Teclado" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Configure a orientação dos candidatos na tabela de pesquisa" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Orientação dos candidatos:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" "Configure o comportamento do ibus para como mostrar ou ocultar a barra de " "idiomas" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Mostrar painel de propriedades:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Posição do painel de idiomas:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Mostra o nome do método de entrada na barra de idioma quando selecionando a " "caixa de seleção" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Embutir texto de pré-edição na janela do aplicativo" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" "Embute o texto de pré-edição do método de entrada na janela do aplicativo" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Usar a fonte personalizada:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Fonte e estilo" #: setup/setup.ui:579 msgid "General" msgstr "Geral" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" "Adiciona o método de entrada selecionado nos métodos de entrada ativados" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Remover" #: setup/setup.ui:689 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:700 msgid "_Up" msgstr "A_cima" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Move para cima o método de entrada selecionado na lista dos métodos de " "entrada" #: setup/setup.ui:718 msgid "_Down" msgstr "A_baixo" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" "Move o método de entrada selecionado para baixo nos métodos de entrada " "ativados" #: setup/setup.ui:736 msgid "_About" msgstr "_Sobre" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Mostra informações do método de entrada selecionado" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Preferências" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Mostra configuração do método de entrada selecionado" #: setup/setup.ui:812 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 "" "O método de entrada ativo pode ser alternado com os selecionados " "na lista acima pressionando as teclas do atalho de teclado ou clicando no " "ícone do painel." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" "As teclas de atalho para habilitar as conversões das anotações emoji ou " "nomes Unicode" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Anotações emoji:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" "Os atalhos de teclado para habilita conversões de ponto de código Unicode" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Ponto de código Unicode:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "Define uma fonte de candidatos Unicode no diálogo de emojis" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Fonte Unicode:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Define um idioma de anotações emoji no diálogo de emojis" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Idioma de anotação de emoji:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Combinar as anotações de emoji parcialmente com a seguinte condição e mais " "que o número de caracteres:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Se as anotações de emoji puderem corresponder a uma sequência parcial, em " "vez da correspondência exata" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Correspondência de prefixo" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Correspondência de sufixo" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Correspondência de conteúdo" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emoji" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Layout do teclado" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Configurações globais de método de entrada" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Avançado" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "O barramento de entrada inteligente\n" "Página inicial: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Iniciar o ibus ao iniciar a sessão" #: setup/setup.ui:1358 msgid "Startup" msgstr "Inicialização" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Atividades" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Animais & natureza" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Componente" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Bandeiras" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Comida & bebida" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Objetos" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "Pessoa & corpo" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "Smileys & emoticon" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Símbolos" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Viagem & lugares" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Latim básico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Latim-1 suplemento" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Latim estendido A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Latim estendido B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "Extensões IPA" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Letras modificadoras de espaçamento" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Marcas diacríticas combinadas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Grego e Copta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Cirílico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Suplemento cirílico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Armênio" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Hebraico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Árabe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Siríaco" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Suplemento árabe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "N'Ko" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Samaritano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandaico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Suplemento siríaco" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Árabe estendido A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Devanágari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengalês" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmukhi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Guzerate" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Oriá" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tâmil" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Télugo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Canarês" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malaiala" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Cingalês" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Tailandês" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Laosiano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tibetano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Birmanês" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Georgiano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Hangul Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Etíope" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Suplemento etíope" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Cherokee" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Sílabas unificadas dos aborígenes canadenses" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Rúnico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Tágalo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunoo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buhid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Tagbanwa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Khmer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Mongol" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Sílabas estendidas unificadas dos aborígenes canadenses" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai Lü" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Tai Lü Novo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Símbolos Khmer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Buginês" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Tai Tham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Marcas diacríticas combinadas estendidas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Balinês" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Sundanês" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepcha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Santali" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Cirílico estendido C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "Extensão georgiana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Suplemento sundanês" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Extensões védicas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Extensões Fonéticas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Extensões Fonéticas Complementares" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Suplemento de marcas diacríticas combinadas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Latim estendido adicional" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Grego estendido" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Pontuação Geral" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Sobrescritos e subscritos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Símbolos de moeda" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Marcas diacríticas combinadas para símbolos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Símbolos parecidos com letras" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Formulários de números" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Setas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Operadores matemáticos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Técnico diversos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Figuras de controle" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Reconhecimento óptico de caractere" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Alfanuméricos contidos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Desenhos de caixa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Elementos de bloco" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Formas Geométricas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Símbolos Variados" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Dingbats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Símbolos Matemáticos Variados-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Setas suplementares-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Padrões braile" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Setas suplementares-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Símbolos matemáticos variados-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Operadores matemáticos suplementares" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Símbolos variados e setas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Glagolítico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Latim estendido C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Copta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Suplemento georgiano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Etíope estendido" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Cirílico estendido A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Pontuação suplementar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "Suplemento de radicais CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Radicais Kangxi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Caracteres de descrição ideográfica" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "Símbolos e pontuação CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Hangul com Jamo de compatibilidade" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Bopomofo estendido" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "Traços CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Extensões fonéticas de katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Letras e meses CJK contidos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "Compatibilidade CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "Ideogramas unificados CJK extensão A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Símbolos hexagramas yijing" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "Ideogramas unificados CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Sílabas Yi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Radicais Yi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Vai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Cirílico estendido B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Letras modificadoras de tom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Latim estendido D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Syloti Nagri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Formatos numéricos índicos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Phagspa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurashtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Devanágari estendido" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Hangul Jamo estendido A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Javanês" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Birmanês estendido-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Cham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Birmanês estendido-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tailandês vietnamita" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Extensões Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Etíope estendido-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Latim estendido-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Suplemento cherokee" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Sílabas Hangul" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Hangul Jamo estendido B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Substituições altas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Substituições altas de uso privado" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Substituições baixas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Área de uso privado" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "Ideogramas de compatibilidade CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Formas de apresentação alfabética" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Formas de apresentação arábica-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Seletores de variação" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Formulários verticais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Meias marcas combinadas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "Formas de compatibilidade CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Variantes de pequenas formas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Formas de apresentação arábica-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Formas de meia e completa largura" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Especiais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Silabário linear B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Ideogramas linear B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Números Egeus" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Números gregos antigos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Símbolos antigos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Disco de Festos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Lício" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Carian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Números de cóptico epacta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Itálico antigo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gótico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Pérmico antigo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ugarítico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Persa antigo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Deseret" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Shavian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmanya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Elbasan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Albanês caucasiano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Linear A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Silabário cipriota" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "Aramaico imperial" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Palmireno" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nabateu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Hatran" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Fenício" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lídio" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Hieróglifos meroíticos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Meroítica cursiva" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Kharoshthi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Árabe do sul antigo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Árabe do norte antigo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Maniqueano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Avestan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Pártico inscrito" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Pálavi inscrito" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Pálavi psalter" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Turco antigo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Húngaro antigo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "Hanifi de Rohingya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Símbolos numéricos Rumi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "Sogdiano antigo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "Sogdiano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "Elymaic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Brahmi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaithi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Sora Sompeng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Chakma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Mahajani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Sharada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Números de cingalês arcaico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Khojki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Multani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Khudawadi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Grantha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Newa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Tirhuta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Siddham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Modi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Suplemento mongoliano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Dogra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Warang Citi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "Nandinagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Zanabazar Square" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Soyombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Masaram Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Gunjala Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Makassar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "Suplemento tamil" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Cuneiforme" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Números e Pontuação cuneiformes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Cuneiforme pré-dinástico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Hieróglifos egípcios" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "Controles de formato de hieróglifos egípcios" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Hieróglifos da anatólia" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Suplemento Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mro" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Bassa Vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Pahawh Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Medefaidrin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Miao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Símbolos e pontuação ideográficos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Tangut" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Componentes tangut" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Suplemento kana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Kana estendido-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "Extensão de kana pequeno" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Nushu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Duployé" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Controles de formato de taquigrafia" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Símbolos musicais bizantinos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Símbolos musicais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Notação musical grega antiga" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "Numeração maia" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Símbolos Tai Xuan Jing" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Barras de contar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Símbolos matemáticos alfanuméricos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Escrita de sinais Sutton" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Suplemento glagolítico" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "Nyiakeng Puachue Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "Wancho" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Mende Kikakui" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "Números de Siyaq indiano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "Números de Siyaq otomano" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Símbolos alfabéticos matemáticos árabes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Peças do Mahjong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Peças de dominó" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Jogo de cartas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Suplemento alfanumérico contidos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Suplemento ideográfico contido" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Símbolos diversos e pictogramas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Emoticons" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Símbolos ornamentais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Símbolos de mapa e transporte" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Símbolos alquímicos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Formas geométricas estendidas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Setas suplementares-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Símbolos suplementares e pictogramas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "Símbolos em xadrez" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "Símbolos e pictogramas estendidas-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "Ideogramas unificados CJK extensão B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "Ideogramas unificados CJK extensão C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "Ideogramas unificados CJK extensão D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "Ideogramas unificados CJK extensão E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "Ideogramas unificados CJK extensão F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "Suplemento de ideogramas de compatibilidade CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Marcas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Suplemento de seletores de variação" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Área de uso privado suplementar-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Área de uso privado suplementar-B" #: tools/main.vala:51 msgid "List engine name only" msgstr "Somente o Nome do motor da lista" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Não foi possível conectar ao IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "idioma: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Nenhum motor está definido.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "A configuração do motor global falhou.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "A obtenção de motor global falhou.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Lê o cache de registro do sistema." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Lê o ARQUIVO de cache de registro." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "O cache de registro é inválido.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Escreve o cache de registro do sistema." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Escreve o ARQUIVO de cache de registro." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "Usa caminhos de esquema de motores em vez do ibus core, que podem ser " "valores separados por vírgula." #: tools/main.vala:381 msgid "Resetting…" msgstr "Redefinindo…" #: tools/main.vala:399 msgid "Done" msgstr "Concluído" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Define ou obtém o motor" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Encerra o ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "Mostra os motores disponíveis" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Não implementado)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Reinicia o ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "Mostra a versão" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Mostra o conteúdo do cache de registro" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Cria um cache de registro" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Imprime o endereço D-Bus do ibus-daemon" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Mostra os valores de configuração" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Redefine os valores de configuração" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Salva emoji no diálogo para a área de transferência " #: tools/main.vala:458 msgid "Show this information" msgstr "Mostra essa informação" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Uso: %s COMANDO [OPÇÃO...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Comandos:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s é um comando desconhecido!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Favoritos" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Outros" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Abrir escolha de Unicode" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Trazer de volta escolha de emoji" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Page Down" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Page Up" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Mostrar variações de emoji" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Fechar" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Menu" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Clique para visualizar o aviso" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Carregando um dicionário Unicode:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Ponto de código: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Possui variações de emoji" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Descrição: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Nenhum" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Anotações: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Nome: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Apelido: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Escolha do emoji" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Escolha de Unicode" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "Falha ao obter o aplicativo de texto atual. Mude o foco para seu aplicativo " "novamente. Por exemplo, pressione a tecla Esc várias vezes para liberar o " "modo de digitação emoji, clique na área de trabalho e clique no aplicativo " "de texto novamente." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Escolha de um emoji cancelada." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Emoji copiado para a sua área de transferência." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "\"FONTE\" para caracteres no diálogo emoji" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "FONTE" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "\"LANG\" para anotações em diálogo emoji. Por exemplo, \"en\"" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "LANG" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Anotações emoji podem ser correspondidas parcialmente" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Corresponder com o comprimento do inteiro especificado" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Corresponder com a condição do inteiro especificado" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "Painel IBus" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus é um barramento de entrada inteligente para o Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Rafael Fontenelle " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Preferências" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Reiniciar" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/uk.po0000644000000000000000000034445213623751602011050 00000000000000# Ukrainian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2020 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Yuri Chornoivan , 2011-2014, 2020. # Yuri Chornoivan , 2013, 2020. # Yuri Chornoivan , 2015. #zanata, 2020. # fujiwara , 2015. #zanata # Yuri Chornoivan , 2017. #zanata, 2020. # fujiwara , 2017. #zanata # Yuri Chornoivan , 2018. #zanata, 2020. # Yuri Chornoivan , 2019. #zanata, 2020. msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2020-01-08 10:24+0000\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian \n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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: Weblate 3.9.1\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Попередньо завантажувати рушії" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Попередньо завантажувати рушії під час запуску ibus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Порядок рушіїв" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Збережений порядок рушіїв у списку способів введення" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Затримка появи контекстного вікна для перемикача способів введення" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Збережений номер версії" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Розкладки латиниці, у яких немає символів ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" "Американська розкладка додається до латинських розкладок, варіант можна " "пропустити." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Використовувати xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "Запускати xmodmap, якщо є .xmodmap або .Xmodmap під час перемикання рушіїв " "ibus." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Використовувати розкладку клавіатури системи" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Використовувати розкладку клавіатури системи (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Вбудувати попередньо створений текст" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Вбудувати попередньо створений текст у вікно програми" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Використовувати загальний спосіб введення" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Використовувати один спосіб введення для всіх програм" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Типово увімкнути спосіб введення" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "Типово увімкнути спосіб введення, коли програма отримує фокус введення" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "Збереження DConf префіксів назв" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Префікси ключів DConf для припинення перетворення назв" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Клавіатурні скорочення-перемикачі" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Клавіатурне скорочення для вмикання і вимикання способів введення" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Комбінації клавіш для перемикання gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Увімкнути клавіатурні скорочення" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Клавіатурне скорочення для вмикання способів введення" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Вимкнути клавіатурні скорочення" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Клавіатурне скорочення для вимикання способів введення" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Скорочення для наступного рушія" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" "Клавіатурні скорочення для перемикання на наступний спосіб введення у списку" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Скорочення для попереднього рушія" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "Клавіатурне скорочення для перемикання на попередній спосіб введення" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Автоматично ховати" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Поведінка панелі властивостей. 0 = не показувати, 1 = автоматично ховати, 2 " "= завжди показувати" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Розташування мовної панелі" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "Слідувати за курсором введення, якщо панель показано завжди" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Тривалість показу панелі властивостей у мілісекундах" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Тривалість показу панелі властивостей (у мілісекундах) після фокусування або " "зміни властивостей." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Орієнтація таблиці пошуку" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Орієнтація таблиці пошуку. 0 = горизонтально, 1 = вертикально" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Показувати піктограму у системному лотку" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Показувати назву способу введення" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Показувати назву способу введення на мовній панелі" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "Значення RGBA для піктограми XKB" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" "Час у мілісекундах для приготування показу піктограми панелі для властивості" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Використовувати нетиповий шрифт" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Використовувати нетиповий шрифт для мовної панелі" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Нетиповий шрифт" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Назва нетипового шрифту для мовної панелі" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Клавіатурне скорочення Unicode для gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" "Клавіатурне скорочення для вмикання і вимикання введення символів Unicode" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Клавіатурне скорочення емодзі для gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "Клавіатурне скорочення для вмикання і вимикання введення емодзі" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "Назва нетипового шрифту для символів емодзі у вікні емодзі" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Типова мова словника емодзі" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Виберіть типову мову словників емодзі у вікні емодзі. Значення $lang " "застосовується до /usr/share/ibus/dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "Список улюблених емодзі у вікні емодзі" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Ви зможете переглянути улюблені емодзі у списку емодзі, якщо у цьому списку " "є якісь символи." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "список анотацій до улюблених емодзі у вікні емодзі" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "Ви можете додавати анотації до улюблених емодзі у цьому списку." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "Визначає, чи може бути встановлено часткову відповідність" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Визначає, чи може бути встановлено відповідність емодзі за частиною рядка, а " "не повним збігом." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Відповідність анотацій до емодзі за вказаною довжиною рядка" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Встановлювати часткову відповідність анотацій до емодзі, якщо збігається " "вказана кількість символів, але відповідність не є повною." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "Вибрати умову часткової відповідності анотацій до емодзі" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Виберіть одну з таких умов для встановлення часткової відповідності за " "анотаціями до емодзі: 0 == відповідність за префіксом, 1 == відповідність за " "суфіксом, 2 == відповідність за вмістом" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Завантажувати дані емодзі під час запуску програми" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Якщо true, завантаження даних емодзі під час запуску увімкнено. Для " "завантаження даних потрібно приблизно 10 МБ пам'яті. Якщо false, дані емодзі " "буде завантажено під час відкриття діалогового вікна емодзі на початку." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Завантажувати дані Unicode під час запуску" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Якщо true, завантаження даних Unicode емодзі під час запуску увімкнено. Для " "завантаження даних потрібно приблизно 10 МБ пам'яті. Якщо false, дані " "Unicode буде завантажено під час відкриття діалогового вікна емодзі на " "початку. Дані Unicode завжди завантажуватимуться після даних емодзі, навіть " "якщо встановлено значення true." #: 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:209 msgid "Other" msgstr "Інше" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Виберіть мову" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Скасувати" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_Гаразд" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Більше…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Інформація" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" 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 "Виберіть спосіб введення" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Додати" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Спосіб введення" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Налаштування IBus" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "Використовувати комбінацію з Shift для перемикання на попередній спосіб " "введення" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "Фонову службу IBus не запущено. Хочете її запустити?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Не вдалося запустити фонову службу IBus протягом %d секунд" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Виберіть клавіатурне скорочення для дії %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "перемикання способів введення" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Горизонтально" #: setup/setup.ui:14 msgid "Vertical" msgstr "Вертикально" #: setup/setup.ui:25 msgid "Top left corner" msgstr "У верхньому лівому куті" #: setup/setup.ui:28 msgid "Top right corner" msgstr "У верхньому правому куті" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "У нижньому лівому куті" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "У нижньому правому куті" #: setup/setup.ui:37 msgid "Custom" msgstr "Нетиповий" #: setup/setup.ui:48 msgid "Do not show" msgstr "Не показувати" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Автоматично ховати" #: setup/setup.ui:54 msgid "Always" msgstr "Завжди" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" "Клавіатурні скорочення для перемикання на наступний спосіб введення у списку" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Наступний спосіб введення:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" "Клавіатурне скорочення для перемикання на попередній спосіб введення у списку" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Попередній спосіб введення:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "…" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Увімкнення або вимикання:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Увімкнути:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Вимкнути:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Клавіатурні скорочення" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Встановити орієнтацію варіантів у таблиці пошуку" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Орієнтація варіантів:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Визначає поведінку ibus: спосіб показу або приховування мовної панелі" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Показ панелі властивостей:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Розташування мовної панелі:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Показати назву способу введення на мовній панелі, якщо позначено цей пункт" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Вбудувати попередньо створений текст у вікно програми" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "Вбудувати попередньо створений текст способу введення у вікно програми" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Нетиповий шрифт:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Шрифт і стиль" #: setup/setup.ui:579 msgid "General" msgstr "Загальне" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" "Додати позначений спосіб введення до списку увімкнених способів введення" #: setup/setup.ui:682 msgid "_Remove" msgstr "Ви_лучити" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" "Вилучити позначений спосіб введення зі списку увімкнених способів введення" #: setup/setup.ui:700 msgid "_Up" msgstr "В_гору" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Пересунути вгору позначений спосіб введення у списку увімкнених способів " "введення" #: setup/setup.ui:718 msgid "_Down" msgstr "В_низ" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" "Пересунути нижче позначений спосіб введення у списку увімкнених способів " "введення" #: setup/setup.ui:736 msgid "_About" msgstr "_Про програму" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Показати відомості щодо вибраного способу введення" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Параметри" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Показати панель налаштовування позначеного способу введення" #: setup/setup.ui:812 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 "" "Активний спосіб введення можна перемкнути у межах визначеного вище " "списку натисканням клавіатурного скорочення або піктограми на панелі." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" "Клавіатурне скорочення для вмикання перетворень анотацій емодзі або назв " "символів Unicode" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Анотація емодзі:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" "Клавіатурне скорочення для вмикання перетворень позицій у таблиці Unicode" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Позиція у таблиці Unicode:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "Встановити шрифт варіантів емодзі у Unicode у вікні емодзі" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Шрифт Unicode:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Встановити мову анотацій емодзі у вікні емодзі" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Мова анотацій емодзі:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Встановлювати відповідність емодзі за анотаціями з вказаною умовою та збігом " "понад таку кількість символів:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Визначає, чи може бути встановлено відповідність емодзі за частиною рядка, а " "не повним збігом" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Відповідність за префіксом" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Відповідність за суфіксом" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Відповідність за вмістом" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Емодзі" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Розкладка клавіатури" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Загальні параметри способів введення" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Додатково" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "Запускати ibus при вході" #: setup/setup.ui:1358 msgid "Startup" msgstr "Запуск" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Діяльність" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Тварини і природа" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Компонент" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Прапори" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Їжа і питво" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Об’єкти" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "Люди і тіло" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "Смайлики та емоції" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Символи" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Подорожі і місця" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Основні латинські" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Додаткові Latin-1" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Латинь розширена-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Латинь розширена-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "Розширена IPA" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Знаки інтервалів" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Об’єднання діакритичних знаків" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Грецькі і коптські" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Кирилиця" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Додаткова кирилиця" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Вірменська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Іврит" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Арабська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Сирійська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Додаткові арабські" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Таана" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "Н’Ко" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Самаритянська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Мандейська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Додаткові сирійські" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Арабська розширена-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Деванагарі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Бенгальська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Гурмухі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Гуджараті" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Орія" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Тамільська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Телугу" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Каннада" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Малаялам" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Сингальська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Тайська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Лаоська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Тибетська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "М’янмська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Грузинська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Хангиль-чжамо" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Ефіопська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Додаткові ефіопські" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Черокі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Уніфіковані силабічні канадських аборигенів" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Огам" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Рунічна" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Тагалог" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Хануну" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Бухід" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Таґбанва" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Кхмерська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Монгольська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Уніфіковані силабічні канадських аборигенів (додаткові)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Лімбу" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Тай лі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Нова тай лі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Кхмерські символи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Бугійська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Тай-тхем" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Розширення об’єднання діакритичних знаків" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Балійська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Сунданська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Батак" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Лепча" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ол-чикі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Кирилиця розширена-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "Грузинська розширена" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Розширена суданська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Ведичні розширення" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Фонетичні розширення" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Додаткові фонетичні розширення" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Додаткові об’єднання діакритичних знаків" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Латинські додаткові розширені" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Розширена грецька" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Загальна пунктуація" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Верхні і нижні індекси" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Символи грошових одиниць" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Об’єднання діакритичних знаків і символів" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Схожі на літери символи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Форми чисел" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Стрілки" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Математичні оператори" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Різні технічні" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Малюнки керування" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Оптичне розпізнавання знаків" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Буквено-цифрові у рамках" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Для малювання рамок" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Блокові елементи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Геометричні форми" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Різні символи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Декоративні" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Різні математичні символи-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Додаткові стрілки-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Шаблони Брайля" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Додаткові стрілки-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Різні математичні символи-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Додаткові математичні дії" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Різні символи і стрілки" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Глаголиця" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Латинь розширена-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Коптська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Додаткові грузинські" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Тіфінаг" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Розширена ефіопська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Розширена кирилиця-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Додаткова пунктуація" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "Додатки радикалів ієрогліфів" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Радикали кандзі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Символи-ідеограми" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "Ієрогліфічні символи і пунктуація" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Хірагана" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Катакана" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Бопомофо" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Сумісні корейські" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Канбун" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Додаткові бопомофо" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "Ієрогліфічні штрихи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Фонетичні розширення катакани" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Вкладені ієрогліфи і назви місяців" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "Сумісність з ієрогліфами" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "Ієрогліфічні ідеограми, додаток A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Символи гексаграм «Книги перетворень»" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "Універсальні ідеографічні ієрогліфи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Склади Ї" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Радикалі Ї" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Лісу" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Вай" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Кирилиця розширена-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Бамум" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Символи зміни тону" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Латинь розширена-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Силоті нагрі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Загальні індійські форми чисел" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Фагс-па" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Саураштра" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Розширена деванагарі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Кая-лі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Реджан" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Корейска розширена-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Яванська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "М’янмська розширена-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Тьям" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "М’янмська розширена-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Тай-в’єт" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Маніпурі розширена" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Ефіопська розширена-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Латинь розширена-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Додаткові черокі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Маніпурі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Склади хангиля" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Корейська розширена-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Верхні замінники" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Верхні приватні замінники" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Нижні замінники" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Область приватного використання" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "Сумісні ієрогліфічні ідеограми" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Форми відтворення абеток" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Форми відображення арабської A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Вибір варіантів" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Вертикальні форми" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Комбіновані позначки половинок" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "Сумісні ієрогліфічні форми" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Варіанти малих форм" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Форми відображення арабської B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Форми півширини та повної ширини" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Спеціальні" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Лінійна писемність B, склади" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Лінійна писемність B, ідеограми" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Егейські числа" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Давньогрецькі числа" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Давні символи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Фестський диск" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Лікійська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Карійська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Коптські місячні числа" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Давня італійська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Готичні" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Давня пермська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Угаритська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Давня перська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Дезерет" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Шавіан" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Османья" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Осейдж" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Ельбасан" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Кавказька албанська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Лінійна писемність A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Кіпріотська складова" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "імперська арамейська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Пальмірська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Набатейська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Хатран" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Фінікійська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Лідійська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Мероїтська ієрогліфічна" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Мероїтська, скоропис" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Кхароштхі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Давня південноарабська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Давня північноарабська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Маніхейська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Авестанська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Інскрипційна парфянська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Інскрипційна пехлеві" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Псалтирська пехлеві" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Давня турецька" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Давня угорська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "Ганіфі рохінджа" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Числові символи румі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "Давня согдійська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "Согдійська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "Елімаїдська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Брахмійська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Кайтхі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Соранг сомпенг" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Чакма" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Махаджані" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Шарада" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Сингальські архаїчні числа" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Ходжкі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Мултанська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Худабадська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Грантха" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Неварська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Тірхута" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Сіддхам" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Моді" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Додаткові монгольські" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Такрі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ахом" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Доґра" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Варанг-кшиті" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "Нандінагарі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Квадратний Занабазара" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Сойомбо" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Пау Цин Хау" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Бхайксукі" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Марчен" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Масарам гонді" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Гунджала гонді" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Макасар" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "Додаткова тамільська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Клинопис" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Клинописні числа і пунктуація" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Клинопис ранньої династії" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Єгипетська ієрогліфічна" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "Керування форматами єгипетських ієрогліфів" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Анатолійьска ієрогліфічна" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Розширений бамум" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Мро" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Басса-вах" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Пахау-хмонг" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Медефайдрін" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Мяо" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Ідеографічні символи і пунктуація" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Тангутська" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Компоненти тангутської" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Додаткова кана" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Кана розширена-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "Мале розширення кани" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Нюй-шу" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Система Дюполоє" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Керування форматами скоропису" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Візантійські музичні символи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Музичні символи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Давньогрецькі символи запису музики" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "Цифри майя" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Символи Тай Хуан Жинь" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Числа з паличок для лічби" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Математичні буквено-цифрові символи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Жестова писемність Саттон" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Додаткові глаголиці" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "Ньякензька пахау-хмонг" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "Ванчо" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Менде кікауї" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Адлам" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "Індійські числа сіяк" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "Оттоманські сіякські числа" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Арабські математичні символи абетки" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Плитки маджонґ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Плитки доміно" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Ігрові карти" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Додаткові буквенно-цифрові у рамках" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Додаткові ідеографічні у рамках" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Різні символи і піктограми" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Емоційки" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Орнаментальні декоративні" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Транспортні і картографічні символи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Алхімічні символи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Розширені геометричні форми" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Додаткові стрілки-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Додаткові символи і піктограми" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "Шахові символи" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "Символи і піктографи, розширення A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "Уніфіковані ієрогліфічні ідеограми, додаток B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "Ієрогліфічні ідеограми, додаток C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "Ієрогліфічні ідеограми, додаток D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "Ієрогліфічні ідеограми, додаток E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "Ієрогліфічні ідеограми, додаток F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "Додаткові ієрогліфічні ідеограми для сумісності" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Мітки" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Додаткові символи зміни" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Додаткова область приватного використання A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Додаткова область приватного використання B" #: tools/main.vala:51 msgid "List engine name only" msgstr "Показати лише список рушіїв" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Не вдалося встановити зв’язок з IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "мова: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Рушій не встановлено.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Спроба встановлення загального рушія зазнала невдачі.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Спроба отримання назви загального рушія зазнала невдачі.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Читати дані з загальносистемного кешу регістру." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Читати дані з кешу регістру у файлі ФАЙЛ." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "Кеш регістру є некоректним.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Записати дані до загальносистемного кешу регістру." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Записати дані до кешу регістру у файлі ФАЙЛ." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "Використовувати шляхи бази даних рушія замість ядра ibus. Шляхи слід " "вказувати у форматі списку значень, відокремлених комами." #: tools/main.vala:381 msgid "Resetting…" msgstr "Скидаємо…" #: tools/main.vala:399 msgid "Done" msgstr "Виконано" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Встановити рушій або отримати дані щодо встановленого рушія" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Завершити роботу фонової служби ibus" #: tools/main.vala:446 msgid "Show available engines" msgstr "Показати список доступних рушіїв" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(не реалізовано)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Перезапустити фонову службу ibus" #: tools/main.vala:449 msgid "Show version" msgstr "Показати дані щодо версії" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Показати вміст кешу регістру" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Створити кеш регістру" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Вивести адресу D-Bus фонової служби ibus" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Показати значення налаштувань" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Скинути значення налаштувань до початкових" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Зберегти емодзі з вікна до буфера обміну даними " #: tools/main.vala:458 msgid "Show this information" msgstr "Показати цю довідкову інформацію" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Користування: %s КОМАНДА [ПАРАМЕТР...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Команди:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "Команда %s є невідомою програмі!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Улюблені" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Інше" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Відкрити вибір Unicode" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Повернути вибір емоційок" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "На сторінку вниз" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "На сторінку вгору" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Показувати варіанти емодзі" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Закрити" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Меню" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Натисніть, щоб переглянути попередження" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Завантаження словника Unicode:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Точка кодування: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Має варіанти емодзі" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Опис: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Немає" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Анотації: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Назва: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Альтернативна назва: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Вибір емодзі" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Вибір Unicode" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "Не вдалося отримати дані поточної програми для роботи з текстом. Будь ласка, " "повторно встановіть фокус на вікно програми. Наприклад, натисніть клавішу " "Esc декілька разів, щоб вимкнути режим введення емодзі, клацніть на " "стільниці, а потім клацніть у вікні вашої програми для роботи з текстом." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Скасовано вибір емодзі." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Скопійовано емодзі до вашого буфера обміну даними." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "«ШРИФТ» для символів емодзі у діалоговому вікні емодзі" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "ШРИФТ" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "«МОВА» для анотацій у діалоговому вікні емодзі. Приклад: en" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "МОВА" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Встановлення відповідності за анотаціями до емодзі може бути частковим" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Відповідність за вказаною довжиною рядка" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Відповідність з умовою на вказану довжину рядка" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "Панель IBus" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus — інтелектуальний канал введення даних у Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Юрій Чорноіван " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Параметри" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Перезапустити" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "Вийти" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/sq.po0000644000000000000000000025077613623751602011061 00000000000000# Albanian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2017 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Sidorela Uku , 2017. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2017-04-20 11:38-0400\n" "Last-Translator: Sidorela Uku \n" "Language-Team: Albanian\n" "Language: sq\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Zanata 3.9.6\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Më shumë..." #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Gjuhë: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autori: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Përshkrimi:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Shkurtimet e tastierës" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modifikuesit:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Apliko" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Fshi" #: 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 "" #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horizontal" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertikal" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Cepi lart majtas" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Cepi lart djathtas" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "" #: setup/setup.ui:37 msgid "Custom" msgstr "" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "Gjithmonë" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "" #: setup/setup.ui:238 msgid "Enable:" msgstr "" #: setup/setup.ui:291 msgid "Disable:" msgstr "" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "" #: setup/setup.ui:579 msgid "General" msgstr "" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "" #: setup/setup.ui:754 msgid "_Preferences" msgstr "" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "" #: setup/setup.ui:1298 msgid "Advanced" msgstr "" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "" #: setup/setup.ui:1358 msgid "Startup" msgstr "" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Vertikal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "" ibus-1.5.22/po/ml.gmo0000644000000000000000000006004213623751603011174 00000000000000   1 C G #]    o 1<7t}   HE[ b#n  (()@RD  '5FNi |.0   # <!Jl @C4GZ9v)^0? p.|%&9>Us? (DYp91 2>q-&@ N'c" 8'<d@DSD<.-I4w/3'Ck|>  $ Cdkpw   pOg ;  D lk>+>R?aq?d?8@x4ACA4AF&BmB4-CfbCuCK?DDEE5FFYiGcG'HiHMIIcJCKbKxAL5L:Lj+MMJN@N=OP.R3S!TTUV9W9BWV|WuWTIXeXYfYlJZZl[f\,\\y\H]2]^M!^o^^)^^ ^&^)"_"L_ o_{_`_6_4}V\ mbDp0^C ZJz3URlX ;P%O#a "]$sYc kGS>&N/K`fT{[:8d'@vEF6Qo._MyI-HLAWi~=?eBx9j1nq,<gt+!*52r)7huw|(%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonGeneralGet global engine failed. Hide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Latin layouts which have no ASCIIList engine name onlyModifiers:More…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonSaved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The milliseconds to show property panelThe registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-11-11 09:36+0000 Last-Translator: Ani Peter Language-Team: Malayalam Language: ml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s ഒരു അപചിരിത കമാന്‍ഡാകുന്നു! (ലഭ്യമാക്കിയിട്ടില്ല)...അക്ഷരസഞ്ചയവും രീതിയുംഗ്ലോബല്‍ ഇന്‍പുട്ട് മെഥേഡ് ഉപയോഗിക്കുകകീബോര്‍ഡ് മാതൃകകീബോര്‍ഡ് എളുപ്പവഴികള്‍ആരംഭത്തില്‍IBus ഇന്റലി‍ജന്റ് ഇന്‍പുട്ട് ബസ് പ്രധാന താള്‍: https://github.com/ibus/ibus/wiki സംബന്ധിച്ചു്സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളിലേക്കു് തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് ചേര്‍ക്കുകമെച്ചപ്പെട്ടവഎപ്പോഴുംരചയിതാവു്: %s സ്വയം അദൃശ്യമാക്കുകതാഴെ ഇടതു് കോണ്‍താഴെ വലതു് കോണ്‍ IBus-ലേക്കു് കണക്ട് ചെയ്യുവാന്‍ സാധ്യമല്ല. ലഭ്യമായവയുടെ ക്രമീകരണങ്ങള്‍:കമാന്‍ഡുകള്‍: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.രജിസ്ട്രി ക്യാഷ് തയ്യാറാക്കുകയഥേഷ്ടം:അക്ഷരസഞ്ചയം യഥേഷ്ടമാക്കുക:ഭാഷയുടെ പാനലിലേക്കുള്ള അക്ഷരസഞ്ചയത്തിനുള്ള പേരു് സജ്ജമാക്കുകഎഞ്ചിന്‍ ക്രമങ്ങള്‍വിവരണം: കുറുക്കുവഴി കീകള്‍ പ്രവര്‍ത്തന രഹിതമാക്കുകപ്രവര്‍ത്തന രഹിതമാക്കുക: ഇനി കാണിയ്ക്കരുതു്പൂര്‍ത്തിയായിപ്രീഎഡിറ്റ് ടെക്സ്റ്റ് ചേര്‍ക്കുകപ്രയോഗത്തിനുള്ള ജാലകത്തില്‍ പ്രീഎഡിറ്റ് ടെക്സ്റ്റ് ചേര്‍ക്കുകപ്രയോഗത്തിനുള്ള ജാലകത്തില്‍ പ്രീഎഡിറ്റ് ടെക്സ്റ്റ് ചേര്‍ക്കുകപ്രയോഗത്തിനുള്ള ജാലകത്തില്‍ പ്രീഎഡിറ്റ് ടെക്സ്റ്റിനുള്ള ഇന്‍പുട്ട് രീകി ചേര്‍ക്കുകസ്വതവേ ഇന്‍പുട്ട് മെഥേഡ് സജ്ജമാക്കുകപ്രയോഗത്തിലേക്കു് ഇന്‍പുട്ട് ചെയ്യുവാന്‍ സാധിയ്ക്കുമ്പോള്‍ സ്വതവേ ഇന്‍പുട്ട് മെഥേഡ് സജ്ജമാക്കുകസജ്ജമാക്കുക അല്ലെങ്കില്‍ നിര്‍ജ്ജീവമാക്കുക:കുറുക്കുവഴി കീകള്‍ പ്രവര്‍ത്തന സജ്ജമാക്കുകപ്രവര്‍ത്തന സജ്ജമാക്കുക: എഞ്ചിന്‍ ക്രമങ്ങള്‍ibus-daemon-ല്‍ നിന്നും പുറത്തു് കടക്കുകസാധാരണഗ്ലോബല്‍ എഞ്ചിന്‍ ലഭ്യമാക്കുന്നതു് പരാജയപ്പെട്ടു. സ്വയമായി അദൃശ്യമാക്കുകകുറുകെയുള്ളIBus മുന്‍ഗണനകള്‍IBus ഡെമണ്‍ %d സെക്കന്‍ഡുകളില്‍ ആരംഭിയ്ക്കുവാന്‍ സാധ്യമല്ലIBus തുടങ്ങി! IBus ഉപയോഗിയ്ക്കുവാന്‍ സാധ്യമല്ലെങ്കില്‍, നിങ്ങളുടെ $HOME/.bashrc;-ലേക്കു് ഈ വരികള്‍ ചേര്‍ത്തു് വീണ്ടും നിങ്ങളുടെ പണിയിടത്തിലേക്കു് വീണ്ടും പ്രവേശിയ്ക്കുക. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusലിനക്സ്/യുണിക്സിനുള്ള ഇന്റലിജന്റ് ഇന്‍പുട്ട് ബസാണു് IBus.ഇന്‍പുട്ട് മെഥേഡ്Kbdകീ കോഡ്:കീബോര്‍ഡ് മാതൃക: %s കീബോര്‍ഡ് എളുപ്പവഴികള്‍ഭാഷയുടെ പാനല്‍ സ്ഥാനംഭാഷയുടെ പാനല്‍ സ്ഥാനം:ഭാഷ: %s ആസ്കീ ഇല്ലാത്ത ലാറ്റിന്‍ ശൈലികള്‍എഞ്ചിന്‍ പേരു് മാത്രം ലഭ്യമാക്കുകമോഡിഫയറുകള്‍:കൂടുതല്‍...സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് താഴേക്ക് നീക്കുകസജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് മുകളിലേക്ക് നീക്കുകഅടുത്ത സംവിധാനത്തിനുള്ള എളുപ്പവഴികള്‍അടുത്ത ഇന്‍പുട്ട് മെഥേഡ്:എഞ്ചിന്‍ സജ്ജമല്ല. ലുക്കപ്പ് പട്ടികയുടെ ക്രമീകരണംലുക്കപ്പ് പട്ടികയുടെ ക്രമീകരണം. 0 = നേരെയുള്ള, 1 = കുറുകയുള്ളമറ്റുള്ളവദയവായി ഒരു കീ അമര്‍ത്തുക (അല്ലെങ്കില്‍ ഒരു കീ കൂട്ട്)ദയവായി ഒരു കീ അമര്‍ത്തുക (അല്ലെങ്കില്‍ ഒരു കീ കൂട്ട്). കീ റിലീസ് ചെയ്യുമ്പോള്‍ ഡയലോഗ് അടയ്ക്കുന്നു.ഐഎംഇ സ്വിച്ചര്‍ ജാലകത്തിനുള്ള പോപ്പപ്പ് താമസം മില്ലിസെക്കന്‍ഡുകളില്‍മുന്‍ഗണനകള്‍ ഇന്‍പുട്ട് മെഥേഡ് പട്ടികയില്‍ സൂക്ഷിച്ചിട്ടുള്ള എഞ്ചിന്‍ ക്രമങ്ങള്‍സംവിധാനങ്ങള്‍ ലഭ്യമാക്കുകibus ആരംഭിക്കുമ്പോള്‍ സംവിധാനങ്ങള്‍ ലഭ്യമാക്കുകതൊട്ടു് മുമ്പുള്ള സംവിധാനത്തിനുള്ള എളുപ്പവഴികള്‍മുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ്:ibus-daemon-ന്റെ ഡി-ബസ് വിലാസം പ്രിന്റ് ചെയ്യുകപുറത്ത് കടക്കുകXKB പ്രതിരൂപത്തിന്റെ RGBA മൂല്ല്യംരജിസ്ട്രി ക്യാഷ് ഫയല്‍ ലഭ്യമാക്കുക.സിസ്റ്റം രജിസ്ട്രി കാഷ് ലഭ്യമാക്കുക.സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് നീക്കം ചെയ്യുകക്രമീകരണ മൂല്ല്യങ്ങള്‍ വീണ്ടും സജ്ജമാക്കുകവീണ്ടും സജ്ജമാക്കുന്നു...വീണ്ടും ആരംഭിക്കുകibus-daemon വീണ്ടും ആരംഭിയ്ക്കുകഇന്‍പുട്ട് മെഥേഡ് പട്ടികയില്‍ സൂക്ഷിച്ചിട്ടുള്ള എഞ്ചിന്‍ ക്രമങ്ങള്‍സൂക്ഷിച്ച പതിപ്പു്ഒരു ഇന്‍പുട്ട് മെഥേഡ് തെരഞ്ഞെടുക്കുക%s-നുള്ള കീബോര്‍ഡ് എളുപ്പവഴി തെരഞ്ഞെടുക്കുകIBus മുന്‍ഗണനകള്‍ സജ്ജമാക്കുകഗ്ലോബല്‍ എഞ്ചിന്‍ സജ്ജമാക്കുന്നതു് പരാജയപ്പെട്ടു. എഞ്ചിന്‍ സജ്ജമാക്കുക അല്ലെങ്കില്‍ ലഭ്യമാക്കുകibus ഭാഷയുടെ പാനല്‍ കാണിക്കണമോ വേണ്ടയോ എന്നതു് സജ്ജമാക്കുകലുക്കപ്പ് പട്ടികയില്‍ ലഭ്യമായവയുടെ ക്രമീകരണം സജ്ജമാക്കുകഎല്ലാ പ്രയോഗങ്ങളിലും ഒരേ ഇന്‍പുട്ട് രീതി ഉപയോഗിക്കുകലഭ്യമായ എഞ്ചിനുകള്‍ കാണിയ്ക്കുകസിസ്റ്റം ട്രേയില്‍ ചിഹ്നം കാണിക്കുകതെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡിനെപ്പറ്റിയുള്ള വിവരങ്ങള്‍ കാണിക്കുകഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുകഭാഷയുടെ പാനലില്‍ ഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുകചെക്ക്ബോക്സ് ചെക്ക് ചെയ്യുമ്പോള്‍ ഭാഷയുടെ പാനലില്‍ ഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുകവിശേഷതയ്ക്കുള്ള പാനല്‍ കാണിയ്ക്കുക:തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് രീതിയുടെ സജ്ജീകരണം കാണിയ്ക്കുകക്രമീകരണ മൂല്ല്യങ്ങള്‍ കാണിയ്ക്കുകരജിസ്ട്രി ക്യാഷിന്റെ ഉള്ളടക്കം കാണിയ്ക്കുകഈ വിവരം കാണിയ്ക്കുകപതിപ്പു് കാണിയ്ക്കുകപ്രവേശിക്കുമ്പോള്‍ തന്നെ ibus ആരംഭിക്കുകIBus ഡെമണ്‍ പ്രവര്‍ത്തനത്തിലില്ല, നിങ്ങള്‍ക്കു് ഇതു് ആരംഭിയ്ക്കണമോ?വിശേഷതകളുടെ പാനല്‍ കാണിയ്ക്കുന്നതിനുള്ള സമയം (മില്ലിസെക്കന്‍ഡ്)രജിസ്ട്രി ക്യാഷ് അസാധു. മുമ്പു് ഇന്‍സ്റ്റോള്‍ ചെയ്ത ibus-ന്റെ പതിപ്പും നിലവിലുള്ള ibus-ന്റെ പതിപ്പും തമ്മിലുള്ള വ്യത്യാസം പരിശോധിയ്ക്കുന്നതിനായി സൂക്ഷിച്ചിട്ടുള്ള പതിപ്പു് ഉപയോഗിയ്ക്കുന്നു.അടുത്ത ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനായി അടുത്ത സംവിധാനത്തിനുള്ള എളുപ്പവഴിമുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനായി തൊട്ടു് മുമ്പുള്ള സംവിധാനത്തിനുള്ള എളുപ്പവഴിപട്ടികയിലുള്ള അടുത്ത ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനുള്ള എളുപ്പവഴിമുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറുന്നതിനുള്ള എളുപ്പവഴിഇന്‍പുട്ട രീതി ഓഫ് ചെയ്യുന്നതിനുള്ള കുറുക്കുവഴി കീകള്‍ഇന്‍പുട്ട രീതി ഓണ്‍ ചെയ്യുന്നതിനുള്ള കുറുക്കുവഴി കീകള്‍ഇന്‍പുട്ട് മെഥേഡ് ഓണ്‍ അല്ലെങ്കില്‍ ഓഫ് ചെയ്യുന്നതിനുള്ള എളുപ്പവളികള്‍ സജ്ജമാക്കുകമുകളില്‍ ഇടതു് കോണ്‍ മുകളില്‍ വലതു് കോണ്‍ എളുപ്പവഴികള്‍ ട്രിഗര്‍ ചെയ്യുകgtk_accelerator_parse-നു് കുറുക്കുവഴികള്‍ ഉപയോഗിയ്ക്കുകഉപയോഗിയ്ക്കേണ്ട വിധം: %s COMMAND [OPTION...] സജ്ജമാക്കിയ അക്ഷരസഞ്ചയം ഉപയോഗിക്കുകഭാഷ്ക്കുള്ള പാനലില്‍ നിങ്ങള്‍ സജ്ജമാക്കിയ അക്ഷരസഞ്ചയത്തിന്റെ പേരു് ഉപയോഗിക്കുകസജ്ജമാക്കിയ അക്ഷരസഞ്ചയം ഉപയോഗിക്കുക:ഗ്ലോബല്‍ ഇന്‍പുട്ട് മെഥേഡ് ഉപയോഗിക്കുകമുമ്പുള്ള ഇന്‍പുട്ട് രീതിയിലേക്കു് പോകുന്നതിനായി shift-നൊപ്പമുള്ള കുറുക്കുവഴി ഉപയോഗിയ്ക്കുകസിസ്റ്റം കീബോര്‍ഡ് (XKB) മാതൃക ഉപയോഗിക്കുകസിസ്റ്റം കീബോര്‍ഡ് മാതൃക ഉപയോഗിക്കുകxmodmap ഉപയോഗിയ്ക്കൂനേരെയുള്ളരജിസ്ട്രി ക്യാഷ് ഫയലിലേക്കു് സൂക്ഷിയ്ക്കുക.സിസ്റ്റം രജിസ്ട്രി ക്യാഷിലേക്കു് സൂക്ഷിയ്ക്കുക._അണിയറ വിശേഷങ്ങള്‍_ചേര്‍ക്കുക_കംപ്യൂട്ടറില്‍ സൂക്ഷിക്കുക_റദ്ദാക്കുക_അടയ്ക്കുക_വെട്ടി നീക്കുക_താഴോട്ട്_ശരി_മുന്‍ഗണനകള്‍ _നീക്കം ചെയ്യുക_മുകളിലേക്ക്default:LTRഭാഷ: %s ഇന്‍പുട്ട് രീതികള്‍ തമ്മില്‍ മാറുകഅനി പീറ്റര്‍ ibus-1.5.22/po/mn.gmo0000644000000000000000000000615513623751604011204 00000000000000!$/,!5MT ]i| 918j&@D4Ezq4&8 _l , &/> \i-+"bq_ @ N 1a | W  + F Q ]   !   ...Keyboard ShortcutsAlwaysBottom left cornerBottom right cornerCandidates orientation:CustomDisable:Do not showEnable or disable:Enable:GeneralHide automaticallyHorizontalIBus PreferencesLanguage panel position:Next input method:Previous input method:Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShow icon on system trayShow input method name on language barShow property panel:The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for turning input method on or offTop left cornerTop right cornerUse custom font:Vertical_Add_RemoveProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2016-01-29 12:31-0500 Last-Translator: bayanmunkh Language-Team: Mongolian Language: mn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Zanata 3.9.3 Plural-Forms: nplurals=2; plural=(n != 1) ...Гарын товчлолуудҮргэлжЗүүн доод буланБаруун доод буланНэмэлтүүдийг эргүүлэлт:ӨөрчлөхХаахБитгий харуулНээх эсвэл ХаахНээхЕрөнхийАвтоматаар нуухХэвтээibus тохиргооХэлний самбарын байрлал:Дараагийн оролтын арга:Өмнөх оролтын аргаХэлний цэсийг нуух болон харуулах эсэхийг тохируулахХарах хүснэгтэд байгаа нэмэлтүүдийн эргүүлэлтийг тохируулахСистемийн хавтан дахь харах тэмдэгХэлний бар дахь оролтын аргын нэрийг харахШинжүүдийн самбарыг харах:Жагсаалтад байгаа оролтын дараагийн арга руу шилжих товчлол түлхүүрүүдЖагсаалтад байгаа оролтын өмнөх арга руу шилжих товчлол түлхүүрүүдОролтын аргыг унтрааж асаах товчлол түлхүүрүүдЗүүн дээд буланБаруун дээд буланФонтоо сонгох:Босоо_Нэмэх_Арилгахibus-1.5.22/po/fa.po0000644000000000000000000025260013623751600011006 00000000000000# translation of ibus.pot to Persian # Persian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2020 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Daniyal Yousefi , 2011 # Mostafa Daneshvar , 2011 # Ahmad Haghighi , 2020. msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2020-01-08 03:55+0000\n" "Last-Translator: Ahmad Haghighi \n" "Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Weblate 3.9.1\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "فعال‌کردن کلیدهای میانبر" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "دیگر" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_انصراف" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_تأیید" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "درباره" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" 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 "" #: 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 "" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "ا_فزودن" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "" #: 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 "" #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "افقی" #: setup/setup.ui:14 msgid "Vertical" msgstr "عمودی" #: setup/setup.ui:25 msgid "Top left corner" msgstr "گوشه بالا سمت چپ" #: setup/setup.ui:28 msgid "Top right corner" msgstr "گوشه بالا سمت راست" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "گوشه پایین سمت چپ" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "چوشه پایین سمت راست" #: setup/setup.ui:37 msgid "Custom" msgstr "انتخابی" #: setup/setup.ui:48 msgid "Do not show" msgstr "نمایش نده" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "همیشه" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "فعال یا غیرفعال:" #: setup/setup.ui:238 msgid "Enable:" msgstr "فعال:" #: setup/setup.ui:291 msgid "Disable:" msgstr "غیرفعال:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "موقعیت پنل زبان:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "استفاده از فونت انتخابی" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "" #: setup/setup.ui:579 msgid "General" msgstr "اصلی" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "_حذف" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "_بالا" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "_پایین" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "_درباره" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_ترجیحات" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "استفاده از فونت انتخابی" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "" #: setup/setup.ui:1298 msgid "Advanced" msgstr "پیشرفته" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "" #: setup/setup.ui:1358 msgid "Startup" msgstr "" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "عمودی" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "دیگر" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_بستن" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "شرح:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "ترجیحات" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "راه‌اندازی مجدد" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "ترک" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:RTL" ibus-1.5.22/po/tg.po0000644000000000000000000025173413623751602011043 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:49+0000\n" "Last-Translator: tajikfedora \n" "Language-Team: Tajik \n" "Language: tg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Пинҳонкунии худкор" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "Дигар" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Бекор кардан" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Дар бораи" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" 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 "" #: 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 "" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Илова кардан" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "" #: 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 "" #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Уфуқӣ" #: setup/setup.ui:14 msgid "Vertical" msgstr "Амудӣ" #: setup/setup.ui:25 msgid "Top left corner" msgstr "" #: setup/setup.ui:28 msgid "Top right corner" msgstr "" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "" #: setup/setup.ui:37 msgid "Custom" msgstr "Танзимот" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "Ҳамеша" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" #: setup/setup.ui:115 msgid "Next input method:" msgstr "" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "" #: setup/setup.ui:238 msgid "Enable:" msgstr "Фаъолсозӣ:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Хомӯшкунӣ:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "" #: setup/setup.ui:579 msgid "General" msgstr "Умумӣ" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Тоза кардан" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" #: setup/setup.ui:700 msgid "_Up" msgstr "_Боло" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" #: setup/setup.ui:718 msgid "_Down" msgstr "_Поён" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" #: setup/setup.ui:736 msgid "_About" msgstr "_Дар бораи барнома" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Хусусиятҳо" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "" #: setup/setup.ui:1298 msgid "Advanced" msgstr "" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "" #: setup/setup.ui:1358 msgid "Startup" msgstr "" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Амудӣ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Дигар" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Пӯшидан" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "Шарҳ:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Хусусиятҳо" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Бозоғозӣ" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "Хуруҷ" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/boldquot.sed0000644000000000000000000000033113623751246012404 00000000000000s/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g s/“/“/g s/”/”/g s/‘/‘/g s/’/’/g ibus-1.5.22/po/cs.po0000644000000000000000000031132313623751577011040 00000000000000# Czech translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2018 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Marek Suchánek , 2016. #zanata # Zdenek , 2016. #zanata # Josef Hruška , 2017. #zanata # Marek Suchánek , 2017. #zanata # Zdenek , 2017. #zanata # fujiwara , 2017. #zanata # Zdenek , 2018. #zanata # fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2018-02-21 10:23-0500\n" "Last-Translator: Zdenek \n" "Language-Team: Czech\n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Zanata 3.9.6\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Přednačtené enginy" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Přednačtené enginy v průběhu startu IBus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Pořadí enginů" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Uložené pořadí enginů v seznamu vstupní metody" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" "Počet milisekund pro zpoždění automaticky otevřeného okna IME přepínače" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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 "" "Nastavit počet milisekund pro zpoždění automaticky otevřeného okna " "zobrazujícího IME přepínač. Výchozí hodnota je 400. 0 = Zobrazit okno " "okamžitě. 0 & lt; Milisekundové zpoždění. 0 & gt; Nezobrazit okno a přejít k " "předchozímu / dalšímu enginu." #: data/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Uložené číslo verze" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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 "" "Uložené číslo verze bude použito ke kontrole rozdílu mezi předchozí verzí " "nainstalovaného IBusu a verzí aktuálního IBusu." #: data/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Rozložení latinky, které nemá ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" "Americké rozvržení je připojeno k Latinskému. Varianta může být vynechána." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Použít xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "Spustit xmodmap, pokud .xmodmap nebo .Xmodmap existuje, jsou-li enginy ibus " "zapnuty." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Použít systémové rozložení klávesnice" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Použít systémové rozložení klávesnice (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Vložený přededitovaný text" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Vložený přededitovaný text v okně aplikace" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Použít globální vstupní metodu" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Používat stejnou vstupní metodu pro všechny aplikace" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Povolit metodu vstupu ve výchozím nastavení" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "Povolit metodu vstupu ve výchozím nastavení, pokud aplikace dostane vstupní " "fokus" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "Zachovat jméno prefixu DConf " #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefix kláves DConf pro zastavení konverze jména" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Spouštěcí klávesové zkratky" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Klávesové zkratky pro zapnutí a vypnutí vstupní metody" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Spouštěcí klávesové zkratky pro gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Povolit klávesové zkratky" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Klávesové zkratky pro zapnutí vstupní metody" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Zakázat klávesové zkratky" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Klávesové zkratky pro vypnutí vstupní metody" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Klávesové zkratky dalšího enginu" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "Klávesové zkratky pro přechod na další metodu vstupu v seznamu" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Klávesové zkratky předchozího enginu" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "Klávesové zkratky pro přechod na předchozí metodu vstupu" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Automaticky skrýt" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Chování panelu vlastností. 0 = Nezobrazovat, 1 = Automaticky skrýt, 2 = Vždy " "zobrazovat" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Umístění jazykového panelu" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "Následovat vstupní kurzor v případě, že je panel vždy zobrazen" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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 "" "Pokud je to pravda, panel následuje vstupní kurzor v případě, že je panel " "vždy zobrazen. Pokud to neplatí, je panel zobrazen na pevném místě." #: data/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Počet milisekund pro zobrazení panelu vlastností" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Počet milisekund pro zobrazení panelu vlastností poté, co je změněno " "zaměření nebo vlastnosti." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orientace vyhledávací tabulky" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientace vyhledávací tabulky. 0 = Horizontální, 1 = Vertikální" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Zobrazit ikonu v oznamovací oblasti" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Zobrazit název vstupní metody" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Zobrazit v jazykovém panelu vstupní metodu" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "Hodnota RGBA ikony XKB" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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 zobrazuje řetězec rozložení a řetězec je vykreslen hodnotou RGBA. " "Hodnota RGBA může být 1. jméno barvy z X11, 2. hexadecimální hodnota ve " "tvaru \"#rrggbb\" kde \"r\", \"g\" a \"b\" jsou hexadecimální číslice pro " "červenou, zelenou a modrou, 3. RGB barva ve formě \"rgb (r, g, b)\" nebo 4. " "RGBA barva ve formě \"rgba(r,g,b,a)\", kde \"r\", \"g\" a \"b\" jsou buď " "celá čísla v rozsahu od 0 do 255 nebo procentuální hodnoty v rozsahu od 0% " "do 100% a \"a\" je plovoucí bodová hodnota v rozsahu 0 až 1 z alfa." #: data/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "Počet milisekund pro zobrazení ikony panelu pro vlastnost" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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 "" "Počet milisekund pro zobrazení ikony panelu z ikony enginu na ikonu " "vlastnosti, kdykoli jsou enginy zapnuté, pokud je vlastnost určená hodnotou " "icon-prop-key v IBusEngineDesc. Pokud je hodnota 0, není žádná časová " "prodleva a ikona vlastnosti je zobrazena okamžitě." #: data/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Použít vlastní font" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Použít vlastní název fontu pro panel jazyku" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Vlastní font" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Vlastní název fontu pro panel jazyku" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Spouštěcí klávesové zkratky pro gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Klávesová zkratka pro zapínání a vypínání psaní emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Klávesová zkratka emoji pro gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "Klávesová zkratka pro zapínání a vypínání psaní emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "Vlastní jméno písma pro znaky emoji v dialogu emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Předvolený jazyk pro slovník emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Zvolte výchozí jazyk slovníků emoji v dialogovém okně emoji. Hodnota $lang " "je aplikována na /usr/share/ibus/dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "seznam oblíbených emoji v dialogu emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Pokud tento seznam obsahuje nějaké znaky, můžete si v seznamu emoji zobrazit " "oblíbené emoji." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "seznam oblíbených emoji anotací v dialogu emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "Můžete přiřadit anotaci k oblíbenému emoji v tomto seznamu" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "Zda se anotace emoji mohou částečně shodovat nebo ne" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Zda anotace emoji mohou být porovnány s částečným řetězcem namísto přesné " "shody nebo ne." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Shoda anotací emoji se zadanou délkou" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Částečně odpovídá anotacím emoji s více než zadaným počtem znaků místo " "přesné shody." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "Vyberat podmínku částečně odpovídající anotaci emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Zvolte jednu z následujících podmínek, která částečně odpovídá anotaci " "emoji: 0 == Předpona shody, 1 == Přípona shody, 2 == Obsahuje shodu" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Ostatní" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Vybrat jazyk" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Zrušit" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Více…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "O programu" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Zavřít" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr " Jazyk: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Rozvržení klávesnice: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Popis:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Vybrat metodu vstupu" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Přidat" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Vstupní metoda" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Předvolby IBusu" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Nastavit předvolby IBusu" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Klávesové zkratky" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Klávesa:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modifikátory:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Použít" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "O_dstranit" #: 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 "" "Stiskněte prosím klávesu (či kombinaci kláves).\n" "Dialog se zavře, až klávesy uvolníte." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Stiskněte prosím klávesu (či kombinaci kláves)." #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "Použít klávesovou zkratku s posunem k přepnutí na předchozí vstupní metodu" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "Démon IBus neběží. Přejete si jej spustit?" #: setup/main.py:536 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 byl spuštěn! Pokud nemůžete použít IBus, přidejte následující řádky do " "souboru $HOME/.bashrc. Poté se přihlaste na váš počítač.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: setup/main.py:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Démon IBus nemohl být spuštěn během %d sekund" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Vybrat klávesovou zkratku pro %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "přepínání vstupní metody" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Vodorovně" #: setup/setup.ui:14 msgid "Vertical" msgstr "Svisle" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Levý horní roh" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Pravý horní roh" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Levý dolní roh" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Pravý dolní roh" #: setup/setup.ui:37 msgid "Custom" msgstr "Vlastní" #: setup/setup.ui:48 msgid "Do not show" msgstr "Neukazovat" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Automaticky schovávat" #: setup/setup.ui:54 msgid "Always" msgstr "Vždy" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "Klávesové zkratky pro přepnutí na další vstupní metodu v řadě" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Další vstupní metoda:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Klávesové zkratky pro přepnutí na předchozí vstupní metodu v řadě" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Předchozí vstupní metoda:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "…" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Povolit či zakázat:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Povolit:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Zakázat:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Klávesové zkratky" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Nastavení orientace kandidátů ve vyhledávací tabulce" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Orientace kandidátů:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Nastavit chování ibusu, co se týče schovávání jazykového panelu" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Zobrazit panel vlastností:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Umístění jazykového panelu:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Pokud je zaškrtnuto, zobrazovat v jazykovém panelu název vstupní metody" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Vkládat předupravený text v okně aplikace" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "Vkládat předupravený text metody vstupu v okně aplikace" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Použít vlastní písmo:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Písmo a styl" #: setup/setup.ui:579 msgid "General" msgstr "Obecné" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "Přidat vybranou vstupní metodu mezi povolené vstupní metody" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Odebrat" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "Odebrat vybranou vstupní metodu z povolených vstupních metod" #: setup/setup.ui:700 msgid "_Up" msgstr "_Výše" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "Posunout v seznamu povolených vstupních metod vybranou metodu výše" #: setup/setup.ui:718 msgid "_Down" msgstr "_Níže" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "Posunout v seznamu povolených vstupních metod vybranou metodu níže" #: setup/setup.ui:736 msgid "_About" msgstr "O _metodě" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Ukázat podrobnosti o vybrané vstupní metodě" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Nastavení" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Ukázat nastavení vybrané vstupní metody" #: setup/setup.ui:812 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 "" "Aktivní metodu vstupu lze přepínat z výše uvedeného seznamu výběru " "za pomoci klávesové zkratky nebo kliknutím na ikonu panelu." #: setup/setup.ui:873 #, fuzzy msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "Klávesová zkratka pro zapínání a vypínání psaní emoji" #: setup/setup.ui:875 #, fuzzy msgid "Emoji annotation:" msgstr "Jazyk anotací emoji:" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Klávesové zkratky pro zapnutí a vypnutí vstupní metody" #: setup/setup.ui:929 #, fuzzy msgid "Unicode code point:" msgstr "Kódový bod: %s" #: setup/setup.ui:1013 #, fuzzy msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "Nastavit písmo kandidátů emoji v dialogu emoji" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Volba Unicode" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Nastavit jazyk anotací emoji v dialogu emoji" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Jazyk anotací emoji:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Částečně odpovídá anotacím emoji s následujícími podmínkami a s více než " "počtem znaků:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Pokud se anotace emoji mohou shodovat s částečným řetězcem namísto přesné " "shody" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Předpona shody" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Přípona shody" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Obsahuje shodu" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emoji" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Rozložení klávesnice" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Globální nastavení vstupní metody" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Pokročilé" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Inteligentní vstupní metoda\n" "Domovská stránka: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Spustit ibus při přihlášení" #: setup/setup.ui:1358 msgid "Startup" msgstr "Spouštění" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Aktivity" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Zvířata & příroda" #: src/ibusemojigen.h:32 #, fuzzy msgid "Component" msgstr "Komponenty tangutštiny" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Vlajky" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Jídlo & nápoje" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Objekty" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 #, fuzzy msgid "Smileys & Emotion" msgstr "Smajlíci & lidé" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Symboly" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Cestování & místa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Základní latinka" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Doplněk latinky-1" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Rozšířená latinka-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Rozšířená latinka-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "Rozšíření IPA" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Distanční modifikační písmena" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Kombinace diakritických znamének" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Řečtina a koptština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Cyrilice" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Doplněk cyrilice" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Arménština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Hebrejština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Arabština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Syrština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Doplněk arabštiny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaanaština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "NKo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Samaritánština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandaic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Doplněk syrštiny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Rozšířená arabština-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Devanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengálština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmukhština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Gudžarátština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Urijština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tamilština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Telugština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Kannadština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malajálamština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Sinhálština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Thajština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Laoština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tibetština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Barmština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Gruzínština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Hangul Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Etiopština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Doplněk etiopštiny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Cherokéština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Slabičné písmo kanadských domorodců" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Runy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Tagalština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunoo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buhidština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Tagbanwanština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Khmerština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Mongolština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Rozšířené slabičné písmo kanadských domorodců" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai Le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Nové Tai Lue" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Khmerské symboly" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Bugiština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Tai Tham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Kombinace rozšířených diakritických značek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Balinéština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Sundanština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batakština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepčština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ol Chiki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Rozšířená cyrilice" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 #, fuzzy msgid "Georgian Extended" msgstr "Geometrické tvary rozšířené" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Doplněk sundanštiny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Rozšíření pro védy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Fonetické rozšíření" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Doplněk fonetického rozšíření" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Kombinace doplňku s diakritickými značkami" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Další rozšířená latinka" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Rozšířená řečtina" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Obecná interpunkční znaménka" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Horní a dolní indexy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Symboly měn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Kombinace diakritických značek pro symboly" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Symboly podobné písmenům" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Formy čísel" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Šipky" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Matematické operátory" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Různé technické znaky" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Ovládací obrázky" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Optické rozpoznávání znaků" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Uzavřené alfanumerické znaky" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Vykreslování rámečku" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Blokové prvky" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Geometrické tvary" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Různé symboly" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Dingbats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Různé matematické symboly-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Doplňkové šipky-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Braillské vzory" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Doplňkové šipky-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Různé matematické symboly-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Doplňkové matematické operátory" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Různé symboly a šipky" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Glagolitičtina" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Rozšířená latinka-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Koptština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Doplněk gruzínštiny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Rozšířená etiopština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Rozšířená cyrilice-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Doplňkové interpunkce" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "Doplňkové radikály CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Radikály Kangxi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Znaky ideografického popisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "Symboly a interpunkce CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Hangul Jamo kompatibilní" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Rozšířené bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "CJK tahy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Fonetické rozšíření katakany" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Uzavřené písmo CJK a měsíce" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "CJK kompatibilní" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "CJK rozšíření sdružených ideogramů A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Hexagramové symboly Yijing" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "Jednotné ideografie CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Slabiky Yi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Radikály Yi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Vai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Rozšířená cyrilice-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Bamumština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Modifikátory tónových písmen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Rozšířená latinka-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Syloti Nagri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Formy běžných indických čísel" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Phags-pa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurashtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Rozšířené devanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Rozšířené Hangul Jamo A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Jávština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Rozšířená barmština B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Chamština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Rozšířená barmština A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tai Viet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Rozšíření Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Rozšířená etiopština A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Rozšířená latinka-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Doplněk cherokéštiny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Slabiky Hangul" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Rozšířené Hangul Jamo B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Vysoké náhrady" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Vysoké soukromé použití náhrad" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Nízké náhrady" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Oblast soukromého užití" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "Ideologie kompatibility CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Abecední prezentační formy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Arabská prezentační forma-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Variátory výběru" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Vertikální formy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Kombinace poločasů" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "Formy kompatibilit CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Malé varianty forem" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Arabská prezentační forma-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Formy s poloviční a plnou šířkou" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Speciály" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Lineární B syllabary" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Lineární B ideogramy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Egejské číslice" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Starověké řecké číslice" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Starověké symboly" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Disk z Faistu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Likijské písmo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Kárské písmo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Koptské číslice" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Staré italické písmo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gotické písmo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Staré permské písmo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ugaritské písmo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Staré perské písmo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Deseret" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Shavian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmanya" # auto translated by TM merge from project: Fedora Release Notes, version: f25, DocId: Development_Tools #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Elbasan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Kavkazská albánština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Lineární A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Kyperské syllabary" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "Císařská aramejština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Palmyrene" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nabataean" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Hatran" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Féničtina" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lidijščina" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Meroitické hieroglyfy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Meroitická kurzíva" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Kharóšthí" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Stará jihoarabština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Stará severoarabština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Manichaean" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Avestánština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Parthské nápisy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Nápisy Pahlaví" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Psalter Pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Staroturečtina" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Staromaďarština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Číselné symboly Rumi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 #, fuzzy msgid "Old Sogdian" msgstr "Staromaďarština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 #, fuzzy msgid "Sogdian" msgstr "Lidijščina" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Bráhmí" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaithi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Sora Sompeng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Čakmovština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Mahajánština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Sharada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Archaické čísla sinhálštiny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Khojki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Multani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Khudawadi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Grantha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Névárština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Tirhuta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Siddham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Modi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Doplněk mongolštiny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Warang Citi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 #, fuzzy msgid "Nandinagari" msgstr "Devanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Zanzibarské čtverce" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Soyombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Masaram Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 #, fuzzy msgid "Gunjala Gondi" msgstr "Masaram Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 #, fuzzy msgid "Tamil Supplement" msgstr "Doplněk Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Klínové písmo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Číslice a interpunkce klínového písma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Klínové písmo rané dynastie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Egyptské hieroglyfy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 #, fuzzy msgid "Egyptian Hieroglyph Format Controls" msgstr "Egyptské hieroglyfy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Anatolské hieroglyfy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Doplněk Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mro" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Bassa Vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Pahawh Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Miao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Ideografické symboly a interpunkce" # auto translated by TM merge from project: Fedora Release Notes, version: f25, DocId: Development_Tools #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Tangutština" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Komponenty tangutštiny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Doplněk kana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Rozšířená kana A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Nushu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Duployan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Kontroly zkratkového formátu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Byzantské hudební symboly" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Hudební symboly" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Starověká řecká hudební notace" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 #, fuzzy msgid "Mayan Numerals" msgstr "Egejské číslice" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Tai Xuan Jing symboly" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Čínské početní tyčky" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Matematické alfanumerické symboly" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Znakopis Sutonové" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Doplněk glagolitičtiny" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Mende Kikakui" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 #, fuzzy msgid "Indic Siyaq Numbers" msgstr "Koptské číslice" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Arabské matematické abecední symboly" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Mahjongské dlaždice" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Domino dlaždice" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Hrací karty" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Uzavřený alfanumerický doplněk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Uzavřený ideografický doplněk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Různé symboly a piktogramy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Emotikony" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Ozdobné Dingbats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Symboly dopravy a map" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Alchymistické symboly" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Geometrické tvary rozšířené" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Doplňkové šipky-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Doplňkové symboly a piktogramy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 #, fuzzy msgid "Chess Symbols" msgstr "Khmerské symboly" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 #, fuzzy msgid "Symbols and Pictographs Extended-A" msgstr "Doplňkové symboly a piktogramy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "CJK rozšíření sdružených ideogramů B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "CJK rozšíření sdružených ideogramů C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "CJK rozšíření sdružených ideogramů D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "CJK rozšíření sdružených ideogramů E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "CJK rozšíření sdružených ideogramů F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "Doplněk Ideologie kompatibility CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Tagy" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Dodatek výběru variant" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Doplňková oblast pro soukromé použití A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Doplňková oblast pro soukromé použití B" #: tools/main.vala:51 msgid "List engine name only" msgstr "Vypsat pouze název enginu" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Nelze se připojit k IBusu.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "jazyk: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Engine není nastaven.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Nepodařilo se nastavit globální engine.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Nepodařilo se získat globální engine.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Číst mezipaměť systémového registru." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Číst mezipaměť souboru registru." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "Neplatná mezipaměť registru.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Zapsat mezipaměť systémového registru." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Zapsat mezipaměť souboru registru." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "Obnovení..." #: tools/main.vala:399 msgid "Done" msgstr "Hotovo" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Nastavit nebo získat engine" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Ukončit démona IBusu" #: tools/main.vala:446 msgid "Show available engines" msgstr "Zobrazit dostupné enginy" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Není implementováno)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Restartovat démona IBusu" #: tools/main.vala:449 msgid "Show version" msgstr "Zobrazit verzi" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Zobrazit obsah mezipaměti registru" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Vytvořit mezipaměti registru" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Vypsat adresu D-Bus démona IBusu" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Zobrazit konfigurační hodnoty" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Obnovit konfigurační hodnoty" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Uložit emoji z dialogu do schránky." #: tools/main.vala:458 msgid "Show this information" msgstr "Zobrazit tuto informaci" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Použití: %s PŘÍKAZ [VOLBY...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Příkazy:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s je neznámý příkaz!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Oblíbené" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Ostatní" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Otevřít volbu Unicode" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Přivést zpět na výběr emoji" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Další strana" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Předchozí strana" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Zobrazit varianty emoji" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Zavřít" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Nabídka" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Načítání slovníku Unicode:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Kódový bod: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Obsahuje varianty emoji" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Popis: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Žádný" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Anotace: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Název: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Alias: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Výběr emoji:" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Volba Unicode" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Vybírání emoji zrušeno." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Emoji zkopírováno do schránky." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "\"PÍSMO\" pro znaky emoji v dialogu emoji." #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "PÍSMO" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "\"JAZYK\" pro anotace v dialogu emoji. Např. \"cs\"" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "JAZYK" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Anotace emoji se mohou částečně shodovat" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Odpovídá délce zadaného celku" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Odpovídá podmínce zadaného celku" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "Panel IBus" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus je inteligentní vstupní sběrnice pro Linux / Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Kredit-překladatelům" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Předvolby" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Restartovat" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "Ukončit" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "implicitně:LTR" #~ msgid "The shortcut keys for showing emoji dialog" #~ msgstr "Klávesová zkratka pro vyvolání dialogu emoji" #~ msgid "Emoji choice:" #~ msgstr "Výběr emoji:" #~ msgid "Emoji font:" #~ msgstr "Font emoji:" #~ 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 "" #~ "Umístění jazykového panelu. 0 = Levý horní roh, 1 = Pravý horní roh, 2 = " #~ "Levý dolní roh, 3 = Pravý dolní roh, 4 = Vlastní" #~ msgid "Type annotation or choose emoji" #~ msgstr "Napište anotaci nebo vyberte emoji" #~ msgid "IBus Update" #~ msgstr "Aktualizace IBus" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Klávesa super+mezerník je nyní výchozí klávesovou zkratkou." ibus-1.5.22/po/uk.gmo0000644000000000000000000015735213623751604011217 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIfeNhjh:iZixi|iLi.i2jKj_jkl2lGl lll m!m)5m._m m1mCm%n7n Qnrnn%nCn8o8;o#toooo#oop p%p!Epgp yppppp#p)q+-q$Yq~qq.qq q6q.5r2dr:rZr6-s%ds?sDs=tTMt=t=t=u=\uBu+u( v2v%Ev kvvv vvvjv3wOwJFyy!y;yPyNOzOz:z){9:{t{.{!{]{6|*G|8r|.|(|}7}.L}{}}l}M~'g~~%~%~%~#663m  '<Yk 0ـQ -\Edd]‚ GT'lU8=݄/a>ЅB-'@U;҆%''%O@u Ӊnbw%!4Њ''BjjՋ%!,"Nq<!%('Nv $ #0Oofˎy2] !!?CI/'y&ȓ'-< MZx Δ8ߔ $(,?+l! 2 3@ t8!ʖ!!!0!RRtǗ + %$9J33H1>^pϛ2Qȝ۝, CPj_o(XLC>)ס# $&--T22+ 15g"ɣ) NUj((ť 5J;]1(˦  *!L\ es+ۧ+1]#y60Ԩlr1{ ɩҩ2۩ -Nd{ Ϫ':Iaaë} 2aR:\?L3B<%@ f5qJX KXP6J9e&xƱ?NiX|bղ,8e.MeV~eմo;}^[ܷ 8dE 8=2.La_?^N17qi8ۻ5=J/Ǽ2޼$&6"])0P%e)##پ#0!'R9zQQ0X>%(7 H S_o' '+ 1 >I[Xc\t3H@btwgpe{>>+-=Ck@Ue)*TPhSh Cv<]UtOZ[=U&,;#h! kTP^RPdGtt1) +CWg y  ]G- u8-JWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2020-01-08 10:24+0000 Last-Translator: Yuri Chornoivan Language-Team: Ukrainian Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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; X-Generator: Weblate 3.9.1 «ШРИФТ» для символів емодзі у діалоговому вікні емодзі«МОВА» для анотацій у діалоговому вікні емодзі. Приклад: enКоманда %s є невідомою програмі! (не реалізовано)…Шрифт і стильЗагальні параметри способів введенняРозкладка клавіатуриКлавіатурні скороченняЗапускIBus Інтелектуальний канал введення Домашня сторінка: https://github.com/ibus/ibus/wiki Активний спосіб введення можна перемкнути у межах визначеного вище списку натисканням клавіатурного скорочення або піктограми на панелі.ІнформаціяДіяльністьДодати позначений спосіб введення до списку увімкнених способів введенняАдламДодатковоЕгейські числаАхомАлхімічні символиАльтернативна назва: %sФорми відтворення абетокЗавждиАнатолійьска ієрогліфічнаДавньогрецькі символи запису музикиДавньогрецькі числаДавні символиТварини і природаАнотації: %sАрабськаАрабська розширена-AАрабські математичні символи абеткиФорми відображення арабської AФорми відображення арабської BДодаткові арабськіВірменськаСтрілкиАвтор: %s Автоматично ховатиАвестанськаБалійськаБамумРозширений бамумОсновні латинськіБасса-вахБатакБенгальськаБхайксукіБлокові елементиБопомофоДодаткові бопомофоУ нижньому лівому кутіУ нижньому правому кутіДля малювання рамокБрахмійськаШаблони БрайляПовернути вибір емоційокБугійськаБухідВізантійські музичні символиСумісність з ієрогліфамиСумісні ієрогліфічні формиСумісні ієрогліфічні ідеограмиДодаткові ієрогліфічні ідеограми для сумісностіДодатки радикалів ієрогліфівІєрогліфічні штрихиІєрогліфічні символи і пунктуаціяУніверсальні ідеографічні ієрогліфиІєрогліфічні ідеограми, додаток AУніфіковані ієрогліфічні ідеограми, додаток BІєрогліфічні ідеограми, додаток CІєрогліфічні ідеограми, додаток DІєрогліфічні ідеограми, додаток EІєрогліфічні ідеограми, додаток FНе вдалося встановити зв’язок з IBus. Скасовано вибір емодзі.Орієнтація варіантів:КарійськаКавказька албанськаЧакмаТьямЧерокіДодаткові черокіШахові символиВибрати умову часткової відповідності анотацій до емодзіВиберіть типову мову словників емодзі у вікні емодзі. Значення $lang застосовується до /usr/share/ibus/dicts/emoji-$lang.dictВиберіть одну з таких умов для встановлення часткової відповідності за анотаціями до емодзі: 0 == відповідність за префіксом, 1 == відповідність за суфіксом, 2 == відповідність за вмістомНатисніть, щоб переглянути попередженняЗакритиТочка кодування: %sОб’єднання діакритичних знаківРозширення об’єднання діакритичних знаківДодаткові об’єднання діакритичних знаківОб’єднання діакритичних знаків і символівКомбіновані позначки половинокКоманди: Загальні індійські форми чиселКомпонентВідповідність за вмістомМалюнки керуванняСкопійовано емодзі до вашого буфера обміну даними.КоптськаКоптські місячні числа© Peng Huang, 2007–2010 © Red Hat, Inc., 2007–2010Числа з паличок для лічбиСтворити кеш регіструКлинописКлинописні числа і пунктуаціяСимволи грошових одиницьНетиповийНетиповий шрифтНазва нетипового шрифту для символів емодзі у вікні емодзіНазва нетипового шрифту для мовної панеліКіпріотська складоваКирилицяРозширена кирилиця-AКирилиця розширена-BКирилиця розширена-CДодаткова кирилицяЗбереження DConf префіксів назвТипова мова словника емодзіОпис: Опис: %sДезеретДеванагаріРозширена деванагаріДекоративніВимкнути клавіатурні скороченняВимкнути:Не показуватиДоґраПлитки доміноВиконаноСистема ДюполоєКлинопис ранньої династіїКерування форматами єгипетських ієрогліфівЄгипетська ієрогліфічнаЕльбасанЕлімаїдськаВбудувати попередньо створений текстВбудувати попередньо створений текст у вікно програмиВбудувати попередньо створений текст у вікно програмиВбудувати попередньо створений текст способу введення у вікно програмиЕмодзіВибір емодзіМова анотацій емодзі:Анотація емодзі:Встановлення відповідності за анотаціями до емодзі може бути частковимКлавіатурне скорочення емодзі для gtk_accelerator_parseЕмоційкиТипово увімкнути спосіб введенняТипово увімкнути спосіб введення, коли програма отримує фокус введенняУвімкнення або вимикання:Увімкнути клавіатурні скороченняУвімкнути:Додаткові буквенно-цифрові у рамкахБуквено-цифрові у рамкахВкладені ієрогліфи і назви місяцівДодаткові ідеографічні у рамкахПорядок рушіївЕфіопськаРозширена ефіопськаЕфіопська розширена-AДодаткові ефіопськіЗавершити роботу фонової служби ibusШРИФТНе вдалося отримати дані поточної програми для роботи з текстом. Будь ласка, повторно встановіть фокус на вікно програми. Наприклад, натисніть клавішу Esc декілька разів, щоб вимкнути режим введення емодзі, клацніть на стільниці, а потім клацніть у вікні вашої програми для роботи з текстом.УлюбленіПрапориСлідувати за курсором введення, якщо панель показано завждиЇжа і питвоЗагальнеЗагальна пунктуаціяГеометричні формиРозширені геометричні формиГрузинськаГрузинська розширенаДодаткові грузинськіСпроба отримання назви загального рушія зазнала невдачі. ГлаголицяДодаткові глаголиціГотичніГрантхаРозширена грецькаГрецькі і коптськіГуджаратіГунджала гондіГурмухіФорми півширини та повної шириниСумісні корейськіХангиль-чжамоКорейска розширена-AКорейська розширена-BСклади хангиляГаніфі рохінджаХанунуМає варіанти емодзіХатранІвритАвтоматично ховатиВерхні приватні замінникиВерхні замінникиХіраганаГоризонтальноПанель IBusНалаштування IBusНе вдалося запустити фонову службу IBus протягом %d секундIBus запущено! Якщо ви не можете скористатися IBus, додайте вказані нижче рядки до файла $HOME/.bashrc; потім вийдіть зі стільничного середовища і увійдіть до нього знову. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus — інтелектуальний канал введення даних у Linux/Unix.Розширена IPAСимволи-ідеограмиІдеографічні символи і пунктуаціяВизначає, чи може бути встановлено відповідність емодзі за частиною рядка, а не повним збігомЯкщо має значення «true», панель слідуватиме за курсором введення, якщо панель працює у режимі безумовного показу. Якщо має значення «false», панель буде показано у фіксованій позиції.імперська арамейськаІндійські числа сіякСпосіб введенняІнскрипційна пехлевіІнскрипційна парфянськаЯванськаКайтхіКана розширена-AДодаткова канаКанбунРадикали кандзіКаннадаКатаканаФонетичні розширення катаканиКая-ліKbdКод клавіші:Розкладка клавіатури: %s Клавіатурні скороченняКхароштхіКхмерськаКхмерські символиХоджкіХудабадськаМОВАРозташування мовної панеліРозташування мовної панелі:Мова: %s ЛаоськаЛатинські додаткові розширеніЛатинь розширена-AЛатинь розширена-BЛатинь розширена-CЛатинь розширена-DЛатинь розширена-EРозкладки латиниці, у яких немає символів ASCIIДодаткові Latin-1ЛепчаСхожі на літери символиЛімбуЛінійна писемність AЛінійна писемність B, ідеограмиЛінійна писемність B, складиПоказати лише список рушіївЛісуЗавантажувати дані Unicode під час запускуЯкщо true, завантаження даних Unicode емодзі під час запуску увімкнено. Для завантаження даних потрібно приблизно 10 МБ пам'яті. Якщо false, дані Unicode буде завантажено під час відкриття діалогового вікна емодзі на початку. Дані Unicode завжди завантажуватимуться після даних емодзі, навіть якщо встановлено значення true.Завантажувати дані емодзі під час запуску програмиЯкщо true, завантаження даних емодзі під час запуску увімкнено. Для завантаження даних потрібно приблизно 10 МБ пам'яті. Якщо false, дані емодзі буде завантажено під час відкриття діалогового вікна емодзі на початку.Завантаження словника Unicode:Нижні замінникиЛікійськаЛідійськаМахаджаніПлитки маджонґМакасарМалаяламМандейськаМаніхейськаМарченМасарам гондіВстановлювати часткову відповідність анотацій до емодзі, якщо збігається вказана кількість символів, але відповідність не є повною.Встановлювати відповідність емодзі за анотаціями з вказаною умовою та збігом понад таку кількість символів:Відповідність анотацій до емодзі за вказаною довжиною рядкаВідповідність з умовою на вказану довжину рядкаВідповідність за вказаною довжиною рядкаМатематичні буквено-цифрові символиМатематичні операториЦифри майяМедефайдрінМаніпуріМаніпурі розширенаМенде кікауїМенюМероїтська, скорописМероїтська ієрогліфічнаМяоРізні математичні символи-AРізні математичні символи-BРізні символиРізні символи і стрілкиРізні символи і піктограмиРізні технічніМодіСимволи зміни тонуМодифікатори:МонгольськаДодаткові монгольськіБільше…Пересунути нижче позначений спосіб введення у списку увімкнених способів введенняПересунути вгору позначений спосіб введення у списку увімкнених способів введенняМроМултанськаМузичні символиМ’янмськаМ’янмська розширена-AМ’янмська розширена-BН’КоНабатейськаНазва: %sНандінагаріНова тай ліНеварськаСкорочення для наступного рушіяНаступний спосіб введення:Рушій не встановлено. НемаєФорми чиселНюй-шуНьякензька пахау-хмонгОб’єктиОгамОл-чикіДавня угорськаДавня італійськаДавня північноарабськаДавня пермськаДавня перськаДавня согдійськаДавня південноарабськаДавня турецькаВідкрити вибір UnicodeОптичне розпізнавання знаківОрієнтація таблиці пошукуОрієнтація таблиці пошуку. 0 = горизонтально, 1 = вертикальноОріяОрнаментальні декоративніОсейджОсманьяІншеІншеОттоманські сіякські числаНа сторінку внизНа сторінку вгоруПахау-хмонгПальмірськаПау Цин ХауЛюди і тілоФагс-паФестський дискФінікійськаФонетичні розширенняДодаткові фонетичні розширенняІгрові картиБудь ласка, натисніть клавішу (або комбінацію клавіш)Будь ласка, натисніть клавішу (або комбінацію клавіш). Діалогове вікно буде закрито після відпускання клавіші.Затримка появи контекстного вікна для перемикача способів введенняПараметриВідповідність за префіксомПрефікси ключів DConf для припинення перетворення назвПопередньо завантажувати рушіїПопередньо завантажувати рушії під час запуску ibusСкорочення для попереднього рушіяПопередній спосіб введення:Вивести адресу D-Bus фонової служби ibusОбласть приватного використанняПсалтирська пехлевіВийтиЗначення RGBA для піктограми XKBЧитати дані з кешу регістру у файлі ФАЙЛ.Читати дані з загальносистемного кешу регістру.РеджанВилучити позначений спосіб введення зі списку увімкнених способів введенняСкинути значення налаштувань до початковихСкидаємо…ПерезапуститиПерезапустити фонову службу ibusЧислові символи руміЗапускати xmodmap, якщо є .xmodmap або .Xmodmap під час перемикання рушіїв ibus.РунічнаСамаритянськаСаураштраЗберегти емодзі з вікна до буфера обміну даними Збережений порядок рушіїв у списку способів введенняЗбережений номер версіїВиберіть мовуВиберіть спосіб введенняВиберіть клавіатурне скорочення для дії %sНалаштувати IBusВстановити шрифт варіантів емодзі у Unicode у вікні емодзіВстановити мову анотацій емодзі у вікні емодзіСпроба встановлення загального рушія зазнала невдачі. Встановити рушій або отримати дані щодо встановленого рушіяВстановити затримку появи контекстного вікна перемикача способів введення у мілісекундах. Типовою є 400. 0 = показувати вікно негайно. 0 < — затримка у мілісекундах. 0 > — не показувати вікно і перемикатися на попередній або наступний рушій.Визначає поведінку ibus: спосіб показу або приховування мовної панеліВстановити орієнтацію варіантів у таблиці пошукуШарадаВикористовувати один спосіб введення для всіх програмШавіанКерування форматами скорописуПоказати список доступних рушіївПоказувати варіанти емодзіПоказувати піктограму у системному лоткуПоказати відомості щодо вибраного способу введенняПоказувати назву способу введенняПоказувати назву способу введення на мовній панеліПоказати назву способу введення на мовній панелі, якщо позначено цей пунктПоказ панелі властивостей:Показати панель налаштовування позначеного способу введенняПоказати значення налаштуваньПоказати вміст кешу регіструПоказати цю довідкову інформаціюПоказати дані щодо версіїСіддхамСингальськаСингальські архаїчні числаВаріанти малих формМале розширення каниСмайлики та емоціїСогдійськаСоранг сомпенгСойомбоЗнаки інтервалівСпеціальніЗапускати ibus при входіВідповідність за суфіксомСунданськаРозширена суданськаВерхні і нижні індексиДодаткові стрілки-AДодаткові стрілки-BДодаткові стрілки-CДодаткові математичні діїДодаткова пунктуаціяДодаткові символи і піктограмиДодаткова область приватного використання AДодаткова область приватного використання BЖестова писемність СаттонСилоті нагріСимволиСимволи і піктографи, розширення AСирійськаДодаткові сирійськіТагалогТаґбанваМіткиТай ліТай-тхемТай-в’єтСимволи Тай Хуан ЖиньТакріТамільськаДодаткова тамільськаТангутськаКомпоненти тангутськоїТелугуТаанаТайськаФонову службу IBus не запущено. Хочете її запустити?Поведінка панелі властивостей. 0 = не показувати, 1 = автоматично ховати, 2 = завжди показуватиТривалість показу панелі властивостей у мілісекундахТривалість показу панелі властивостей (у мілісекундах) після фокусування або зміни властивостей.Час у мілісекундах для приготування показу піктограми панелі для властивостіЧас у мілісекундах, протягом якого слід показувати перехід піктограми панелі з піктограми рушія на піктограму властивості після зміни рушія, якщо властивість задається значенням icon-prop-key у IBusEngineDesc. Якщо вказано значення 0, затримки не буде і піктограму властивості буде показано негайно.Кеш регістру є некоректним. Збережений номер версії буде використано для визначення відмінностей між попередньою встановленою версією ibus та поточною версією ibus.Клавіатурні скорочення для перемикання на наступний спосіб введення у спискуКлавіатурне скорочення для перемикання на попередній спосіб введення у спискуКлавіатурні скорочення для перемикання на наступний спосіб введення у спискуКлавіатурне скорочення для перемикання на попередній спосіб введенняКлавіатурне скорочення для вмикання і вимикання введення символів UnicodeКлавіатурне скорочення для вмикання і вимикання введення емодзіКлавіатурне скорочення для вимикання способів введенняКлавіатурне скорочення для вмикання способів введенняКлавіатурне скорочення для вмикання і вимикання способів введенняКлавіатурне скорочення для вмикання перетворень позицій у таблиці UnicodeКлавіатурне скорочення для вмикання перетворень анотацій емодзі або назв символів UnicodeТибетськаТіфінагТірхутаУ верхньому лівому кутіУ верхньому правому кутіТранспортні і картографічні символиПодорожі і місцяКлавіатурні скорочення-перемикачіКомбінації клавіш для перемикання gtk_accelerator_parseАмериканська розкладка додається до латинських розкладок, варіант можна пропустити.УгаритськаВибір UnicodeПозиція у таблиці Unicode:Шрифт Unicode:Клавіатурне скорочення Unicode для gtk_accelerator_parseУніфіковані силабічні канадських аборигенівУніфіковані силабічні канадських аборигенів (додаткові)Користування: %s КОМАНДА [ПАРАМЕТР...] Використовувати нетиповий шрифтВикористовувати нетиповий шрифт для мовної панеліНетиповий шрифт:Використовувати шляхи бази даних рушія замість ядра ibus. Шляхи слід вказувати у форматі списку значень, відокремлених комами.Використовувати загальний спосіб введенняВикористовувати комбінацію з Shift для перемикання на попередній спосіб введенняВикористовувати розкладку клавіатури системи (XKB)Використовувати розкладку клавіатури системиВикористовувати xmodmapВайВибір варіантівДодаткові символи зміниВедичні розширенняВертикальноВертикальні формиВанчоВаранг-кшитіВизначає, чи може бути встановлено часткову відповідністьВизначає, чи може бути встановлено відповідність емодзі за частиною рядка, а не повним збігом.Записати дані до кешу регістру у файлі ФАЙЛ.Записати дані до загальносистемного кешу регістру.На піктограмі XKB буде показано рядок розкладки. Для показу цього рядка буде використано вказане значення RGBA. Значенням RGBA може бути: 1. назва кольору у X11, 2. шістнадцяткове число у форматі «#ччззсс», де «ч», «з», «с» є цифрами для червоного, зеленого та синього кольорів, 3. колір RGB у форматі «rgb(ч,з,с)» або 4. колір RGBA у форматі «rgba(ч,з,с,п)», де «ч», «з», «с» є або цілими значеннями у діапазоні від 0 до 255, або відсотковими значеннями від 0% до 100%, а «п» є значенням з рухомою крапкою для прозорості у діапазоні від 0 до 1.Радикалі ЇСклади ЇСимволи гексаграм «Книги перетворень»Ви можете додавати анотації до улюблених емодзі у цьому списку.Ви зможете переглянути улюблені емодзі у списку емодзі, якщо у цьому списку є якісь символи.Квадратний Занабазара_Про програму_ДодатиЗаст_осувати_Скасувати_ЗакритиВ_илучитиВ_низ_Гаразд_ПараметриВи_лучитиВ_горуdefault:LTRсписок анотацій до улюблених емодзі у вікні емодзіСписок улюблених емодзі у вікні емодзімова: %s перемикання способів введенняЮрій Чорноіван ibus-1.5.22/po/it.po0000644000000000000000000026760113623751601011044 00000000000000# Italian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2017 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # Alessio Ciregia , 2017. #zanata # Andrea Masala , 2017. #zanata # Luca Ciavatta , 2017. #zanata # Luigi Toscano , 2017. #zanata, 2020. # fujiwara , 2017. #zanata # fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2020-02-16 14:38+0000\n" "Last-Translator: Luigi Toscano \n" "Language-Team: Italian \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.10.3\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Pre-carica i motori" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Precarica i motori durante l'avvio di ibus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Ordine motori" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Ordine motori salvati nell'elenco del metodo di input" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Ritardo popup in millisecondi per la finestra del selettore IME" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Numero di versione salvata" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Utilizza xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Usa la disposizione di tastiera del sistema" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Usa la disposizione di tastiera del sistema (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Inserire il testo pre-modificato" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Inserire il testo pre-modificato nella finestra dell'applicazione" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Usa il metodo di input globale" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Condivide lo stesso metodo di input tra le applicazioni" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Abilita per impostazione predefinita il metodo di input" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 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/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "Mantieni i prefissi dei nomi DConf" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefissi di chiavi DConf per arrestare la conversione dei nomi" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Tasto di scelta rapida di avvio" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "I tasti scorciatoia per abilitare o disabilitare i metodi di input" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Attiva i tasti scorciatoia per gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Abilita i tasti scorciatoia" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "I tasti scorciatoia per abilitare l'input method" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Disabilita i tasti scorciatoia" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "I tasti scorciatoia per disabilitare l'input method" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Motore dei tasti di scelta rapida successivo" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 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/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Motore dei tasti di scelta rapida precedente" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "I tasti scorciatoia per passare al metodo di input precedente" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Nasconde automaticamente" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Comportamento del pannello proprietario. 0 = Non mostrare, 1 = Nascondi " "automaticamente, 2 = Mostra sempre" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Posizione pannello della lingua" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" "Segui il cursore di input nel caso in cui il pannello sia sempre visibile" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orientamento della tabella di ricerca" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientamento della tabella di ricerca. 0 = Orizzontale, 1 = Verticale" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Mostrare l'icona nell'area di notifica" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Mostra il nome del metodo di input" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Mostrare il nome del metodo di input nella barra della lingua" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "Valore RGBA dell'icona XKB" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Usare carattere personalizzato" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Usa un tipo di carattere personalizzato per il pannello della lingua" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Carattere personalizzato" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Nome del tipo di carattere personalizzato per il pannello della lingua" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Tasti scorciatoia Unicode per gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Tasti scelta rapida Emoji per gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Lingua predefinita per il dizionario degli emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Scegliere una lingua predefinita di dizionari emoji nella finestra di " "dialogo. Il valore di $lang viene applicato a /usr/share/ibus/dicts/emoji-" "$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "Lista di emoji preferite sulla finestra degli emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" #: 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:209 msgid "Other" msgstr "Altro" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Selezionare una lingua" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "A_nnulla" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Altro..." #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Informazioni" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Chiudi" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Lingua: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Disposizione tastiera: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autore: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Descrizione:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Seleziona un metodo di input" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "A_ggiungi" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Metodo di input" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Preferenze di IBus" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Imposta Preferenze di IBus" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Scorciatoie da tastiera" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Codice del tasto:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modificatori:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "A_pplica" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "Eli_mina" #: 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 "" "Premere un tasto (o una combinazione di tasti).\n" "La finestra verrà chiusa dopo il rilascio del tasto stesso." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Premere un tasto (o una combinazione di tasti)" #: setup/main.py:121 setup/main.py:588 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:515 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:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Impossibile avviare il demone IBus in %d secondi" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Selezione delle scorciatoie da tastiera per %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "selezione metodi di input in corso" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Orizzontale" #: setup/setup.ui:14 msgid "Vertical" msgstr "Verticale" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Angolo superiore sinistro" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Angolo superiore destro" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Angolo inferiore sinistro" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Angolo inferiore destro" #: setup/setup.ui:37 msgid "Custom" msgstr "Personalizzato" #: setup/setup.ui:48 msgid "Do not show" msgstr "Non mostrare" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Nascondi automaticamente" #: setup/setup.ui:54 msgid "Always" msgstr "Sempre" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Metodo di input successivo:" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Metodo di input precedente:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Abilitare o disabilitare:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Abilita:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Disabilita:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Scorciatoie da tastiera" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Imposta l'orientamento dei candidati nella tabella di ricerca" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Orientamento dei candidati:" #: setup/setup.ui:407 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:409 msgid "Show property panel:" msgstr "Mostra il pannello delle proprietà:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Posizione pannello della lingua:" #: setup/setup.ui:494 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:508 msgid "Embed preedit text in application window" msgstr "Inserire il testo pre-modificato nella finestra dell'applicazione" #: setup/setup.ui:513 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:527 msgid "Use custom font:" msgstr "Usare carattere personalizzato:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Tipo di carattere e stile" #: setup/setup.ui:579 msgid "General" msgstr "Generali" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "Aggiunge il metodo selezionato ai metodi di input abilitati" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Rimuovi" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "Rimuove il metodo selezionato dai metodi di input abilitati" #: setup/setup.ui:700 msgid "_Up" msgstr "_Su" #: setup/setup.ui:707 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:718 msgid "_Down" msgstr "_Giù" #: setup/setup.ui:725 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:736 msgid "_About" msgstr "I_nformazioni" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Mostra le informazioni sul metodo di input selezionato" #: setup/setup.ui:754 msgid "_Preferences" msgstr "Preferen_ze" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Mostra l'impostazione dell'input method selezionato" #: setup/setup.ui:812 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 "" "Il metodo di input attivo può essere commutato tra quelli " "selezionati nella lista sopra premendo i tasti di scelta rapida della " "tastiera o facendo clic sull'icona del pannello." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Annotazione emoji:" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "I tasti scorciatoia per abilitare o disabilitare i metodi di input" #: setup/setup.ui:929 #, fuzzy msgid "Unicode code point:" msgstr "Punto di codice: %s" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Carattere Unicode:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Disposizione tastiera" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Seleziona un metodo di input" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Avanzate" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Il bus di input intelligente\n" "Sito web: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Avvia IBus all'accesso" #: setup/setup.ui:1358 msgid "Startup" msgstr "Avvio" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "Elenca solo il nome del motore" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Impossibile collegarsi a IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "lingua: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Nessun motore impostato.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Impostazione motore globale fallita.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Acquisizione motore globale fallita.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Leggere la cache del registro di sistema." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Leggere la cache del registro dei FILE." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "La cache del registro non è valida.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Scrivere la cache del registro di sistema." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Scrivere la cache del registro dei FILE." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "Fatto" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Impostare od ottenere motore" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Esci ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "Mostra motori disponibili" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Non implementato)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Fai ripartire il demone ibus" #: tools/main.vala:449 msgid "Show version" msgstr "Mostra la versione" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Mostra il contenuto della cache del registro" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Creare cache del registro" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Stampare l'indirizzo D-Bus di ibus-deamon" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Mostrare i valori della configurazione" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Reimpostare i valori della configurazione" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Salvare emoji sulla finestra degli appunti" #: tools/main.vala:458 msgid "Show this information" msgstr "Mostrare questa informazione" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Utilizzo: %s COMANDO [OPZIONE...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Comandi:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s è un comando sconosciuto!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Preferiti" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_Chiudi" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Punto di codice: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Descrizione: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Nessuno" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Annotazioni: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Annullato scegliere un emoji." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Copiato un emoji negli appunti." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "\"FONT\" per i caratteri emoji sulla finestra degli emoji" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "FONT" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "\"LANG\" per le annotazioni sulla finestra degli emoji. es. \"en\"" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "LANG" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "Pannello IBus" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus è un bus di input intelligente per Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "Launchpad Contributions:\n" " Sergio Zanchetta https://launchpad.net/~primes2h" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Preferenze" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Riavvia" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/id.gmo0000644000000000000000000003301113623751603011154 00000000000000     #- Q h  o <  .BZ rH} # 0>T ]i(|(@D.s 9 2=.N}0M~   /BZ s @C'ATg9)^0L }.%&FKi?(#:Zo912;R-k&@'-"Ux 8O'8Q`@`DD<+.h-4 /1a'> !B]f     % v8 !!!!%!"5"O"o^""o#Iu### ####$1$ E$HP$$$ $#$$ % % )%6%I%)_%6%=%$%I#&m&& & &&0&&'"' 7'B'.R''0m(v( )") &)2)G)Y)m) )) )K)K)G*f***7**,*Z$+0++3++(,+,E,^,},,,A, ,-5-T-j- }----D-*-.7X...5./- /KN//.//00-09C0]}0*0T1[1x1C2CH2C262*3-23@`3333/3%4,4+@4l44F4(4" 50595T5q5x5 555 555 555 5 5556{UY-, Dl1[C} WJx4T Ri ~=P%O#^ "Z$pV`hG?&N0K]cSyX<:a'@EF8Qk/\oMwI.HLA5f|>_bBv;g2jmtdqr+!*73n)9esuz(%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.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.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s List engine name onlyModifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsRestartRestart ibus-daemonSaved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutVerticalWrite the registry cache FILE.Write the system registry cache._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2019-07-16 11:19+0700 Last-Translator: Rahman Yusri Aftian Language-Team: Indonesian Language: id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Poedit 2.2.1 %s perintah tidak dikenal! (Tidak diterapkan)...Font and StylePengaturan metode input globalKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki Metode input aktif dapat diubah dari yang dipilih dalam daftar di atas dengan menekan tombol pintasan keyboard atau mengklik ikon panel. IhwalTambahkan metode input yang dipilih ke dalam metode input yang diaktifkanLanjutanSelaluPembuat: %s Sembunyi otomatisPojok kiri bawahPojok kanan bawahTidak dapat terhubung ke IBus. Orientasi kandidat:Perintah: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Buat cache registriCustomFonta KhususNama font khusus untuk panel bahasaDConf menyimpan awalan namaDeskripsi: Nonaktifkan tombol pintasanNonaktifkan:Jangan ditampilkanSematkan Teks PreeditSematkan Teks Preedit di Jendela AplikasiSematkan teks yang sudah disiapkan di jendela aplikasiSematkan teks metode input yang sudah ada di jendela aplikasiAktifkan metode input secara defaultAktifkan metode input secara default ketika aplikasi mendapat fokus inputAktifkan atau nonaktifkan:Aktifkan tombol pintasAktifkan:Urutan mesinKeluar dari ibus-daemonIkuti kursor input jika panel selalu ditampilkanUmumDapatkan mesin global gagal. Otomatis sembunyikanHorisontalPreferensi IBusDaemon IBus tidak dapat dimulai dalam% d detikIBus telah dimulai! Jika Anda tidak dapat menggunakan IBus, tambahkan baris berikut ke $ HOME / .bashrc Anda; kemudian masuk kembali ke desktop Anda. ekspor GTK_IM_MODULE=ibus export XMODIFIERS =@im= ibus export QT_IM_MODULE=ibusIBus adalah bus input cerdas untuk Linux / Unix.Jika benar, panel mengikuti kursor input jika panel selalu ditampilkan. Jika salah, panel ditampilkan di lokasi tetap.Metode InputKbdKata kunci:Keyboard layout: %s Pintasan keyboardPosisi panel bahasaPosisi panel bahasa:Bahasa: %s Daftar nama mesin sajaPengubah:Naikkan metode input yang dipilih dalam daftar metode input yang diaktifkanNaikkan metode input yang dipilih dalam daftar metode input yang diaktifkanTombol pintas mesin berikutnyaMetode input selanjutnya:Tidak ada mesin yang diatur. Orientation of lookup tableOrientasi tabel pencarian. 0 = Horisontal, 1 = VertikalLainSilakan tekan tombol (atau kombinasi tombol)Silakan tekan tombol (atau kombinasi tombol). Dialog akan ditutup ketika kunci dilepaskan.Popup delay milidetik untuk jendela pengalih IMEPrefensiAwalan kunci DConf untuk menghentikan konversi namaSebelum memuat mesinSebelum memuat mesin selama ibus dimulaiPrev engine shortcut keysMetode input sebelumnya:Cetak alamat D-Bus ibus-daemonKeluarBaca FILE cache registri.Baca cache registri sistem.Hapus metode input yang dipilih dari metode input yang diaktifkanMuat ulangMuat ulang ibus-daemonMesin yang disimpan memesan dalam daftar metode inputNomor versi tersimpanPilih metode inputPilih pintasan keyboard untuk %sSetel Preferensi IBusSetel mesin global gagal. Atur atau dapatkan mesinAtur perilaku ibus cara menampilkan atau menyembunyikan bilah bahasaAtur orientasi kandidat di tabel pencarianBagikan metode input yang sama di antara semua aplikasiTampilkan mesin yang tersediaTampilkan ikon pada baki sistemTampilkan informasi tentang metode input yang dipilihTampilkan nama metode inputTampilkan nama metode input pada bilah bahasaTampilkan nama metode input pada bilah bahasa saat mencentang kotak centangTampilkan panel properti:Tampilkan pengaturan metode input yang dipilihTampilkan konten cache registriPerlihatkan informasi iniTampilkan versiMulai ibus saat masukDaemon IBus tidak berjalan. Apakah Anda ingin memulainya?Perilaku panel properti. 0 = Jangan tampilkan, 1 = Sembunyikan otomatis, 2 = Selalu tampilkanMilidetik untuk menampilkan panel propertiMilidetik untuk menampilkan panel properti setelah fokus-masuk atau properti diubah.Cache registri tidak valid. Nomor versi yang disimpan akan digunakan untuk memeriksa perbedaan antara versi ibus yang diinstal sebelumnya dan salah satu ibus saat ini.Tombol pintas untuk beralih ke metode input berikutnya dalam daftarTombol pintas untuk beralih ke metode input sebelumnya dalam daftarTombol pintas untuk beralih ke metode input berikutnya dalam daftarTombol pintas untuk beralih ke metode input sebelumnyaTombol pintas untuk mematikan metode inputTombol pintas untuk mengaktifkan metode inputTombol pintas untuk mengaktifkan atau menonaktifkan metode inputPojok kiri atasUjung kanan atasKunci pintas pemicuKunci pintas pemicu untuk gtk_accelerator_parseMenggunakan: %s COMMAND [OPTION...] Gunakan font khususGunakan nama font khusus untuk panel bahasaGunakan font khusus:Gunakan metode input globalGunakan pintasan dengan shift untuk beralih ke metode input sebelumnyaGunakan tata letak keyboard (XKB) sistemGunakan tata letak keyboard sistemVertikalTulis FILE cache registri.Tulis cache registri sistem.Ihw_alT_ambahMener_apkanBa_tal_KeluarMen_ghapus_Turun_OK_Preferensi_Hapus_Naikdefault:LTRbahasa: %s beralih metode inputkredit-penerjemahibus-1.5.22/po/remove-potcdate.sin0000644000000000000000000000066013623751246013674 00000000000000# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } ibus-1.5.22/po/LINGUAS0000644000000000000000000000026413623750431011103 00000000000000ar as bg bn bn_IN ca cs da de en_GB es et eu fa fi fr gu he hi hu ia id it ja kn ko lv ml mn mr nb nl or pa pl pt pt_BR ru sq sr sr@latin sv ta te tg tr uk ur vi zh_CN zh_HK zh_TW ibus-1.5.22/po/lv.gmo0000644000000000000000000002222513623751603011206 00000000000000jl   #+ O f  o  < B K R ^ h {  H  # ' 5 K T (g ( @  D ^ q    0    & > W e @p C  "9>x)~^ %#Icz?91M2-&@7'x@DD:<.-4N^o' "+27>FMU[ _lt x:>.TtHFL  R ny+ ! !11CAu)E'@ ` j v.4 O[QsS%? WBx9u p}1*? Ub+~=6:<$w4!2Y& 3 % I N$!Hs!N!1 "1=">o""""#6#P#!i#2#+# ## # $$ $"$*$1$ 7$E$N$ W$1c$'Jha%g*b,Id0CL&A6/-KP\cSZ"`f) N_V47Q:5?Y @B ]32G$F9=UO1M+;(i^WD H.e[<X E8T!j#R>...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCandidates orientation:Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontCustom font name for language panelDescription: Disable shortcut keysDisable:Embed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:GeneralHorizontalIBus PreferencesIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Modifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.PreferencesPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:QuitRemove the selected input method from the enabled input methodsRestartSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow setup of the selected input methodStart ibus on loginThe shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysUse custom fontUse custom font name for language panelUse custom font:Use global input methodUse system keyboard (XKB) layoutUse system keyboard layoutVertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRtranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:47+0000 Last-Translator: Tranzistors Language-Team: Latvian Language: lv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2); ...Fonts un stilsGlobālās ievades metodes iestatījumiTastatūras izkārtojumsTastatūras īsceļiStartēšanaIBus Inteliģentā ievades kopne Mājas lapa: https://github.com/ibus/ibus/wiki ParPievienot izvēlēto ievades metodi pie aktivētajām ievades metodēmPaplašinātiVienmērAutors: %s Autom. slēpšanaApakšējais kreisais stūrisApakšējais labais stūrisKandidātu orientācija:Autortiesības (c) 2007-2010 Peng Huang Autortiesības (c) 2007-2010 Red Hat, Inc.IzvēlētsIzvēlēts fontsIzvēlētā fonta nosaukums valodas panelimApraksts: Deaktivēt īsinājumu taustiņusDeaktivēt:Iegult pirmsrediģēšanas tekstuIegult pirmsrediģēšanas tekstu lietotnes logāIegult pirmsrediģēšanas tekstu lietotnes logāIegult ievades metodes pirmsrediģēšanas tekstu lietotnes logāAktivēt ievades metodi pēc noklusējumaAktivēt ievades metodi pēc noklusējuma, kad lietotne saņem fokusuAktivēt vai deaktivēt:Aktivēt īsinājuma taustiņusAktivēt:VispārīgiHorizontāliIBus iestatījumiIBus ir inteliģenta ievades kopne Linux/Unix.Ievades metodeKbdTaustiņa kods:Tastatūras izkārtojums: %s Tastatūras saīsnesValodas paneļa pozīcijaValodas paneļa pozīcija:Valoda: %s Modifikatoru taustiņi:Pārvietojiet lejup izvēlēto ievades metodi ieslēgto ievades metožu sarakstāPārvietojiet augšup izvēlēto ievades metodi ieslēgto ievades metožu sarakstāNākošā dzinēja saīsņu taustiņiNākamā ievades metodeApsekošanas tabulas novietojumsApsekošanas tabulas novietojums. 0 = horizontāls, 1 = vertikālsCitsLūdzu, nospiediet taustiņu (vai taustiņu kombināciju)Lūdzu, nospiediet taustiņu (vai taustiņu kombināciju). Dialoga logs tiks aizvērts, kad taustiņš tiks atlaists.IestatījumiPārlādēt dzinējusLaicīgi ielādēt dzinējus ibus ielādes laikāIepriekšējā dzinēja saīsņu taustiņiIepriekšējā ievades metode:IzietNoņemt izvēlēto metodi no ieslēgto ievades metožu sarakstaPārstartētIzvēlieties ievades metodiIzvēlieties tastatūras saīsni priekš %sIestatīt IBus iestatījumusIestatīt ibus uzvedību kā rādīt vai slēpt valodas josluIestatīt kandidātu orientāciju apsekošanas tabulāStarp lietotnēm izmantot vienu un to pašu ievades metodiRādīt ikonu sistēmas ikonu joslāParādīt informāciju par izvēlēto ievades metodiRādīt ievades metodes nosaukumuParādīt ievades metodes nosaukumu valodas joslāParādīt ievades metodes nosaukumu valodas joslā, kad tiek atzīmēta izvēles rūtiņaRādīt izvēlētās ievadies metodes iestatījumusStartēt ibus līdz ar pieslēgšanosSaīsņu taustiņi, lai pārslēgtos uz nākošo ievades metodi sarakstāSaīsņu taustiņi, lai pārslēgtos uz iepriekšējo ievades metodi sarakstāSaīsņu taustiņi, lai pārslēgtos uz nākamo ievades metodi sarakstāSaīsņu taustiņi, lai pārslēgtos uz iepriekšējo ievades metodi sarakstāSaīsņu taustiņi, lai izslēgtu ievades metodi Saīsņu taustiņi, lai ieslēgtu ievades metodi Saīsņu taustiņi, lai ieslēgtu vai izslēgtu ievades metodiAugšējais kreisais stūrisAugšējais labais stūrisTrigera saīsņu taustiņiIzmantot izvēles fontuIzmantojamais izvēles fonta nosaukums valodas panelimLietot izvēlētu fontu:Izmantot globālo ievades metodiIzmantot sistēmas tastatūras (XKB) izkārtojumu Izmantot sistēmas tastatūras izkārtojumuVertikāliP_ar_Pievienot_PielietotAt_celt_Aizvērt_Dzēst_Lejup_Labi_Iestatījumi_Izņemt_Augšupdefault:LTRArvis Lācis Pēteris Krišjānis Rūdolfs Mazursibus-1.5.22/po/zh_TW.gmo0000644000000000000000000011750513623751604011627 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIf7g<hOhfhuhyhhhh hihSijj3jBjRjYj ijvj jjjjjj jj k k'k!qWq ^q kq*xq qqPqr'r :rGr crpr wr<rrr rss*s?sRsks s ss ss ss s s tt"t)t9tUtqtt tt0t-t9"u \ufuvuu!u+u uu?vSvfv vvvvvv vvww/wEwXw]w x'x3.xbxrxyx xx xxxxxy (y 2y?yOyhyxyyyy yyyyz *z7z Jz Tz aznzz zz zz*zz5{{||B;|{~|| } #}-}C} Y} c}p} }} } } }} }} }} ~ ~ )~ 3~ @~J~Z~_~r~ ~~~~~~~~ , ?L \fu $"(  - = JW j t H<$'Lh Ѓ )?Og  ΄؄  8 T^ n { ʅ օ /F J Waq x † ҆߆ %85T  LJ·Շ  , <Ie u '[Lj+# O \-i$ω# (5HOf 3ۊ \1 -' *7Gd3}33͍0 2-?m}!؎!*2]s Ώ ۏ + ;H Xe x ĐԐ*CUgz  ϑܑ  $ 1> Q[ k x;NŒT3$r66P66** Kg*'9֖ * 7 AKaq(D ,+>j$!И$Nm:ޙ &BU \ is*T: 6.Ze ٝ    &1 B M X3d- ƞӞaJWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.21 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2019-11-25 09:53+0000 Last-Translator: pan93412 Language-Team: Chinese Language: zh_TW MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Zanata 4.6.2 繪文字對話盒之繪文字字元用「FONT」字型繪文字對話盒的「LANG」語言註解。例:「en」%s 為未知指令! (尚未實作)...字型與風格全域輸入法設定值鍵盤配置鍵盤快捷鍵啟動IBus 智慧型輸入框架 首頁: https://github.com/ibus/ibus/wiki 您可以透過按下鍵盤快捷鍵,或是點按面板圖示的方式,來從上列清單中選取的輸入法之中切換使用中的輸入法。關於活動加入選取的輸入法到已啟用的輸入法內阿德拉姆文進階愛琴海數字阿洪姆文煉金術符號別名:%s字母表現形式總是安那托利亞文碑銘體古希臘音樂譜記號古希臘數字古代符號動物與自然註釋:%s阿拉伯文阿拉伯文擴充-A阿拉伯文數學用字母符號阿拉伯文表現形式-A阿拉伯文表現形式-B阿拉伯文補充阿美尼亞文箭頭作者:%s 自動隱藏阿維斯陀文巴厘文巴蒙文巴蒙文補充基本拉丁字巴撒符文巴塔克文孟加拉文比奇舒奇文區塊元件注音符號注音符號擴充左下角右下角方塊繪製婆羅米字母盲人點字樣式返回繪文字選擇布吉文布希德文拜占庭音樂符號中日韓相容字元中日韓相容形式中日韓相容表意文字中日韓相容表意文字補充中日韓部首補充中日韓筆劃部件中日韓符號和標點符號中日韓統一表意文字中日韓統一表意文字擴充 A中日韓統一表意文字擴充 B中日韓統一表意文字擴充 C中日韓統一表意文字擴充 D中日韓統一表意文字擴充 E中日韓統一表意文字擴充 F無法連接 IBus。 已取消繪文字的選擇。候選詞排列方向:卡里亞文高加索阿爾巴尼亞文查克馬文占文切羅基文切羅基文補充西洋棋符號選擇部分符合繪文字註解的條件請在繪文字對話窗當中選擇繪文字字典語言。$lang 的值會套用到 /usr/share/ibus/dicts/emoji-$lang.dict選擇下列部分符合繪文字註解的條件之一:0 == 前綴符合,1 == 後綴符合, 2 == 內含符合點擊顯示警告訊息關閉碼點:%s組合式變音標記組合式變音標記擴充組合式變音標記補充符號的組合式變音標記組合式半形符號指令: 常用印度數字圖樣元件內含符合控制圖案已將繪文字複製到您的剪貼簿。科普特文科普特潤餘數字著作權所有 (c) 2007-2010 黃鵬 著作權所有 (c) 2007-2010 Red Hat, Inc.算籌記數式建立註冊快取楔形文字楔形數字和標點符號貨幣符號自訂自訂字型繪文字對話窗當中繪文字字元的自訂字型名稱為語言面板自訂字型塞浦路斯音節字西里爾字西里爾字擴充-A西里爾字擴充-B西里爾字擴充-C西里爾字補充DConf 保留名稱前綴繪文字字典的預設語言描述: 描述:%s猶他大學音標天城文天城文擴充裝飾符號停用快捷鍵停用:不要顯示多格拉文西洋骨牌牌面完成杜普雷速記古王國時期楔形文字埃及聖書體格式控制古埃及聖書字碑銘體艾爾巴桑文埃利邁文內嵌預先編輯文字在應用程式視窗中內嵌預先編輯文字在應用程式視窗內嵌預先編輯文字在應用程式視窗內嵌輸入法的預先編輯文字繪文字繪文字選擇繪文字註釋語言:繪文字符號:可以部分符合繪文字註解gtk_accelerator_parse 的繪文字快捷鍵表情圖示預設啟用輸入法當應用程式取得輸入焦點時,預設將輸入法啟用啟用或停用:啟用快捷鍵啟用:括圈字母數字補充括圈字母數字括圈中日韓文字和月份括圈表意文字補充引擎順序衣索比亞文衣索比亞文擴充衣索比亞文擴充-A衣索比亞文補充離開 ibus-daemonFONT無法取得目前的文字應用程式,請重新取回您應用程式的焦點。例如按幾次 Esc 退出繪文字輸入模式後,按一下桌面再重按您的文字應用程式一次。喜愛旗幟在面板總是顯示的情況下跟隨輸入游標食物與飲品通用一般標點符號幾何形狀幾何圖形擴充喬治亞文喬治亞文擴充喬治亞文補充無法取得全域引擎。 格拉哥里字母格拉哥里字母補充歌德文帕拉瓦文希臘字擴充希臘字與科普特字古吉拉特文古吉拉共地文字古爾穆基文半寬與全寬形式韓文相容字母韓文字母韓文字母擴充-A韓文字母擴充-B韓文音節文字哈乃斐羅興亞文字哈努諾文有繪文字變化哈坦文希伯來文自動隱藏高段私用代理區高段代理區平假名水平IBus 面板IBus 偏好設定IBus 幕後程式無法在 %d 秒後啟動IBus 已經啟動!若您無法使用 IBus,請將下列文字加入您的 $HOME/.bashrc 中;接著重新登入桌面。 export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus 為 Linux/Unix 上的智慧型輸入法框架。IPA 國際音標擴充表意文字描述字元表意文字符號和標點是否繪文字註解可以用部分字串符合取代精確符合若為真,則面板會在總是顯示的情況下跟隨輸入游標。若為假,則面板會顯示在固定位置上。規範阿拉米文印度西亞克數字輸入法巴列維文碑銘體帕提亞文碑銘體爪哇文凱提字母假名擴充-A假名補充日本漢文訓點號康熙部首卡納達文片假名片假名注音擴充克耶文鍵盤按鍵碼:鍵盤配置: %s 鍵盤快捷鍵佉盧字母高棉文高棉符號可吉文庫達瓦迪文LANG語言面板位置語言面板位置:語言:%s 寮文拉丁字擴充增補拉丁字擴充-A拉丁字擴充-B拉丁字擴充-C拉丁字擴充-D拉丁字擴充-E無 ASCII 之拉丁鍵盤配置拉丁字-1 補充雷布查文類文字符號林布文線形文字 A線形 B 表意文字線形 B 音節文字僅列出引擎名稱老傈僳文每次開啟時載入 Unicode 資料如果為 True 則在每次開啟時載入 Unicode 資料。載入資料需要大約 15MB 大小的記憶體。如果設定為 False 則在第一次開啟 Emoji 對話框時載入 Unicode 資料,就算設定為 True,Unicode 資料永遠都會在 Emoji 資料載入後才載入。每次開啟時載入 Emoji 資料如果為 True 則在每次開啟時載入 Emoji 資料,載入資料大約需要 10MB 的記憶體大小。當設定為 False 時則在第一次開啟 Emoji 對話框時載入 Emoji 資料。載入 Unicode 字典:低段代理區呂基亞文呂底亞文馬哈佳尼文麻將牌面瑪卡莎文馬拉亞拉姆文曼達文摩尼教文象雄文馬薩拉姆共地文以超過指定字數符合部分繪文字註解,而非精確符合。部分繪文字註解符合下列條件以及至少字數:以指定長度符合繪文字註解符合指定整數的條件符合指定整數長度數學用字母數字符號數學運算子瑪雅數字梅德法伊德林文曼尼普爾文曼尼普爾文擴充門德語奇卡奎文選單麥羅埃文通俗體麥羅埃文碑銘體柏格理苗文零雜數學用符號-A雜合數學用符號-B零雜符號混合符號與鍵號雜合符號和象形圖零雜技術符號莫迪文聲調修飾符號修飾鍵:蒙古文蒙古文補充其他…下移所選取的輸入法上移所選取的輸入法蒙羅文穆爾坦尼文音樂符號緬甸文緬甸文擴充-A緬甸文擴充-BNko 西非書面文納巴泰文名稱:%s南迪城文新傣仂文紐瓦文「下一個引擎」快捷鍵下一個輸入法:尚未設定引擎。 無數字形式女書文創世紀苗文物體歐甘文桑塔利文古匈牙利文古意大利文古北阿拉伯文古彼爾姆文古波斯文古粟特字母古南阿拉伯文古突厥文開啟 Unicode 選擇光學字元辨識查選表單表排列方向查詢表單的排列方向。0 = 水平,1 = 垂直歐利亞文裝飾雜錦圖歐塞奇文奥斯曼亞字母其他其他奧斯曼西亞克數字上一頁下一頁救世苗文帕爾邁拉文包欽浩文人們 & 身體八思巴文費斯托斯泥圓盤文字腓尼基字母音標擴充音標擴充補充撲克牌請按鍵盤按鍵 (或是按鍵組合)請按鍵盤按鍵 (或是按鍵組合) 當您放開按鍵時,對話框會自動關閉。IME 切換器視窗彈出延遲的毫秒數偏好設定前綴符合DConf 鍵的前綴,用來停止名稱轉換預先載入引擎當 IBus 啟動時預先載入引擎「上一個引擎」快捷鍵上一個輸入法:列印 ibus-daemon 的 D-Bus 位址私用區塊詩篇巴列維文結束XKB 圖示的 RGBA 值讀取註冊快取 FILE。讀取系統註冊快取。勒姜文從已啟用的輸入法中移除所選的輸入法重設組態值重設中…重新啟動重新啟動 ibus-daemon魯米數字符號當 ibus 引擎切換之時,若 .xmodmap 或 .Xmodmap 存在的話,則執行 xmodmap。 盧恩文字撒馬利亞字索拉什特拉文將對話窗中的繪文字儲存到剪貼簿輸入法清單中儲存的引擎順序儲存的版本號碼選取語言選取輸入法為 %s 選取鍵盤快捷鍵設定 IBus 偏好設定設定繪文字對話框上的 Unicode 候選字型設定繪文字對話窗中的繪文字註釋語言無法設定全域引擎。 設定引擎或取得引擎設定用來顯示 IME 切換器視窗的彈出視窗延遲毫秒。預設值是 400。0 = 永遠顯示視窗。0 < 延遲毫秒。0 > 不顯示視窗及切換上下引擎。設定 IBus 如何顯示或隱藏語言列的行為設定查詢表單內候選字詞的排列方向夏拉達文在所有應用程式共用同一個輸入法肅伯納字母速記格式控制符顯示可用的引擎顯示繪文字變化在系統匣顯示圖示顯示所選取的輸入法資訊顯示輸入法名稱在語言列顯示輸入法名稱當選取時在語言列上輸入法名稱顯示屬性面板:顯示選取輸入法的設定顯示組態值顯示註冊快取的內容顯示此資訊顯示版本悉曇文僧伽羅文古僧伽羅文數字小寫形式變體小假名擴充笑臉 & 表情粟特字母索朗桑朋文索永布文佔位修飾字元特殊區域在登入時啟動 IBus後綴符合巽他文巽他文補充上標和下標補充箭號-A補充箭號-B補充箭頭-C補充數學運算符補充標點符號補充符號與象形圖補充私用區-A補充私用區-B薩頓手語符號錫爾赫特文符號符號和象形文字擴充-A敘利亞文敘利亞文補充他加祿文塔格巴努亞文標籤傣哪文老傣文傣端文太玄經符號塔克里文泰米爾文泰米爾文補充西夏文西夏文部件泰盧固文塔納文泰文IBus 幕後程式並非執行中。您是否要啟動它?屬性面板的行為。0 = 不要顯示,1 = 自動隱藏,2 = 總是顯示顯示屬性面板的毫秒數當焦點落在屬性面板內,或屬性變更時屬性面板的顯示毫秒數。顯示面板屬性圖示的毫秒數當切換引擎時將面板的引擎圖示改顯示為屬性圖示的毫秒數,若 IBusEngineDesc 中該屬性的 icon-prop-key 值有指定的話。如果值為 0,則沒有延遲時間,該屬性圖示將立即顯示。註冊快取無效。 儲存的版本號碼可以用來查看前次安裝的 ibus 版本與目前安裝的 ibus 版本之間的差異。用來切換到清單內下一個輸入法的快捷鍵用來切換到清單內上一個輸入法的快捷鍵用來切換到清單內下一個輸入法的快捷鍵用來切換到清單內上一個輸入法的快捷鍵開啟或關閉 Unicode 輸入的快捷鍵開啟繪文字輸入或關閉的快捷鍵關閉輸入法的快捷鍵開啟輸入法的快捷鍵用來開啟或關閉輸入法的快捷鍵啟用 Unicode 碼位轉換的快捷鍵啟用繪文字符號或 Unicode 名稱轉換的快捷鍵藏文提非納格字母特忽塔文左上角右上角運輸和地圖符號旅行與地點觸發用快捷鍵gtk_accelerator_parse 的觸發快捷鍵US 鍵盤配置附加到拉丁鍵盤配置。variant 可以省略。烏加里特楔形文字Unicode 選擇Unicode 碼位:Unicode 字體:gtk_accelerator_parse 的 Unicode 快捷鍵統一加拿大原住民音節統一加拿大原住民音節擴充用法:%s COMMAND [OPTION...] 使用自訂字型語言面板是否使用自訂字型使用自訂字型:使用引擎基模位置取代 ibus 核心,可以透過逗號分割字串。使用全域輸入法使用含 Shift 鍵之快捷鍵來切換至前個輸入法使用系統鍵盤 (XKB) 配置使用系統鍵盤配置使用 xmodmap瓦伊文字形變體選取符字形變體選取符補充吠陀梵文擴充垂直直書形式萬秋文瓦蘭齊地文是否可以只部分符合繪文字註解比對時是否可以只有部分字串符合繪文字註解,而非精確符合。寫入註冊快取 FILE。寫入系統註冊快取。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 值。彝文字根彝文音節字易經六十四卦象符號您可以為清單中喜愛的繪文字指派註解。您可以在繪文字清單中顯示喜愛的繪文字,若有列出任何字元的話。札那巴札爾方塊字關於(_A)加入(_A)套用(_A)取消(_C)關閉(_C)刪除(_D)向下(_D)確定(_O)偏好設定(_P)移除(_R)向上(_U)default:LTR繪文字對話盒中喜愛的繪文字註解列表繪文字對話窗中的喜愛繪文字清單語言:%s 切換輸入法Ding-Yi Chen 陳定彞 , 2009. Cheng-Chia Tseng , 2010-17.ibus-1.5.22/po/bn.po0000644000000000000000000027536713623751577011053 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 12:45-0500\n" "Last-Translator: Ayesha Akhtar \n" "Language-Team: Bengali \n" "Language: bn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 3.7.3\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "ইঞ্জিন পূর্বে লোড করা হবে" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus আরম্ভের সময় ইঞ্জিনগুলি পূর্বে লোড করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "সিস্টেম কি-বোর্ড বিন্যাস প্রয়োগ করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "সিস্টেম কি-বোর্ড (XKB) বিন্যাস প্রয়োগ করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "অ্যাপ্লিকেশন উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "সার্বজনীন ইনপুট পদ্ধতি " #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "সকল অ্যাপ্লিকেশনের মধ্যে একই ইনপুট পদ্ধতি ব্যবহার করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "ডিফল্ট অবস্থায় ইনপুট পদ্ধতি সক্রিয় করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "ইনপুট প্রাপ্ত করার উদ্দেশ্যে অ্যাপ্লিকেশনে ফোকাস করা হলে, ডিফল্ট রূপে ইনপুট পদ্ধতি " "সক্রিয় করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "ট্রিগারের শর্টকাট-কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "ইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "শর্টকাট কী সক্রিয় করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "ইনপুট পদ্ধতি চালু করার জন্য শর্টকাট কী" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "শর্টকাট কী নিষ্ক্রিয় করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "ইনপুট পদ্ধতি বন্ধ করার জন্য শর্টকাট কী" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "পরবর্তী ইঞ্জিনের জন্য শর্টকাট-কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "তালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "পূর্ববর্তী ইঞ্জিনের শর্টকাট-কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "তালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "স্বয়ংক্রিয়ভাবে আড়াল করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "ভাষার প্যানেলের অবস্থান" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "লুক-আপ টেবিলের দিশা" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "লুক-আপ টেবিলের দিশা। 0 (০) = অনুভুমিক, 1 (১) = উল্লম্ব" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "সিস্টেম ট্রের মধ্যে আইকন প্রদর্শন করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "ভাষার প্যানেলের জন্য স্বনির্ধারিত ফন্টের নাম ব্যবহার করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "স্বনির্ধারিত ফন্ট" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "ভাষার প্যানেলের জন্য ব্যবহারযোগ্য স্বনির্ধারিত ফন্টের নাম" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "ইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 #, fuzzy msgid "The shortcut keys for turning emoji typing on or off" msgstr "ইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "ভাষার প্যানেলের জন্য ব্যবহারযোগ্য স্বনির্ধারিত ফন্টের নাম" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "অন্যান্য" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "একটি ইনপুট পদ্ধতি নির্বাচন করুন" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "বাতিল (_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "ঠিক আছে (_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "পরিচিতি" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "বন্ধ (_C)" #: 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 "একটি ইনপুট পদ্ধতি নির্বাচন করুন" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "যোগ করুন (_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "ইনপুট পদ্ধতি" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus সংক্রান্ত পছন্দ" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s-র জন্য কি-বোর্ড শর্ট-কাট ধার্য করুন" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "অনুভূমিক" #: setup/setup.ui:14 msgid "Vertical" msgstr "উল্লম্ব" #: setup/setup.ui:25 msgid "Top left corner" msgstr "উপরে বাঁদিকের কোণায়" #: setup/setup.ui:28 msgid "Top right corner" msgstr "উপরে ডানদিকের কোণায়" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "নীচে বাঁদিকের কোণায়" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "নীচে ডানদিকের কোণায়" #: setup/setup.ui:37 msgid "Custom" msgstr "স্বনির্ধারিত" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "সর্বদা" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "তালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" #: setup/setup.ui:115 msgid "Next input method:" msgstr "পরবর্তী ইনপুট পদ্ধতি:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "তালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "পূর্ববর্তী ইনপুট পদ্ধতি:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "সক্রিয় অথা নিষ্ক্রিয় করুন:" #: setup/setup.ui:238 msgid "Enable:" msgstr "সক্রিয়:" #: setup/setup.ui:291 msgid "Disable:" msgstr "নিষ্ক্রিয়:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "কি-বোর্ড শর্ট-কাট" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "লুক-আপ টেবিলের মধ্যে প্রযোজ্য বিকল্পগুলির দিশা নির্ধারণ করুন" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "নির্বাচিত বস্তুর দিশা:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ভাষার বার প্রদর্শন ও আড়াল করার উদ্দেশ্যে ibus-র আচরণ নির্ধারণ করুন" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "ভাষার প্যানেলের অবস্থান:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "চেকবক্স নির্বাচিত হলে, ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "অ্যাপ্লিকেশনের উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "অ্যাপ্লিকেশনের উইন্ডোর মধ্যে ইনপুট পদ্ধতির প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "ফন্ট ও বিন্যাস" #: setup/setup.ui:579 msgid "General" msgstr "সাধারণ" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকা যোগ করা হবে" #: setup/setup.ui:682 msgid "_Remove" msgstr "অপসারণ (_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "সক্রিয় ইনপুট পদ্ধতির তালিকা থেকে নির্বাচিত ইনপুট পদ্ধতিটি মুছে ফেলা হবে" #: setup/setup.ui:700 msgid "_Up" msgstr "উপরে (_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় উপরে স্থানান্তর করা হবে" #: setup/setup.ui:718 msgid "_Down" msgstr "নীচে (_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় নীচে স্থানান্তর করা হবে" #: setup/setup.ui:736 msgid "_About" msgstr "পরিচিতি (_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "নির্বাচিত ইনপুট পদ্ধতি সংক্রান্ত তথ্য প্রদর্শন করা হবে" #: setup/setup.ui:754 msgid "_Preferences" msgstr "পছন্দসমূহ (_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "নির্বাচিত ইনপুট মেথডের সেটআপ প্রদর্শন করা হবে" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "ইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুন" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "কি-বোর্ডের বিন্যাস" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "ইনপুট পদ্ধতির সার্বজনীন বৈশিষ্ট্য" #: setup/setup.ui:1298 msgid "Advanced" msgstr "উন্নত" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "লগ-ইন করার সময় ibus আরম্ভ করা হবে" #: setup/setup.ui:1358 msgid "Startup" msgstr "প্রারম্ভ" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "উল্লম্ব" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" #: tools/main.vala:465 msgid "Commands:\n" msgstr "" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "অন্যান্য" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "বন্ধ (_C)" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "বিবরণ:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "Linux/Unix-র সাথে ব্যবহারযোগ্য বুদ্ধিবিশিষ্ট ইনপুট বাস হল IBus" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "রুণা ভট্টাচার্য্য (runab@fedoraproject.org)" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "পছন্দসমূহ" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "পুনরারম্ভ" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "প্রস্থান" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = স্বনির্ধারিত" ibus-1.5.22/po/cs.gmo0000644000000000000000000011321413623751603011171 000000000000000*+1*1]*****#**+(+o7++X, ^,<i,,,,,, ,,- -!-@-V-f-w---&----.. !. -.7.?.H.N. _. k.u.{. ...... ...//#/)/C/U/m/'// ///" 0",0"O0"r0"0"0001(1/1B1I1N1W17k11-222$2&3'-3U3 j3u333"333H394O4 e4!o444 454#45!5*5>5R5f5z5%5 555 556 6!6 *6 66C6H6Q6j666(6(6@6-7 37@7([7-7 77D7 838H8 P8q888 888899*9 /9999?9 y99999999 ::&:-:5:D:U:^:g:: ::::::; ;;&;B;R; [; f;q;.;;0<<"<#<T=]== ==>)>2>9>I>Y>`>p>x>>>> >>> >> >> ? ??*? C?Q?U?o?????!???@@@"@5@H@^@c@@@@@ @ @@ @@ @o@fXA1A1A.#B!RBtB BB BBBBB$B$C8C NC%oCCCC C CCC@CC;DDDDDDDD DD DDD EE1E 6ECEIEQEWE `E nEyE E EE EEEE9 FGFMFaFgFoFuF |FF F F FF F FFF G)G^>G0G G G.GH%&HLHfH&}HHHHHHHI?&IfI IIIIJIJ J J")J(LJuJJJJJ7J K;K9MK1KK2KKKL-LAL-ZLL&L@LM'MDM"bMM MMMMM MMMNN /N V VW 2W>WBWVWuWWW W7WaWDX cXX lZ xZZ?ZOZ-[>[E[J[Q[Y[`[h[n[ r[[[ [.[#[ [[\#\)]0]^^5^9^,N^{^^^}^G_ __?_;` A`M```e` |````#``aa ,a 8aCa'^aaaa aa aa b b 'b3bBb Ub _b kb ybbbbbbbbb c )c 4c@c\cncc$ccccd+d+Hd+td+d+d+d$eAe]etee e eee<effA00; *3;L^t :S9 K(Y6#ݏ/$#>Rb2,&*>Wov 8cΑ$2*W  @bd z   •Εוߕ2)" LWu5-_ch).kB4E=?${'M U7;)Y2pCo\LO~i`QO]pag Yto;5u]T,m<8&XXd%a @k7 <'#KQqneby2PlN|:Z{+.LSbZ si3tvRE`>[ D3\0DAJ*w&zS,U*q%MI0F xjv 6d4fH -$(~^>!jzyl!9T9}}f +wnrsC@:Ph_ |xr=11"[A cg6W"#GFGHIJKm^VNeRW//?8BuV("FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian HieroglyphsElbasanEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2018-02-21 10:23-0500 Last-Translator: Zdenek Language-Team: Czech Language: cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Zanata 3.9.6 Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2 "PÍSMO" pro znaky emoji v dialogu emoji."JAZYK" pro anotace v dialogu emoji. Např. "cs"%s je neznámý příkaz! (Není implementováno)…Písmo a stylGlobální nastavení vstupní metodyRozložení klávesniceKlávesové zkratkySpouštěníIBus Inteligentní vstupní metoda Domovská stránka: https://github.com/ibus/ibus/wiki Aktivní metodu vstupu lze přepínat z výše uvedeného seznamu výběru za pomoci klávesové zkratky nebo kliknutím na ikonu panelu.O programuAktivityPřidat vybranou vstupní metodu mezi povolené vstupní metodyAdlamPokročiléEgejské čísliceAhomAlchymistické symbolyAlias: %sAbecední prezentační formyVždyAnatolské hieroglyfyStarověká řecká hudební notaceStarověké řecké čísliceStarověké symbolyZvířata & přírodaAnotace: %sArabštinaRozšířená arabština-AArabské matematické abecední symbolyArabská prezentační forma-AArabská prezentační forma-BDoplněk arabštinyArménštinaŠipkyAutor: %s Automaticky skrýtAvestánštinaBalinéštinaBamumštinaDoplněk BamumZákladní latinkaBassa VahBatakštinaBengálštinaBhaiksukiBlokové prvkyBopomofoRozšířené bopomofoLevý dolní rohPravý dolní rohVykreslování rámečkuBráhmíBraillské vzoryPřivést zpět na výběr emojiBugištinaBuhidštinaByzantské hudební symbolyCJK kompatibilníFormy kompatibilit CJKIdeologie kompatibility CJKDoplněk Ideologie kompatibility CJKDoplňkové radikály CJKCJK tahySymboly a interpunkce CJKJednotné ideografie CJKCJK rozšíření sdružených ideogramů ACJK rozšíření sdružených ideogramů BCJK rozšíření sdružených ideogramů CCJK rozšíření sdružených ideogramů DCJK rozšíření sdružených ideogramů ECJK rozšíření sdružených ideogramů FNelze se připojit k IBusu. Vybírání emoji zrušeno.Orientace kandidátů:Kárské písmoKavkazská albánštinaČakmovštinaChamštinaCherokéštinaDoplněk cherokéštinyVyberat podmínku částečně odpovídající anotaci emojiZvolte výchozí jazyk slovníků emoji v dialogovém okně emoji. Hodnota $lang je aplikována na /usr/share/ibus/dicts/emoji-$lang.dictZvolte jednu z následujících podmínek, která částečně odpovídá anotaci emoji: 0 == Předpona shody, 1 == Přípona shody, 2 == Obsahuje shoduKódový bod: %sKombinace diakritických znaménekKombinace rozšířených diakritických značekKombinace doplňku s diakritickými značkamiKombinace diakritických značek pro symbolyKombinace poločasůPříkazy: Formy běžných indických číselObsahuje shoduOvládací obrázkyEmoji zkopírováno do schránky.KoptštinaKoptské čísliceCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Čínské početní tyčkyVytvořit mezipaměti registruKlínové písmoČíslice a interpunkce klínového písmaSymboly měnVlastníVlastní fontVlastní jméno písma pro znaky emoji v dialogu emojiVlastní název fontu pro panel jazykuKyperské syllabaryCyriliceRozšířená cyrilice-ARozšířená cyrilice-BRozšířená cyriliceDoplněk cyriliceZachovat jméno prefixu DConf Předvolený jazyk pro slovník emojiPopis: Popis: %sDeseretDevanagariRozšířené devanagariDingbatsZakázat klávesové zkratkyZakázat:NeukazovatDomino dlaždiceHotovoDuployanKlínové písmo rané dynastieEgyptské hieroglyfyElbasanVložený přededitovaný textVložený přededitovaný text v okně aplikaceVkládat předupravený text v okně aplikaceVkládat předupravený text metody vstupu v okně aplikaceEmojiVýběr emoji:Jazyk anotací emoji:Anotace emoji se mohou částečně shodovatKlávesová zkratka emoji pro gtk_accelerator_parseEmotikonyPovolit metodu vstupu ve výchozím nastaveníPovolit metodu vstupu ve výchozím nastavení, pokud aplikace dostane vstupní fokusPovolit či zakázat:Povolit klávesové zkratkyPovolit:Uzavřený alfanumerický doplněkUzavřené alfanumerické znakyUzavřené písmo CJK a měsíceUzavřený ideografický doplněkPořadí enginůEtiopštinaRozšířená etiopštinaRozšířená etiopština ADoplněk etiopštinyUkončit démona IBusuPÍSMOOblíbenéVlajkyNásledovat vstupní kurzor v případě, že je panel vždy zobrazenJídlo & nápojeObecnéObecná interpunkční znaménkaGeometrické tvaryGeometrické tvary rozšířenéGruzínštinaDoplněk gruzínštinyNepodařilo se získat globální engine. GlagolitičtinaDoplněk glagolitičtinyGotické písmoGranthaRozšířená řečtinaŘečtina a koptštinaGudžarátštinaGurmukhštinaFormy s poloviční a plnou šířkouHangul Jamo kompatibilníHangul JamoRozšířené Hangul Jamo ARozšířené Hangul Jamo BSlabiky HangulHanunooObsahuje varianty emojiHatranHebrejštinaAutomaticky schovávatVysoké soukromé použití náhradVysoké náhradyHiraganaVodorovněPanel IBusPředvolby IBusuDémon IBus nemohl být spuštěn během %d sekundIBus byl spuštěn! Pokud nemůžete použít IBus, přidejte následující řádky do souboru $HOME/.bashrc. Poté se přihlaste na váš počítač. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus je inteligentní vstupní sběrnice pro Linux / Unix.Rozšíření IPAZnaky ideografického popisuIdeografické symboly a interpunkcePokud se anotace emoji mohou shodovat s částečným řetězcem namísto přesné shodyPokud je to pravda, panel následuje vstupní kurzor v případě, že je panel vždy zobrazen. Pokud to neplatí, je panel zobrazen na pevném místě.Císařská aramejštinaVstupní metodaNápisy PahlavíParthské nápisyJávštinaKaithiRozšířená kana ADoplněk kanaKanbunRadikály KangxiKannadštinaKatakanaFonetické rozšíření katakanyKayah LiKbdKlávesa:Rozvržení klávesnice: %s Klávesové zkratkyKharóšthíKhmerštinaKhmerské symbolyKhojkiKhudawadiJAZYKUmístění jazykového paneluUmístění jazykového panelu: Jazyk: %s LaoštinaDalší rozšířená latinkaRozšířená latinka-ARozšířená latinka-BRozšířená latinka-CRozšířená latinka-DRozšířená latinka-ERozložení latinky, které nemá ASCIIDoplněk latinky-1LepčštinaSymboly podobné písmenůmLimbuLineární ALineární B ideogramyLineární B syllabaryVypsat pouze název enginuLisuNačítání slovníku Unicode:Nízké náhradyLikijské písmoLidijščinaMahajánštinaMahjongské dlaždiceMalajálamštinaMandaicManichaeanMarchenMasaram GondiČástečně odpovídá anotacím emoji s více než zadaným počtem znaků místo přesné shody.Částečně odpovídá anotacím emoji s následujícími podmínkami a s více než počtem znaků:Shoda anotací emoji se zadanou délkouOdpovídá podmínce zadaného celkuOdpovídá délce zadaného celkuMatematické alfanumerické symbolyMatematické operátoryMeetei MayekRozšíření Meetei MayekMende KikakuiNabídkaMeroitická kurzívaMeroitické hieroglyfyMiaoRůzné matematické symboly-ARůzné matematické symboly-BRůzné symbolyRůzné symboly a šipkyRůzné symboly a piktogramyRůzné technické znakyModiModifikátory tónových písmenModifikátory:MongolštinaDoplněk mongolštinyVíce…Posunout v seznamu povolených vstupních metod vybranou metodu nížePosunout v seznamu povolených vstupních metod vybranou metodu výšeMroMultaniHudební symbolyBarmštinaRozšířená barmština ARozšířená barmština BNKoNabataeanNázev: %sNové Tai LueNévárštinaKlávesové zkratky dalšího enginuDalší vstupní metoda:Engine není nastaven. ŽádnýFormy číselNushuObjektyOghamOl ChikiStaromaďarštinaStaré italické písmoStará severoarabštinaStaré permské písmoStaré perské písmoStará jihoarabštinaStaroturečtinaOtevřít volbu UnicodeOptické rozpoznávání znakůOrientace vyhledávací tabulkyOrientace vyhledávací tabulky. 0 = Horizontální, 1 = VertikálníUrijštinaOzdobné DingbatsOsageOsmanyaOstatníOstatníDalší stranaPředchozí stranaPahawh HmongPalmyrenePau Cin HauPhags-paDisk z FaistuFéničtinaFonetické rozšířeníDoplněk fonetického rozšířeníHrací kartyStiskněte prosím klávesu (či kombinaci kláves).Stiskněte prosím klávesu (či kombinaci kláves). Dialog se zavře, až klávesy uvolníte.Počet milisekund pro zpoždění automaticky otevřeného okna IME přepínačePředvolbyPředpona shodyPrefix kláves DConf pro zastavení konverze jménaPřednačtené enginyPřednačtené enginy v průběhu startu IBusKlávesové zkratky předchozího enginuPředchozí vstupní metoda:Vypsat adresu D-Bus démona IBusuOblast soukromého užitíPsalter PahlaviUkončitHodnota RGBA ikony XKBČíst mezipaměť souboru registru.Číst mezipaměť systémového registru.RejangOdebrat vybranou vstupní metodu z povolených vstupních metodObnovit konfigurační hodnotyObnovení...RestartovatRestartovat démona IBusuČíselné symboly RumiSpustit xmodmap, pokud .xmodmap nebo .Xmodmap existuje, jsou-li enginy ibus zapnuty.RunySamaritánštinaSaurashtraUložit emoji z dialogu do schránky.Uložené pořadí enginů v seznamu vstupní metodyUložené číslo verzeVybrat jazykVybrat metodu vstupuVybrat klávesovou zkratku pro %sNastavit předvolby IBusuNastavit jazyk anotací emoji v dialogu emojiNepodařilo se nastavit globální engine. Nastavit nebo získat engineNastavit chování ibusu, co se týče schovávání jazykového paneluNastavení orientace kandidátů ve vyhledávací tabulceSharadaPoužívat stejnou vstupní metodu pro všechny aplikaceShavianKontroly zkratkového formátuZobrazit dostupné enginyZobrazit varianty emojiZobrazit ikonu v oznamovací oblastiUkázat podrobnosti o vybrané vstupní metoděZobrazit název vstupní metodyZobrazit v jazykovém panelu vstupní metoduPokud je zaškrtnuto, zobrazovat v jazykovém panelu název vstupní metodyZobrazit panel vlastností:Ukázat nastavení vybrané vstupní metodyZobrazit konfigurační hodnotyZobrazit obsah mezipaměti registruZobrazit tuto informaciZobrazit verziSiddhamSinhálštinaArchaické čísla sinhálštinyMalé varianty foremSora SompengSoyomboDistanční modifikační písmenaSpeciálySpustit ibus při přihlášeníPřípona shodySundanštinaDoplněk sundanštinyHorní a dolní indexyDoplňkové šipky-ADoplňkové šipky-BDoplňkové šipky-CDoplňkové matematické operátoryDoplňkové interpunkceDoplňkové symboly a piktogramyDoplňková oblast pro soukromé použití ADoplňková oblast pro soukromé použití BZnakopis SutonovéSyloti NagriSymbolySyrštinaDoplněk syrštinyTagalštinaTagbanwanštinaTagyTai LeTai ThamTai VietTai Xuan Jing symbolyTakriTamilštinaTangutštinaKomponenty tangutštinyTelugštinaThaanaštinaThajštinaDémon IBus neběží. Přejete si jej spustit?Chování panelu vlastností. 0 = Nezobrazovat, 1 = Automaticky skrýt, 2 = Vždy zobrazovatPočet milisekund pro zobrazení panelu vlastnostíPočet milisekund pro zobrazení panelu vlastností poté, co je změněno zaměření nebo vlastnosti.Počet milisekund pro zobrazení ikony panelu pro vlastnostPočet milisekund pro zobrazení ikony panelu z ikony enginu na ikonu vlastnosti, kdykoli jsou enginy zapnuté, pokud je vlastnost určená hodnotou icon-prop-key v IBusEngineDesc. Pokud je hodnota 0, není žádná časová prodleva a ikona vlastnosti je zobrazena okamžitě.Neplatná mezipaměť registru. Uložené číslo verze bude použito ke kontrole rozdílu mezi předchozí verzí nainstalovaného IBusu a verzí aktuálního IBusu.Klávesové zkratky pro přepnutí na další vstupní metodu v řaděKlávesové zkratky pro přepnutí na předchozí vstupní metodu v řaděKlávesové zkratky pro přechod na další metodu vstupu v seznamuKlávesové zkratky pro přechod na předchozí metodu vstupuKlávesová zkratka pro zapínání a vypínání psaní emojiKlávesové zkratky pro vypnutí vstupní metodyKlávesové zkratky pro zapnutí vstupní metodyKlávesové zkratky pro zapnutí a vypnutí vstupní metodyTibetštinaTifinaghTirhutaLevý horní rohPravý horní rohSymboly dopravy a mapCestování & místaSpouštěcí klávesové zkratkySpouštěcí klávesové zkratky pro gtk_accelerator_parseAmerické rozvržení je připojeno k Latinskému. Varianta může být vynechána.Ugaritské písmoVolba UnicodeSlabičné písmo kanadských domorodcůRozšířené slabičné písmo kanadských domorodcůPoužití: %s PŘÍKAZ [VOLBY...] Použít vlastní fontPoužít vlastní název fontu pro panel jazykuPoužít vlastní písmo:Použít globální vstupní metoduPoužít klávesovou zkratku s posunem k přepnutí na předchozí vstupní metoduPoužít systémové rozložení klávesnice (XKB)Použít systémové rozložení klávesnicePoužít xmodmapVaiVariátory výběruDodatek výběru variantRozšíření pro védySvisleVertikální formyWarang CitiZda se anotace emoji mohou částečně shodovat nebo neZda anotace emoji mohou být porovnány s částečným řetězcem namísto přesné shody nebo ne.Zapsat mezipaměť souboru registru.Zapsat mezipaměť systémového registru.Ikona XKB zobrazuje řetězec rozložení a řetězec je vykreslen hodnotou RGBA. Hodnota RGBA může být 1. jméno barvy z X11, 2. hexadecimální hodnota ve tvaru "#rrggbb" kde "r", "g" a "b" jsou hexadecimální číslice pro červenou, zelenou a modrou, 3. RGB barva ve formě "rgb (r, g, b)" nebo 4. RGBA barva ve formě "rgba(r,g,b,a)", kde "r", "g" a "b" jsou buď celá čísla v rozsahu od 0 do 255 nebo procentuální hodnoty v rozsahu od 0% do 100% a "a" je plovoucí bodová hodnota v rozsahu 0 až 1 z alfa.Radikály YiSlabiky YiHexagramové symboly YijingMůžete přiřadit anotaci k oblíbenému emoji v tomto seznamuPokud tento seznam obsahuje nějaké znaky, můžete si v seznamu emoji zobrazit oblíbené emoji.Zanzibarské čtverceO _metodě_Přidat_Použít_Zrušit_ZavřítO_dstranit_Níže_OK_Nastavení_Odebrat_Výšeimplicitně:LTRseznam oblíbených emoji anotací v dialogu emojiseznam oblíbených emoji v dialogu emojijazyk: %s přepínání vstupní metodyKredit-překladatelůmibus-1.5.22/po/hi.po0000644000000000000000000027663613623751600011037 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:46+0000\n" "Last-Translator: Rajesh Ranjan \n" "Language-Team: Hindi \n" "Language: hi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "पहले से लोड इंजन" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus आरंभन के दौरान पहले से लोड इंजन" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "इंजन क्रम" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "इंजन क्रम को इनपुट विधि सूची में सहेजा" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME स्विचर विंडो के लिए आरंभिक विलम्ब मिलीसकेण्ड में" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "तंत्र कुंजीपट लेआउट का प्रयोग करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "तंत्र कुंजीपट (XKB) लेआउट का प्रयोग करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "पूर्वसंपादित पाठ अंतःस्थापित करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "अनुप्रयोग विंडो में पूर्वसंपादित पाठ अंतःस्थापित करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "लक्ष्य इनपुट विधि का प्रयोग करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "सभी अनुप्रयोगों के बीच समान इनपुट विधि को साझा करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "इनपुट विधि को तयशुदा रूप से सक्रिय करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "जब अनुप्रयोग इनपुट फोकस पाता है तो इनपुट विधि को तयशुदा रूप से सक्रिय करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf नाम उपसर्ग को संरक्षित करता है" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "DConf कुँजी का उपसर्ग नाम वार्तालाप रोकने के लिए" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "शॉर्टकट कुंजी ट्रिगर करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "इनपुट विधि को चालू या बंद रखने के लिए शॉर्टकट कुंजी" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse के लिए शॉर्टकट कुंजी ट्रिगर करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "शॉर्टकट कुँजियाँ सक्रिय करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "इनपुट विधि को चालू करने के लिए शॉर्टकट कुँजियाँ" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "शॉर्टकट कुँजियाँ निष्क्रिय करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "इनपुट विधि को बंद करने के लिए शॉर्टकट कुँजियाँ" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "अगला इंजन शॉर्टकट कुंजी" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "सूची में अगली इनपुट विधि में जाने के लिए शॉर्टकट कुंजियाँ" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "पिछला इंजन शॉर्टकट कुंजी" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "सूची में पिछली इनपुट विधि में जाने के लिए शॉर्टकट कुंजियाँ" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "स्वतः छुपाएँ" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "भाषा पैनल स्थिति" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "लुकअप सारणी की दिशा" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "सारणी देखने के लिए दिशा. 0 = क्षैतिज, 1 = लंबवत" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "तंत्र तश्तरी पर प्रतीक दिखाएँ" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "इनपुट विधि नाम दिखाएँ" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "भाषा पट्टी पर इनपुट विधि नाम दिखाएँ" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "मनपसंद फ़ॉन्ट का प्रयोग करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "भाषा पटल के लिए मनपसंद फ़ॉन्ट नाम का प्रयोग करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "मनपसंद फ़ॉन्ट" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "भाषा पटल के लिए मनपसंद फ़ॉन्ट नाम" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse के लिए शॉर्टकट कुंजी ट्रिगर करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "इनपुट विधि को चालू या बंद रखने के लिए शॉर्टकट कुंजी" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 #, fuzzy msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse के लिए शॉर्टकट कुंजी ट्रिगर करें" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 #, fuzzy msgid "The shortcut keys for turning emoji typing on or off" msgstr "इनपुट विधि को चालू या बंद रखने के लिए शॉर्टकट कुंजी" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "भाषा पटल के लिए मनपसंद फ़ॉन्ट नाम" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "अन्य" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "कोई इनपुट विधि चुनें" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "रद्द करें (_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "ठीक (_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "परिचय" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "बंद करें (_C)" #: 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 "कोई इनपुट विधि चुनें" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "जोड़ें (_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "इनपुट विधि" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus वरीयता" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "पिछले इनपुट विधि में जाने के लिए शिफ्ट के साथ शॉर्टकट का उपयोग करें" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus डेमॉन चल नहीं रहा है. क्या आप इसे आरंभ करना चाहते हैं?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus %d सेकेंड में आरंभ नहीं हो सका" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s के लिए कुंजीपटल शॉर्टकर्ट चुनें" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "इनपुट विधि स्विच कर रहा है" #: setup/setup.ui:11 msgid "Horizontal" msgstr "क्षैतिज" #: setup/setup.ui:14 msgid "Vertical" msgstr "लंबवत" #: setup/setup.ui:25 msgid "Top left corner" msgstr "ऊपरी बायां कोना" #: setup/setup.ui:28 msgid "Top right corner" msgstr "ऊपरी दाहिना कोना" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "निचला बायां कोना" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "निचला दाहिना कोना" #: setup/setup.ui:37 msgid "Custom" msgstr "मनपसंद" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "हमेशा" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "सूची में अगली इनपुट विधि में जाने के लिए शॉर्टकट कुंजी" #: setup/setup.ui:115 msgid "Next input method:" msgstr "अगली इनपुट विधि :" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "सूची में पिछली इनपुट विधि में जाने के लिए शॉर्टकट कुंजी" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "पिछली इनपुट विधि:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "सक्रिय या निष्क्रिय करें:" #: setup/setup.ui:238 msgid "Enable:" msgstr "सक्रिय करें:" #: setup/setup.ui:291 msgid "Disable:" msgstr "निष्क्रिय करें:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "कुंजीपटल शॉर्टकट" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "लुकअप सारणी में कंडीडेट की दिशा सेट करें" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "कंडीडेट दिशा:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ibus का आचरण सेट करें कि कैसे भाषा पट्टी को दिखाना या छिपाना है" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "भाषा पैनल स्थिति:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "भाषा पट्टी पर इनपुट विधि नाम दिखाएँ जब जाँचपेटी जाँचा गया है" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "अनुप्रयोग विंडो में पूर्वसंपादित पाठ अंतःस्थापित करें" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "इनपुट विधि के पूर्वसंपादित पाठ को अनुप्रयोग विंडो में अंतःस्थापित करें" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "मनपसंद फ़ॉन्ट का प्रयोग करें:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "फ़ॉन्ट व शैली" #: setup/setup.ui:579 msgid "General" msgstr "सामान्य" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "सक्रिय किए गए इनपुट विधि में चुनी गई इनपुट विधियों को जोड़ें" #: setup/setup.ui:682 msgid "_Remove" msgstr "हटाएँ (_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "सक्रिय की गई इनपुट विधियों में चुनी गई इनपुट विधियों हटाएँ" #: setup/setup.ui:700 msgid "_Up" msgstr "ऊपर (_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "सक्रिय की गई इनपुट विधि सूची में चुनी गई इनपुट विधियों को ले जाएँ" #: setup/setup.ui:718 msgid "_Down" msgstr "नीचे (_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "सक्रिय की गई इनपुट विधियों में चुनी गई इनपुट विधियों को खिसकाएँ" #: setup/setup.ui:736 msgid "_About" msgstr "परिचय (_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "चुनी गई इनपुट विधि की सूचना दिखाएँ" #: setup/setup.ui:754 msgid "_Preferences" msgstr "वरीयता (_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "चुने गए इनपुट विधि का सेटअप दिखाएँ" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "इनपुट विधि को चालू या बंद रखने के लिए शॉर्टकट कुंजी" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "मनपसंद फ़ॉन्ट का प्रयोग करें:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "कुंजीपट लेआउट" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "कोई इनपुट विधि चुनें" #: setup/setup.ui:1298 msgid "Advanced" msgstr "उन्नत" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "लॉगिन पर ibus आरंभ करें" #: setup/setup.ui:1358 msgid "Startup" msgstr "स्टार्टअप" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "लंबवत" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "इंजन नाम को केवल सूचीबद्ध करता है" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus में कनेक्ट नहीं हो सकता है.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "भाषा: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "कोई इंजन सेट नहीं.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "वैश्विक इंजन विफल के रूप में सेट करें.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "वैश्विक इंजन विफल पाएँ.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "प्रयोग: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "कमांड:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s अज्ञात कमांड है!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "अन्य" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "बंद करें (_C)" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "विवरण:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "IBus वरीयता" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus Linux/Unix के लिए तेज तर्रार इनपुट बस है." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "राजेश रंजन (rranjan@redhat.com)" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "वरीयता " #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "पुनः प्रारंभ करें" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "बाहर जाएँ" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = पसंदीदा" ibus-1.5.22/po/stamp-po0000644000000000000000000000001213623751604011533 00000000000000timestamp ibus-1.5.22/po/ia.gmo0000644000000000000000000002703113623751603011156 00000000000000~     #   8 oG  <     3 G _ w H  #   - C L (_ ( @  DVi~  .0  3F^ w @C+EXk9)^0P .% #?(h(p91:2l-&@$'e8@DD`<.-4?t/' 3D>\   !) - 9G_}r"35i 6DB  $ -H9 F% % DP:m:R*6[a $ 8 C 2U 7G!!!!!!! ! "%&"L"R["X"(#0#N#m#=##(#`#`\$ $;$%3%*P%{%%G% %D%8&#W&{&+&U&;';S'+'8'*'A(la(:( )*#)NN)P)P)R?*>*;*F +T+l+ +:+ +,C ,d,",H,1,+"-N- W-d- k- u----- --- - -#-$-:3%Ii&7;Mn}5Q<tOH> P2,b 4#qa|!6d*pF@j \YRws? [~ oLvCSKlN.fEZcJ/x Ag-$(W_+]1VD{0)^uk'U`Bymz"9G=8rXehT%s is unknown command! ...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Embed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderGeneralGet global engine failed. HorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s List engine name onlyModifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:QuitRemove the selected input method from the enabled input methodsRestartSaved engines order in input method listSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow setup of the selected input methodStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutVertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:47+0000 Last-Translator: Nik Kalach Language-Team: Interlingua Language: ia MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); %s es un commando incognite! ...Typo de characteres e stiloConfiguration del methodo de ingresso globalDisposition de clavieroClaves acceleratoriInitiationIBus Le bus de ingresso intelligente Pagina del projecto: https://github.com/ibus/ibus/wiki A propositoAdder le methodo de ingresso seligite al methodos de ingresso activeAvantiateSempreAutor: %s Occultar automaticamenteAngulo inferior sinistreAngulo inferior dextereLe connexion a IBus es impossibile. Orientation de candidatos:Commandos: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.PersonalisateCharacteres personalisateNomine del typo de characteres personalisate pro le pannello de linguaDConf preserva le prefixos de nominesDescription: Disactivar claves acceleratoriDisactivar:Inserer le texto pre-editateInserer le texto pre-editate in le fenestra de applicationInserer le texto pre-editate in le fenestra de applicationInserer le texto pre-editate del methodo de ingresso in le fenestra de applicationActivar le methodo de ingresso predefiniteActivar le methodo de ingresso predefinite quando le application recipe le foco de ingressoActivar o disactivar:Activar claves acceleratoriActivar:Ordine de ingeniosGeneralFalta al obtener le ingenio global. HorizontalPreferentias IBusLe demonio IBus non pote initiar se in %d secundasIBus se ha initiate! Si tu non pote usar IBus, adde le lineas sequente al file $HOME/.bashrc e reconnecte. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus es un bus de ingresso intelligente pro Linux/Unix.Methodo de ingressoKbdCodice de clave:Disposition de claviero: %s Claves acceleratoriPosition del pannello de linguaPosition del pannello de lingua:Lingua: %s Monstrar solmente nomines de ingeniosModificatores:Mover in basso le methodo de ingresso seligite in le lista de methodos de ingressoMover in alto le methodo de ingresso seligite in le lista de methodos de ingresso activeClaves acceleratori del ingenio sequenteMethodo de ingresso sequente:Necun ingenio es configurate. Orientation del tabula de cercaOrientation del tabula de cerca. 0 = horizontal, 1 = verticalAlterePreme un clave (o combination de claves)Preme un clave (o un combination de claves). Le dialogo se claudera quando le clave es liberate.Demora in millisecundas ante le demonstration del fenestra de commutator de methodos de ingressoPreferentiasPrefixos de claves DConf pro parar le conversion de nominesPrecargar le ingeniosPrecargar le ingenios durante le initiation de ibusClaves acceleratori del ingenio precedenteMethodo de ingresso precedenteQuitarRemover le methodo de ingresso seligite del methodos de ingresso activeReinitiarLe ordine de ingenios registrate in le lista de methodos de ingressoSeliger un methodo de ingressoSelige le clave acceleratori pro %sDefinir preferentias IBusFalta al configuration del ingenio global. Configurar le comportamento de ibus super como monstrar o occultar le barra de linguaConfigurar le orientation del tabula de cerca de candidatosUsar le mesme methodo de ingresso pro tote le applicationesMonstrar le icone in le area de indicatoresMonstrar le information del methodo de ingresso seligiteMonstrar le nomine del methodo de ingressoMonstrar le nomine del methodo de ingresso sur le barra de linguaMonstar le nomine del methodo de ingresso sur le barra de lingua quando le quadrato de selection es marcate Monstrar le configuration del methodo de ingresso seligiteInitiar ibus al connexionLe demonio IBus non functiona. Initiar lo?Le claves acceleratori pro cambiar al methodo de ingresso sequente in le listaLe claves acceleratori pro cambiar al methodo de ingresso precedente in le listaLe combination de claves pro cambiar al methodo de ingresso sequente in le listaLe combination de claves pro cambiar al methodo de ingresso precedente in le listaLe combination de claves pro disactivar le methodo de ingressoLe combination de claves pro activar le methodo de ingressoLe claves acceleratori pro activar e disactivar le methodo de ingressoAngulo superior sinisteAngelo superior dextereActivator de claves acceleratoriActivator de claves acceleratori pro gtk_accelerator_parseUsage: %s COMMANDO [OPTION...] Usar characteres personalisateUsar un typo de characteres personalisate pro le pannello de linguaUsar characteres personalisate:Usar le methodo de ingresso globalUsa accellerator con majuscula pro revinir al methodo previe de ingressoUsar le disposition de claviero del systema (XKB)Usar le disposition de claviero del systemaVerticalA _proposito_Adder_ApplicarA_nnullar_Clauder_Deler_Infra_OK_Preferentias_Remover_Supradefault:LTRlingua: %s cambiamento de methodos de ingressoNik Kalach ibus-1.5.22/po/sv.po0000644000000000000000000030701213623751602011050 00000000000000# Swedish translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2019 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Göran Uddeborg , 2017. #zanata # fujiwara , 2017. #zanata # Göran Uddeborg , 2018. #zanata # fujiwara , 2018. #zanata # Göran Uddeborg , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2019-06-11 10:11+0000\n" "Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Zanata 4.6.2\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Förhandsladda maskiner" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Förhandsladda maskiner när ibus startas upp" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Maskinordning" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Sparad maskinordning i listan över inmatningsmetoder" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Fördröjning i millisekunder för pop-up-fönster för IME-byte" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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 "" "Ange fördröjningen i millisekunder för att visa pop-up-fönstret för IME-" "byte. Standard är 400. 0 = Visa fönstret omedelbart. 0 < Vänta " "millisekunder. 0 > Visa inte fönstret och byt till föregående/nästa maskin." #: data/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Sparade versionsnummer" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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 "" "Sparade versionsnummer kommer användas för att kontrollera skillnaden mellan " "versionen på den tidigare installerade ibus:en och den nuvarande ibus:en." #: data/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Latinsk layout som inte har ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" "USA-layout läggs till till den Latinska layouten, varianten kan utelämnas." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Använd xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "Kör xmodmap om .xmodmap eller .Xmodmap finns när ibus-maskiner byts." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Använd systemets tangentbordslayout" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Använd systemets (XKB) tangentbordslayout" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Bädda in förredigerad text" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Bädda in förredigerad text i programfönstret" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Använd den globala inmatningsmetoden" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Dela samma inmatningsmetod mellan alla program" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Aktivera inmatningsmetoden som standard" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "Aktivera inmatningsmetoden som standard när programmet får inmatningsfokus" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf namnbevarandeprefix" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefix av DConf-tangenter för att förhindra namnkonvertering" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Utlös kortkommandon" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Kortkommandot för att slå på och av inmatningsmetoden" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Utlös kortkommando för gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Aktivera kortkommandon" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Kortkommandot för att slå på inmatningsmetoden" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Avaktivera kortkommandon" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Kortkommandot för att slå av inmatningsmetoden" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Kortkommandon för nästa maskin" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "Kortkommandot för att byta till nästa inmatningsmetod i listan" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Kortkommandon för föregående maskin" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "Kortkommandot för att byta till föregående inmatningsmetod" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Dölj automatiskt" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Beteendet hos egenskapspanelen. 0 = Visa inte, 1 = Dölj automatiskt 2 = " "Visa alltid" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Språkpanelens position" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "Följ inmatningsmarkören i fallet när panelen alltid visas" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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 "" "Om sant följer panelen inmatningsmarkören i fallet när panelen alltid " "visas. Om falskt visas panelen på en bestämd plats." #: data/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Antalet millisekunder att visa egenskapspanelen" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Antalet millisekunder att visa egenskapspanelen efter infokusering eller att " "egenskaperna ändrats." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orienteringen på uppslagningstabellen" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "" "Orienteringen på uppslagningstabellen. 0 = horisontellt, 1 = vertikalt" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Visa ikonen i aktivitetsfältet" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Välj namn på inmatningsmetoden" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Visa inmatningsmetodens namn i språkpanelen" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "RGBA-värde på XKB-ikonen" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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-ikonen visar layout-strängen och strängen visas med RGBA-värdet. RGBA-" "värdet kan vara 1. ett färgnamn från X11, 2. ett hexadecimalt värde på " "formen ”#rrggbb” där ”r”, ”g” och ”b” är hexadecimala siffror för rött, " "grönt och blått, 3. en RGB-färg på formen ”rgb(r,g,b)” eller 4. en RGBA-färg " "på formen ”rgba(r,g,b,a)” där ”r”, ”g” och ”b” är antingen heltal i " "intervallet 0 till 255 eller procentsatser i intervallet 0% till 100%, och " "”a” är ett flyttalsvärde i intervallet 0 till 1 för alfa." #: data/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "Antalet millisekunder att visa panelikonen för en egenskap" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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 "" "Antalet millisekunder att visa panelikonen från maskinikonen för en " "egenskapsikon när maskinen byts om egenskapen anges av värdet på icon-prop-" "key i IBusEngineDesc. Om värdet är 0, ingen fördröjning och egenskapsikonen " "visas omedelbart." #: data/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Använd anpassat typsnitt" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Använd det anpassade typsnittsnamnet till språkpanelen" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Anpassat typsnitt" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Anpassat typsnittsnamn till språkpanelen" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Unicode-kortkommandon för gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Kortkommandot för att slå på och av Unicode-inmatning" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Emoji-kortkommando för gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "Kortkommandot för att slå på och av emoji-inmatning" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "Anpassat typsnitt för emoji-tecken i emoji-dialogen" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Standardspråk för emoji-ordlista" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Välj ett standardspråk med emoji-ordlistor i emoji-dialogen. Värdet $lang " "används i /usr/share/ibus/dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "favorit-emoji-lista i emoji-dialogen" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Du kan visa favorit-emoji:erna i emoji-listan om denna lista har några " "tecken." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "favorit-emoji-annoteringslista i emoji-dialogen" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "Du kan tilldela en annotering för en favorit-emoji i denna lista." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "Huruvida emoji-annotationer kan matchas partiellt eller inte" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Huruvida emoji-annotationer kan matchas med en partiell sträng istället för " "den exakta matchningen eller inte." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Matcha emoji-annotationer med den angivna längden" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Matcha emoji-annotationer partiellt med mer än det angivna antalet tecken " "istället för den exakta matchningen." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "Välj ett villkor för att matcha emoji-annotationer partiellt" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Välj en av följande villkor för att matcha emoji-annotationer partiellt: 0 " "== prefixmatchning, 1 == suffixmatchning, 2 == innehållsmatchning" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Läs in emoji-data vid uppstartstillfället" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Läs in emoji-data vid uppstartstillfället om sant. Ungefär 10 MB minne " "behövs för att läsa in datan. Läs emoji-datan när emoji-dialogen öppnas i " "början om falskt." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Läs in Unicode-data vid uppstartstillfället" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Läs in Unicode-data vid uppstartstillfället om sant. Ungefär 15 MB minne " "behövs för att läsa in datan. Läs Unicode-datan när emoji-dialogen öppnas i " "början om falskt. Unicode-datan läses alltid in efter emoji-datan läses in " "även om sant." #: 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:209 msgid "Other" msgstr "Andra" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Välj ett språk" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Avbryt" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Mer …" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Om" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Stäng" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Språk: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Tangentbordslayout: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Upphovsman: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Beskrivning:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Välj en inmatningsmetod" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Lägg till" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Inmatningsmetod" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus-inställningar" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Sätt IBus-inställningar" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Kortkommandon" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Tangentkod:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Modifierare:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Verkställ" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Radera" #: 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 "" "Tryck en tangent (eller tangentkombination).\n" "Dialogen kommer stängas när tangenten släpps." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Tryck en tangent (eller tangentkombination)" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "Använd kortkommandot med skift för att byta till föregående inmatningsmetod" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus-demonen kör inte. Vill du starta den?" #: setup/main.py:536 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 har startats! Om du inte kan använda IBus, lägg till följande rader i " "din $HOME/.bashrc; och logga därefter in igen till ditt skrivbord.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: setup/main.py:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus-demonen kunde inte startas på %d sekunder" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Välj snabbkommando för %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "byter inmatningsmetoder" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horisontellt" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertikalt" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Övre vänstra hörnet" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Övre högra hörnet" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Nedre vänstra hörnet" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Nedre högra hörnet" #: setup/setup.ui:37 msgid "Custom" msgstr "Anpassat" #: setup/setup.ui:48 msgid "Do not show" msgstr "Visa inte" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Dölj automatiskt" #: setup/setup.ui:54 msgid "Always" msgstr "Alltid" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "Kortkommandot för att byta till nästa inmatningsmetod i listan" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Nästa inmatningsmetod:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "Kortkommandot för att byta till föregående inmatningsmetod i listan" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Föregående inmatningsmetod:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "…" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Aktivera eller avaktivera:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Aktivera:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Avaktivera:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Kortkommandon" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Ange ordningen av kandidater i tabelluppslagning" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Kandidaters riktning:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Ange beteendet hos ibus hur den visar eller döljer språkpanelen" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Visa egenskapspanel:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Språkpanelens position:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "Visa inmatningsmetodens namn i språkpanelen när kryssrytan är iklickad" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Bädda in förredigeringstext i programfönstret" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "Bädda in förredigeringstext för inmatningsmetoden i programfönstret" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Använd ett anpassat typsnitt:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Typsnitt och stil" #: setup/setup.ui:579 msgid "General" msgstr "Allmänt" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" "Lägg till den valda inmatningsmetoden till de aktiverade inmatningsmetoderna" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Ta bort" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" "Ta bort den valda inmatningsmetoden från de aktiverade inmatningsmetoderna" #: setup/setup.ui:700 msgid "_Up" msgstr "_Upp" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Flytta upp den valda inmatningsmetoden i listan över aktiverade " "inmatningsmetoder" #: setup/setup.ui:718 msgid "_Down" msgstr "_Ner" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" "Flytta ner den valda inmatningsmetoden i listan över aktiverade " "inmatningsmetoder" #: setup/setup.ui:736 msgid "_About" msgstr "_Om" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Visa information om den valda inmatningsmetoden" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Inställningar" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Visa uppsättningen av den valda inmatningsmetoden" #: setup/setup.ui:812 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 "" "Den aktiva inmatningsmetoden kan bytas mellan de valda i listan " "ovan genom att trycka snabbkommandot eller klicka i panelikonen." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "Kortkommandot för att aktivera emoji-annoteringar eller Unicode-namn" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Emoji-annoteringar:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Kortkommandon för att aktivera konverteringar av Unicode-kodpunkter" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Unicode-kodpunkter:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "Ange ett typsnitt för Unicode-kandidater i emoji-dialogen" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Unicode-typsnitt:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Ange ett språk för emoji-annotationer i emoji-dialogen" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Språk för emoji-annotationer:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Matcha emoji-annotationer partiellt med följande villkor och mer än antalet " "tecken:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Om emoji-annotationer kan matchas med en partiell sträng istället för en " "exakt matchning" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Prefixmatchning" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Suffixmatchning" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Innehållsmatchning" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emoji" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Tangentbordslayout" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Inställningar för global inmatningsmetod" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Avancerat" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Den intelligenta inmatningsbussen\n" "Hemsida: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Starta ibus vid inloggning" #: setup/setup.ui:1358 msgid "Startup" msgstr "Uppstart" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Aktiviteter" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Djur & natur" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Komponent" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Flaggor" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Mat & dryck" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Föremål" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "Folk & kropp" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "Smajlisar & känsla" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Symboler" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Resor & platser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Grundläggande latinskt" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Latin-1-tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Latin utökad-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Latinskt utökad-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "IPA-tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Modifieringsbokstäver för blanksteg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Kombinerande diakritiska tecken" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Grekiska och koptiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Kyrilliska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Kyrilliska tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Armeniska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Hebreiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Arabiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Syriska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Arabiska tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "NKo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Samaritanska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandeiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Syriska tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Arabiska utökat-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Devanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengali" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmukhi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Gujarati" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Oriya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tamilska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Telugu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Kannada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malayalam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Sinhala" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Thailändska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Lao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tibetanska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Myanmar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Georgiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Hangul Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Etiopiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Etiopiska tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Cherokesiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Enhetliga kanadensiska aboriginstavelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Runor" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Tagalog" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunoo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buhid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Tagbanwa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Khmer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Mongoliska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Enhetliga kanadensiska aboriginstavelser, utökad" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Ny tai lue" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Khmer-symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Buginesisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Tai Tham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Kombinerande utökade diakritiska tecken" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Balinesisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Sundanesiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepcha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ol Chiki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Kyrillisk utökad-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "Utökad georgiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Sundanesiska tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Vediska tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Fonetiska tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Tillägg för fonetiska utökningar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Tillägg för kombinerande diakritiska tecken" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Ytterligare utökade latinska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Utökade grekiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Allmänna skiljetecken" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Upphöjda och nedsänkta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Valutasymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Kombinerande diakritiska symbolmarkörer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Bokstavsliknande symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Talformer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Pilar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Matematiska operatorer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Diverse tekniska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Kontrollbilder" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Optisk teckenigenkänning" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Inneslutna alfanumeriska tecken" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Lådritning" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Blockelement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Geometriska former" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Diverse symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Dingbats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Diverse matematiska symboler-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Piltillägg-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Punktskriftsmönster" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Piltillägg-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Diverse matematiska symboler-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Matematiska operatortillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Diverse symboler och pilar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Glagolitisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Utökat latin-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Koptisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Georgiska tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Utökad etiopisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Kyrillisk utökad-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Tillägg till skiljetecken" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "CJK-ordstamstillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Kangxi-ordstammar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Tecken för ideografisk beskrivning" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "CJK-symboler och skiljetecken" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Hangul-kompatibilitet Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Utökad bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "CJK-streck" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Fonetiska katakana-tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Inneslutna CJK-bokstäver och -månader" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "CJK-kompatibilitet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "Enhetliga CJK-ideograftillägg A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Yijing-hexagramsymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "Enhetliga CJK-ideografer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Yi-stavelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Yi-ordstammar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Vai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Kyrillisk utökad-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Modifieringsbokstäver för toner" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Utökat latin-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Syloti Nagri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Vanliga indiska talformer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Phags-pa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurashtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Devanagari utökad" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Utökad Hangul Jamo-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Javanesiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Utökad Myanmar-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Cham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Utökad Myanmar-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tai Viet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Meetei Mayek-tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Utökad etiopisk-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Utökat latin-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Cherokesiska tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Hangul-stavelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Utökad Hangul Jamo-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Höga surrogat" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Höga surrogat för privat användning" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Låga surrogat" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Område för privat användning" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "CJK-kompatibilitetsideografer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Alfabetiska presentationsformer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Arabiska presentationsformer-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Variationsväljare" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Vertikala former" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Kombineringshalvmarkörer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "CJK-kompatibilitetsformer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Små formvarianter" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Arabiska presentationsformer-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Halvbredds- och helbreddsformer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Specialtecken" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Linjär B-stavelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Linjär B-ideogram" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Egeiska tal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Gammalgrekiska tal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Antika symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Phaistos-skiva" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Lykiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Kariska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Koptiska epact-nummer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Fornitaliska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gotiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Fornpermiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ugaritiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Gammalpersiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Deseret" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Shaviska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmaniska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Elbasan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Kaukasisk albanska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Linjär A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Cypriotiska stavelser" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "Senarameiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Palmyrenska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nabatéiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Hatranska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Phoenicisk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lydian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Meroitiska hieroglyfer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Meroitiska kursiv" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Kharoshthi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Fornsydarabiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Fornnordarabiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Manikeiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Avestan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Inskriptionell parthiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Inskriptionell pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Psaltaren-pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Fornturkiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Fornungerska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "Hanifi Rohingya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Numeriska Rumi-symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "Gammalsogdiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "Sogdiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "Elymaic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Brahmi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaithi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Sora Sompeng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Chakma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Mahajani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Sharada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Singalesiska arkaiska nummer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Khojkiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Multani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Sindhiska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Grantha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Newa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Tirhuta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Siddham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Modi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Mongoliska tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Dogra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Warang Citi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "Nandinagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Zanabazar-kvadratskrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Soyombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Masaram Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Gunjala Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Makassariska" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "Tillägg för tamil" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Kilskrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Kilskrift-tal och skiljetecken" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Tidig dynastisk kilskrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Egyptiska hieroglyfer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "Formatstyrning för egyptiska hieroglyfer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Anatoliska hieroglyfer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Bamum-tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mru" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Bassaiska vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Pahaw mong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Medefaidrin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Miao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Ideografiska symboler och skiljetecken" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Tangut" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Tangut-komponenter" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Kana-tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Utökad Kana-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "Utökning för små kanasymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Nushu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Duployé" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Formateringskontroll för Stenografi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Bysantinska musiksymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Musiksymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Gammalgrekisk musiknotation" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "Mayasiffror" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Tai Xuan Jing-symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Talstav" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Matematiska alfanumeriska symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Suttons teckningsskrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Glagolitiska tillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "Nyiakeng Puachue Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "Wancho" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Mende Kikakui" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "Indiska siyaq-siffror" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "Ottomanska siyaq-siffror" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Arabiska matematiska alfabetiska symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Mahjong-brickor" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Domino-brickor" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Spelkort" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Inneslutna alfanumeriska utökningar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Inneslutna ideografiska utökningar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Diverse symboler och piktogram" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Humörsymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Dekorativa Dingbats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Transport- och kartsymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Alkemiska symboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Utökade geometriska former" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Piltillägg-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Symbol- och piktogramtillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "Schacksymboler" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "Symboler och piktogram tillägg-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "Enhetliga CJK-ideograftillägg B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "Enhetliga CJK-ideograftillägg C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "Enhetliga CJK-ideograftillägg D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "Enhetliga CJK-ideograftillägg E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "Enhetliga CJK-ideograftillägg F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "CJK-kompatibilitetideografstillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Taggar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Variationsväljartillägg" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Tillägg till privat användningsområde-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Tillägg till privat användningsområde-B" #: tools/main.vala:51 msgid "List engine name only" msgstr "Lista endast maskinnamn" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Kan inte ansluta till IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "språk: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Ingen maskin är satt.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Att sätta den globala maskinen misslyckades.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Att hämta den globala maskinen misslyckades.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Läs systemregistercachen." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Läs registercachen i FIL." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "Registercachen är felaktig.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Skriv systemregistercachen." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Skriv registercachen till FIL." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "Använd motorschemasökvägar istället för ibus-kärnan, vilket kan vara " "kommaseparerade värden." #: tools/main.vala:381 msgid "Resetting…" msgstr "Återställer …" #: tools/main.vala:399 msgid "Done" msgstr "Klart" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Sätt eller hämta maskin" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Avsluta ibus-demonen" #: tools/main.vala:446 msgid "Show available engines" msgstr "Visa tillgängliga maskiner" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Inte implementerat)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Starta om ibus-demonen" #: tools/main.vala:449 msgid "Show version" msgstr "Visa versionen" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Vissa innehållet i registercachen" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Skapa en registercache" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Skriv ut D-Bus-adressen till ibus-demonen" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Visa konfigurationsvärdena" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Återställ konfigurationsvärdena" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Spara emoji i dialogen till urklipp" #: tools/main.vala:458 msgid "Show this information" msgstr "Visa denna information" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Användning: %s KOMMANDO [FLAGGA …]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Kommandon:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s är ett okänt kommando!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Favoriter" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Annat" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Öppna Unicode-val" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Ta tillbaks emoji-val" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Bläddra ned" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Bläddra upp" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Visa emoji-varianter" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Stäng" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Meny" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Klicka för att visa ett varningsmeddelande" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Laddar en Unicode-ordbok" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Kodpunkt: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Har emoji-varianter" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Beskrivning: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Ingen" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Annotationer: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Namn: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Alias: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Emoji-val" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Unicode-val" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "Misslyckades att få det aktuella textprogrammet. Fokusera om ditt program. " "T.ex. tryck Esc-tangenten flera gånger för att släppa emoji-" "inskrivningsläget, klicka på ditt skrivbord och klicka på ditt textprogram " "igen." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Avbröt att välja en emoji." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Kopierade en emoji till ditt urklipp." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "”TYPSNITT” för emoji-tecken i emoji-dialogen" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "TYPSNITT" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "”SPRÅK” för annotationer i emoji-dialogen. T.ex. ”sv”" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "SPRÅK" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Emoji-annotationer kan matcha partiellt" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Matcha med längden på det angivna heltalet" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Matcha med villkoret för det angivna heltalet" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus-panel" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus är en intelligent inmatningsbuss för Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Göran Uddeborg " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Inställningar" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Starta om" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "Avsluta" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/ru.gmo0000644000000000000000000004171613623751604011222 00000000000000< P Q i m #    o W <KT [ gq H ##/S p~ ((@ODn 9+3N al.}0| .; ?I^q ! @C4x9)^>0 . %?Ypu? (;Pg912#V-o&@'1 Yf8zO'Q+}@+DlD<.3-b4/,L'\>   (4= \}   * !!%!HE!.!$!!!I"#U$V$ q$~$+$ $"$6$*5%`%4q%%%8%3%0&2C&v&&*&K&K'cg'>' (+(0(()b))H)+)*#*A;*}*]++,,,-!.-6P-7- -E-$.8.qR.s.B8/){/ /0/`/ X0Fe00qH11m1I;2E2D2+3 <3&G30n3:3I3$4G?4.4&4A4*5JJ5t5] 6\h6F6S 7=`7`77-8P89<!95^99R?::8*;c;|;~|<~<z=F=DB>f>">$?N6?=?7?,?Q(@z@C@t@DNASA AB1B;QBBBBBBB BC CC .C :C FC&TCR{C^JY>yxsI0:rfa2u9$Q(bE\L/K|8.X=-"@vz);g<#jA[i*F, M O5n?G! 76{BD_~&Cpq3'oPtZVU+k1eNcwRW]Sh`d%T m4} lH%s is unknown command! ...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.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.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Latin layouts which have no ASCIIList engine name onlyModifiers:Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:QuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsRestartSaved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2017-04-16 03:37-0400 Last-Translator: Igor Gorbounov Language-Team: Russian Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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); X-Generator: Zanata 3.9.6 Неизвестная команда: %s ...Шрифт и стильНастройки глобального метода вводаРаскладка клавиатурыГорячие клавишиЗапускIBus Интеллектуальная система ввода Домашняя страница: https://github.com/ibus/ibus/wiki Активный метод ввода может переключаться на выбранные методы из приведенного выше списка с помощью сочетаний клавиш или нажатием левой кнопки мыши на значке в панели.О программеДобавить выбранный метод ввода к используемымДополнительноВсегдаАвтор: %s Автоматически скрыватьЛевый нижний уголПравый нижний уголНе удалось подключиться к IBus. Ориентация кандидатов:Команды: (c) 2007-2010 Peng Huang (c) 2007-2010 Red Hat, Inc.СвойСвой шрифтСвой шрифт для языковой панелиDConf сохраняет префиксы имен.Описание: Отключить сочетания клавишВыключить:Не показыватьВставить готовый текстВставить готовый текст в окно приложенияВставить готовый текст в окно приложенияВставить готовый текст метода ввода в окно приложенияВключить метод ввода по умолчаниюВключить метод ввода по умолчанию при получении приложением фокуса вводаВключить или выключить:Включить сочетания клавишВключить:Порядок модулейСледовать за курсором ввода, если панель всегда виднаОсновныеНе удалось получить глобальный модуль. Автоматически скрыватьГоризонтальноПараметры IBusНе удалось запустить IBus через %d сек.IBus запущен. Если у вас нет доступа к IBus, добавьте приведенные ниже строки в $HOME/.bashrc и заново войдите в систему. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus — интеллектуальная система ввода для Linux и Unix.Если «true», панель следует за курсором ввода в случае, если панель всегда видна. Если «false», панель отображается в фиксированном месте.Метод вводаKbdКод клавиши:Раскладка: %s Комбинации клавишРасположение языковой панелиРасположение языковой панели:Язык: %s Латинские раскладки, в которых нет ASCIIПоказать имя модуляМодификаторы:Переместить выбранный метод ввода вниз в списке используемыхПереместить выбранный метод ввода вверх в списке используемыхКлавиши для следующего метода вводаСледующий метод ввода:Модуль не выбран. Ориентация таблицы поискаОриентация таблицы: 0 = горизонтально, 1 = вертикально.ДругиеНажмите клавишу (или сочетание клавиш)Нажмите клавишу (или сочетание клавиш). Когда клавиша будет отпущена, окно закроется.Задержка всплывающего окна переключателя IME (в миллисекундах)ПараметрыПрефиксы ключей DConf для предотвращения преобразования именПредварительная загрузка методов вводаЗагружать методы ввода при запуске iBusКлавиши для предыдущего метода вводаПредыдущий метод ввода:ВыходRGBA-значение значка XKBЧтение файла кэша реестра.Чтение кэша системного реестра.Удалить выбранный метод ввода из спискаПерезапуститьПорядок модулей в списке методов вводаСохраненный номер версииВыберите метод вводаВыберите комбинацию клавиш, чтобы %sНастроить параметры IBusНе удалось настроить глобальный модуль. Установить поведение iBus для показа или скрытия языковой панелиУстановить ориентацию кандидатов в таблице поискаИспользовать один метод ввода для всех приложенийПоказать значок в области уведомленийПоказать информацию о выбранном методе вводаПоказывать название метода вводаПоказывать название метода ввода на языковой панелиПоказывать название метода ввода на языковой панели, когда пункт выбранПоказать панель свойств:Показать настройки выбранного метода вводаПоказать версиюЗапускать iBus при входе в систему:IBus не выполняется. Запустить?Режим работы панели свойств. 0 = не показывать, 1 = автоматически скрывать, 2 = всегда показыватьМиллисекунды для отображения панели свойствМиллисекунды для отображения панели свойств после смены фокуса ввода или свойств.Недействительный кэш реестра. Сохраненный номер версии используется для сравнения предыдущей версии ibus с текущей.Горячие клавиши для переключения на следующий метод ввода в списке:Горячие клавиши для переключения на предыдущий метод ввода в списке:Сочетание клавиш для переключения на следующий метод ввода в списке:Сочетание клавиш для переключения на предыдущий метод ввода в списке:Сочетание для отключения метода вводаСочетания для включения метода вводаСочетание клавиш для включения/выключения метода вводаЛевый верхний уголПравый верхний уголСочетание клавиш для включения/выключенияСочетание клавиш для gtk_accelerator_parseФормат: %s КОМАНДА [ПАРАМЕТР...] Использовать свой шрифтИспользовать свой шрифт для языковой панелиВыбрать шрифт:Использовать глобальный метод вводаИспользовать сочетание SHIFT для выбора предыдущего метода вводаИспользовать системную раскладку (XKB)Использовать системную раскладку клавиатурыИспользовать xmodmapВертикальноЗапись в файл кэша реестра.Запись в кэш системного реестра._О программе_Добавить_ПрименитьО_тменить_Закрыть_УдалитьВ_низ_OK_Параметры_УдалитьВв_ерхdefault:LTRязык: %s изменить метод вводаAlexey Kotlyarov , 2009. Yulia , 2010.ibus-1.5.22/po/ca.gmo0000644000000000000000000012001413623751603011143 00000000000000 (+!(1M(((((#((()o'))H* N*<Y**** ****+%+;+K+\+l+s+&++++++ , ,,$,-, 3,?,E,M,\,e,w,, ,,,,,,,-&-'C-k- ---"-"-"."+."N."q......./ /7/U//h0000$0&0'1-1 B1M1g1x1"111H12'2 =2!G2i2z2 252#22233*3>3R3%o3 333 33333 4 44 494N4V4(i4(4@44 55*5(<5-e5 55D566)6 16R6i66 666666 77 7797 %828:8N8_8y888 8888889 9)9 C9O9f9}99999999 9 ::.:N:0;O;"^;#;T;;{< <<<<<<<<<<=$= (=2=G= Z=e= k=y=~== ======>>!0>R>e>l>>>>>>>,>>*?&@@@@A A A%Ao-AfA1B16B.hB!BB BBBB C$ C$ECjC C%CCC C D DD@'DChDDDDDD DD E E'E:EME RE_EgEmE vE EE E EE EEEF9#F]FcFwF}FFF FF FF F FFF G)G^;G0G G G.GH%#HIHcH&zHHHHHH I?ISI rIIIJII I I"J($JMJbJtJJJ4J7J-KHKZK9L1TL2LLLLL-M3M&JM@qMM'MM" N0N FNSN[NoNNN N NNNNOO#/OSO$lO O O OOOOP PPPP'P0PFPLPSPZP8_POP'PQQ6bQQRR@PSDSDS<T6XT4T.T-T4!U:VUMUUUUVV+V;V/QVCVVVV V/V%/W.UWWW'WWRW@X>XX XX XXXXY'Y0Y7?YawYY YZ \ \\?2\Or\\\\\\\\\ \] ] ].]#J] n]|]]]?d__ ____/_,`J` d`tq``a aJaaa b b"*bMbTbmbbbbbbb'bc0cOcbcic qc|cccc cccccccd)d=dSdndtdzdd d$d2d&eEeUese*e*e*e*f*p"Wpzpppppppqq qqDrGrWr_rrrrrr3r rs s 's 4sAsJs#Ssws ssssssst t=tQt Ztftwt6tt;uu&u$vd:vv4wDwVwowwwwwwwwwwwxx 0x;xAxPxWxux xxxxxxxy(y@yVy]yzyyyy yy1yz/z{({|,|1|6| I|T||\|l|BF}2}1}"}~ '~4~M~S~n~~~~~~  @NUiOqN");MQY a$m̀Ҁ  0 >J ^i"~ ?#+29AI[du|& .ȂcT[ 9׃.'$V{+Äքۄ21)[Mb)څVm t ~*< #)D$nI@݇4S nRy:̉@HPn'7#7^J9ɋ%3)]x ' ׌ 2Lf#$؍!! ANW_tz ĎˎҎ;֎n1yA-&o-tđL9KLҒLBlA85*E`R]W_h#̕:\+ 5Ԗ- 68o$<%s_.(6 _ko%ʙ8ۙj105 $3GPg  & -8?H Wb i@u0 #p4H Yd'259xBV6L,I7F@rp3b$#z`5<:t#R$O@ABCDE%Qnq< (=Kk]y  v"`U) s/WcSwjG([A ?7u  !a+twnP _1ZDN.{-h^8ovO} -,0TuRCmeJyF>3+2;4|=?.~0iXcjW%&:;}K~ME[_19L8|xigff'z6*da gJsVI\Ye!qZkU] Mb\>GN{"rhllm^oXP/TSH)Q*&"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdvancedAegean NumbersAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBasic LatinBatakBengaliBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChamCherokeeCherokee SupplementChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDomino TilesDoneEarly Dynastic CuneiformEgyptian HieroglyphsElbasanEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGreek ExtendedGreek and CopticGujaratiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanunooHas emoji variantsHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahjong TilesMalayalamMandaicMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMeetei MayekMeetei Mayek ExtensionsMenuMeroitic CursiveMeroitic HieroglyphsMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNew Tai LueNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersPage DownPage UpPalmyrenePhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShavianShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSinhalaSmall Form VariantsSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSyloti NagriSymbolsSyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTamilTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2020-01-09 22:01+0000 Last-Translator: Antoni Bella Pérez Language-Team: Catalan Language: ca MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: Weblate 3.9.1 «TIPUS DE LLETRA» per als caracters emoji en el diàleg emojica%s no és una ordre reconeguda! (No implementat)...Tipus de lletra i estilParàmetres del mètode d'entrada globalDisposició del teclatDreceres de teclatIniciIBus El bus d'entrada intel·ligent Lloc web: https://github.com/ibus/ibus/wiki El mètode d'entrada actiu pot canviar-se amb els seleccionats en l'anterior llista prement les dreceres de teclat o en fer clic a la icona del quadre.Quant aActivitatsAfegeix el mètode d'entrada seleccionat als mètodes d'entrada habilitatsAvançatNombres de l'egeuSímbols químicsÀlies: %sFormes de presentació alfabèticaSempreJeroglífics d'AnatòliaNotació musical en grec anticNombres del grec anticSímbols anticsAnimals i naturaAnotacions: %sÀrabÀrab ampliat-ASímbols alfabètics matemàtics àrabsFormes A de presentació àrabFormes B de presentació àrabÀrab suplementariArmeniFletxesAutor: %s Oculta automàticamentAvèsticBalinèsBamumLlatí bàsicBatakBengalíElements de blocsBopomofoBopomofo ampliatCantonada inferior esquerraCantonada inferior dretaDibuixos de quadresPlantilles en BrailleTorna a la selecció emojiBuguiBuhidSímbols musicals bizantinsCompatibilitat del CJKFormes de compatibilitat del CJKIdeogrames de compatibilitat del CJKIdeogrames suplementaris de compatibilitat del CJKRadicals suplementaris del CJKTraços del CJKSímbols i puntuació del CJKIdeogrames unificats del CJKExtensió A d'ideogrames unificats del CJKExtensió B d'ideogrames unificats del CJKExtensió C d'ideogrames unificats del CJKExtensió D d'ideogrames unificats del CJKExtensió E d'ideogrames unificats del CJKExtensió F d'ideogrames unificats del CJKNo es pot connectar amb l'IBus. S'ha cancel·lat per triar un emoji.Orientació dels candidats:CariAlbanès caucasiàTxamCherokeeCherokee suplementariTrieu una condició per coincidir parcialment amb les anotacions emojiTrieu l'idioma predeterminat per ls diccionaris dels emojis al diàleg d'emojis. El valor $lang s'aplica a /usr/share/ibus/dicts/emoji-$lang.dictTrieu una de les condicions següents per coincidir parcialment amb les anotacions emoji: 0 == Coincidència del prefix, 1 == Coincidència del sufix, 2 == La coincidència contéCliqueu per a veure un missatge d'avísTancaPosició del codi: %sCombinació de les marques diacrítiquesCombinació ampliada de les marques diacrítiquesCombinació suplementària de les marques diacrítiquesCombinació de les marques diacrítiques per als símbolsCombinació de mitges marquesOrdres: Formes de nombres comuns de l'ÍndicLa coincidència contéImatges de controlS'ha copiat un emoji al vostre porta-retalls.CopteNombres epact coptesCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Palets xinesos per comptarCrea la memòria cau del registreCuneïformeNombres i puntuació cuneïformeSímbols de monedaPersonalitzatTipus de lletra personalitzatEl nom del tipus de lletra personalitzat per als caràcters emoji al diàleg dels emojisTipus de lletra personalitzat per al quadre d'idiomesConjunt de síl·labes del xipriotaCiríl·licCiríl·lic ampliat-ACiríl·lic ampliat-BCiríl·lic ampliat-CCiríl·lic suplementariDConf preserva els prefixesIdioma predeterminat per al diccionari emojiDescripció: Descripció: %sDeseretDevanagariDevanagari ampliatDingbatsInhabilita les dreceres de teclatInhabilita:No mostrarFitxes del dòminoFetCuneïforme anterior a les dinastiesJeroglífics egipcisElbasanIncrusta el text pre-editatIncrusta el text pre-editat a la finestra de l'aplicacióIncrusta el text pre-editat en la finestra de l'aplicacióIncrusta el text pre-editat del mètode d'entrada en la finestra de l'aplicacióEmojiSelecciona l'emojiIdioma d'anotació emoji:Anotació emoji:Les anotacions emoji poden coincidir parcialmentDrecera de teclat d'emojis per gtk_accelerator_parseEmoticonesHabilita el mètode d'entrada predeterminatHabilita el mètode d'entrada predeterminat quan l'aplicació obté el focus de l'entradaHabilita o inhabilita:Habilita les dreceres de teclatHabilita:Suplement alfanumèric tancatAlfanumèrics delimitatsLletres i mesos delimitats del CJKSuplement ideogràfic tancatOrdre dels motorsEtiòpicEtiòpic ampliatEtiòpic ampliat-AEtiòpic suplementariSurt de l'ibus-daemonTIPUS DE LLETRANo s'ha pogut obtenir l'aplicació de text actual, si us plau torneu-li a donar el focus, p. ex., premeu Esc diverses vegades per sortir del mode escriptura emoji, cliqueu a l'escriptori i de nou en la vostra aplicació.PreferitsBanderesSegueix el cursor d'entrada en el cas que sempre es mostri el quadreMenjar i begudaGeneralPuntuació generalFigures geomètriquesFigures geomètriques ampliadesGeorgiàGeorgià suplementariS'ha produït un error en obtenir el motor global. GlagolíticGlagolític suplementariGòticGrec ampliatGrec i copteGujaratiGurmukhiFormes d'amplada mitjana i completaHangul compatible amb el JamoHangul JamoHangul Jamo ampliat-AHangul Jamo ampliat-BSil·labari HangulHanunooTé variants d'emojiHebreuOcultar automàticamentSubstitucions altes d'ús privatSubstitucions altesHiraganaHoritzontalQuadre de l'IBusPreferències de l'IBusEl dimoni de l'IBus no s'ha pogut iniciar en %d segonsS'ha iniciat l'IBus! Si no podeu usar-lo, afegiu les línies següents al vostre $HOME/.bashrc; després torneu a entrar a l'escriptori. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusL'IBus és un bus d'entrada intel·ligent per a Linux/Unix.Extensions IPACaràcters de descripció ideogràficaSímbols i puntuació ideogràfiquesSi les anotacions emoji poden coincidir amb una cadena parcial en comptes de la coincidència exactaSi é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.Arameu imperialMètode d'entradaInscripcions del pahlaviInscripcions del parthiàJavanèsKaithiKanbunRadicals KangxiKanarèsKatakanaExtensions fonètiques KatakanaKayah LiKbdCodi de la tecla:Disposició del teclat: %s Dreceres de teclatKharoshthiKhmerSímbols KhmerIDIOMAPosició del quadre d'idiomesPosició del quadre d'idiomes:Idioma: %s LaosiàLlatí ampliat addicionalLlatí ampliat-ALlatí ampliat-BLlatí ampliat-CLlatí ampliat-DLlatí ampliat-ELes disposicions llatines no tenen ASCIILlatí-1 suplementariLepchaSímbols semblants a lletresLimbuLineal AIdeogrames B linealsConjunt lineal B de síl·labesMostra tan sols el nom del motorLisuCarrega les dades Unicode en el moment de l'iniciSi és cert, es carregaran les dades Unicode al moment de l'inici. Caldran uns 15 MB de memòria per a carregar les dades. Si és fals, es carregaran les dades Unicode quan s'obri el diàleg emoji al començament.Carrega les dades emoji en el moment de l'iniciSi és cert, es carregaran les dades emoji al moment de l'inici. Caldran uns 10 MB de memòria per a carregar les dades. Si és fals, es carregaran les dades emoji quan s'obri el diàleg emoji al començament.S'està carregant un diccionari Unicode:Substitucions baixesLiciLidiFitxes del MahjongMalaiàlamMandaicCoincidència parcial de les anotacions emoji amb el nombre de caràcters especificat en comptes de la coincidència exacta.Fes coincidir parcialment les anotacions emoji amb la següent condició i més que el nombre de caràcters:Coincidència de les anotacions emoji amb la llargada especificadaCoincideix amb la condició de l'enter especificatCoincideix amb la llargada de l'enter especificatSímbols matemàtics alfanumèricsOperadors matemàticsMeetei MayekAmpliacions Meetei MayekMenúFormes i valors meroíticsJeroglífics meroíticsSímbols-A matemàtics variatsSímbols-B matemàtics variatsSímbols variatsSímbols i fletxes variatsSímbols i pictogrames variatsTècnics variatsLletres amb modificació del toModificadors:MongolMongol suplementariMés…Mou avall el mètode d'entrada seleccionat en els mètodes d'entrada habilitatsMou amunt el mètode d'entrada seleccionat en la llista de mètodes habilitatsSímbols musicalsBirmàMyanmar ampliat-AMyanmar ampliat-BNKoNabateuNom: %sTai Lue nouDrecera de teclat del motor següentSegüent mètode d'entrada:No s'ha establert cap motor. SenseFormes de nombresObjectesOghamOl ChikiHongarès anticCursiva antigaÀrab del nord anticPermià anticPersa anticÀrab del sud anticTurc anticObre l'Unicode triatReconeixement òptic de caràctersOrientació de la taula de cercaOrientació de la taula de cerca. 0 = Horitzontal, 1 = VerticalOriyaDingbats ornamentalsOsageOsmanyaAltresAltresAv PàgRe PàgArameu de PalmiraPhags-paDisc de PhaistosFeniciExtensions fonètiquesExtensions fonètiques suplementàriesCartes de jocPremeu una tecla (o una combinació de tecles)Premeu una tecla (o una combinació de tecles). El diàleg es tancarà quan es deixi anar la tecla.Retard en mil·lisegons de la finestra emergent per a la finestra del commutador IMEPreferènciesCoincidència del prefixPrefixos de tecles DConf per aturar la conversió del nomPrecarrega els motorsPrecarrega els motors durant l'inici de l'IBusDrecera de teclat del motor anteriorMètode d'entrada anterior:Mostra l'adreça D-Bus del dimoni de l'IBusÀrea d'ús privatSurtValor RGBA de la icona XKBLlegeix el FITXER de la memòria cau del registre.Llegeix la memòria cau del registre del sistema.RejangSuprimeix el mètode d'entrada seleccionat dels mètodes d'entrada habilitatsRestableix els valors de la configuracióS'està restablint…ReiniciaReinicia el dimoni de l'IBusExecuta xmodmap si existeix .xmodmap o .Xmodmap quan es commutin els motors de l'IBus.RúnicSamaritàSaurashtraDesa l'emoji del diàleg al porta-retalls Ordre dels motors desats a la llista dels mètodes d'entradaNúmero de la versió desadaSelecciona un idiomaSeleccioneu un mètode d'entradaSeleccioneu la drecera de teclat per a %sEstabliu les preferències de l'IBusEstableix un tipus de lletra dels candidats Unicode al diàleg de l'emojiEstableix l'idioma de les anotacions emoji al diàleg dels emojiS'ha produït un error en establir el motor global. Estableix o obté el motorEstableix 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.Estableix el comportament de l'IBus sobre com mostrar o ocultar la barra d'idiomesEstableix l'orientació dels candidats a la taula de cercaComparteix el mateix mètode d'entrada amb totes les aplicacionsShavianMostra els motors disponiblesMostra les variants dels emojisMostra la icona a la safata del sistemaMostra la informació del mètode d'entrada seleccionatMostra el nom del mètode d'entradaMostra el nom del mètode d'entrada a la barra d'idiomaMostra el nom del mètode d'entrada a la barra d'idiomes quan s'activi la casella de seleccióMostra el quadre de propietats:Mostra la configuració del mètode d'entrada seleccionatMostra els valors de la configuracióMostra el contingut de la memòria cau del registreMostra aquesta informacióMostra la versióSingalèsVariants de formes petitesModificador de l'espaiat de les lletresEspecialsInicia l'IBus en entrarCoincidència del sufixSundanèsSundanès suplementariSuperíndexs i subíndexsFletxes-A suplementàriesFletxes-B suplementàriesFletxes-C suplementàriesOperadors matemàtics suplementarisPuntuació suplementàriaSímbols i pictogrames suplementarisÀrea A d'ús privat suplementariÀrea B d'ús privat suplementariSyloti NagriSímbolsSiríacSiríac suplementariTagalTagbanwaEtiquetesTai LeTai ThamTai VietSímbols tai xuan jingTàmilTeluguThaanaTaiNo s'està executant el dimoni de l'IBus. El voleu iniciar?El comportament de la propietat «panel». 0 = No es mostra, 1 = S'amaga automàticament, 2 = Es mostra sempreMil·lisegons per mostrar el quadre de propietatsEls mil·lisegons per mostrar el quadre de propietats després de rebre l'enfocament o quan se'n canviïn les propietats.Els mil·lisegons per mostrar el quadre d'icona amb una propietatEls mil·lisegons per mostrar el quadre d'icona des de la icona del motor, en una icona de propietat, sempre que s'activin els motors, si la propietat s'especifica amb el valor icon-prop-key a IBusEngineDesc. Si el valor és 0, no hi ha retard i la icona de propietat es mostra automàticament.La memòria cau del registre no és vàlida. El número desat de la versió s'usarà per comprovar la diferència entre la versió anterior i l'actual de l'IBus.La drecera de teclat per commutar al següent mètode d'entrada de la llistaLa drecera de teclat per canviar al mètode d'entrada anterior de la llistaLa drecera de teclat per commutar al següent mètode d'entrada de la llistaLa drecera de teclat per commutar al mètode d'entrada anterior de la llistaLa drecera de teclat per activar o desactivar el tecleig d'UnicodeLa drecera de teclat per activar o desactivar el tecleig d'emojisLa drecera de teclat per desactivar el mètode d'entradaLa drecera de teclat per activar el mètode d'entradaLa drecera de teclat per habilitar o inhabilitar el mètode d'entradaLa drecera de teclat per habilitar les conversions de la posició del codi UnicodeLa drecera de teclat per habilitar les conversions de les anotacions emoji o els noms UnicodeTibetàTifinaghCantonada superior esquerraCantonada superior dretaSímbols de transports i mapesViatges i llocsDrecera de teclat per a l'activadorDrecera de teclat de l'activador per gtk_accelerator_parseLa disposició dels EUA és un annex de les disposicions llatines. Es pot ometre la variant.UgaríticUnicode triatPosició del codi Unicode:Tipus de lletra Unicode:Drecera de teclat d'Unicode per gtk_accelerator_parseSil·labaris aborígens unificats del CanadàSil·labaris ampliats aborígens unificats del CanadàÚs: %s ORDRE [OPCIÓ...] Usa un tipus de lletra personalitzatUsa un tipus de lletra personalitzat per al quadre d'idiomesUsa el tipus de lletra personalitzat:Usa els camins d'esquema del motor en comptes del nucli de l'IBus, el qual pot tenir els valors separats amb comes.Usa el mètode d'entrada globalUsa la drecera de teclat amb la tecla de majúscules per canviar a l'anterior mètode d'entradaUsa la disposició de teclat del sistema (XKB)Usa la disposició de teclat del sistemaUsa xmodmapVaiSelectors de variacióSuplement dels selectors de variacióExtensions vèdiquesVerticalFormes verticalsSi les anotacions emoji poden coincidir o no parcialmentSi les anotacions emoji poden coincidir o no amb una cadena parcial en comptes de la coincidència exacta.Escriu el FITXER de la memòria cau del registre.Escriu la memòria cau del registre del sistema.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 en l'interval de 0 a 255 o valors de percentatge en l'interval de 0% a 100%, i «a» té un valor en punt flotant en l'interval de 0 a 1 per l'alfa.Radicals YiSil·labari YiSímbols d'hexagrames YijingEn aquesta llista podeu assignar una anotació per a un emoji preferit.Podeu visualitzar els emojis preferits a la llista d'emojis, si aquesta llista té qualsevol caràcter._Quant a_Afegeix_Aplica_Cancel·la_Tanca_SuprimeixA_vallD'ac_ord_PreferènciesSup_rimeixA_muntdefault:LTRllista de les anotacions emoji preferides al diàleg dels emojisllista d'emojis preferits al diàleg dels emojisidioma: %s Commutació dels mètodes d'entradaJoan Duran Oscar Osta Pueyo , Patricia Rivera Escuder , Robert Antoni Buj Gelonch , Xavier Conde Rueda , Antoni Bella ibus-1.5.22/po/ja.po0000644000000000000000000032243213623751601011014 00000000000000# Japanese translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2019 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # fujiwara , 2017. #zanata # fujiwara , 2018. #zanata # fujiwara , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2019-07-24 03:07+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Japanese \n" "Language: ja\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Zanata 4.6.2\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "プリロードエンジン" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus 起動時のプリロードエンジン" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "エンジンの順序" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "入力メソッドの一覧の中から保存されたエンジンの順序" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME 切り替えウィンドウのポップアップ遅延時間 (ミリ秒単位)" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "保存されているバージョン番号" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "ASCII を持たないラテンレイアウト" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" "US レイアウトはラテンレイアウトに追加されます。variant は省略可能です。" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmap を使用する" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "ibus エンジンが切り替えられたときに .xmodmap もしくは .Xmodmap が存在すれば " "xmodmap を実行します。" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "システムのキーボードレイアウトを使用する" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "システムのキーボード (XKB) レイアウトを使用する" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "前編集テキストを組み込む" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "アプリケーションウィンドウに前編集テキストを組み込みます" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "グローバル入力メソッドを使用する" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "すべてのアプリケーション間で同じ入力メソッドを共有する" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "デフォルトで入力メソッドを有効にする" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "アプリケーションで入力が必要とされる場合にはデフォルトで入力メソッドを有効に" "します" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf により名前のプレフィックスを維持する" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "名前の変換を阻止する DConf キーのプレフィックスです" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "トリガーショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "入力メソッドをオンまたはオフするためのショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse のためのトリガーショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "ショートカットキーを有効にする" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "入力メソッドをオンに切り替えるためのショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "ショートカットキーを無効にする" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "入力メソッドをオフに切り替えるためのショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "次のエンジンへのショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "一覧内の次の入力メソッドに切り替えるためのショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "前のエンジンへのショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "一覧内のひとつ前の入力メソッドに切り替えるためのショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "自動的に隠す" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "プロパティーパネルの挙動。 0 = 表示しない、1 = 自動的に隠す、2 = 常に表示する" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "言語パネルの位置" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "パネルが常に表示されている場合に入力カーソルに従う" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "プロパティーパネルを表示するミリ秒" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "フォーカスインまたはプロパティが変更された後でプロパティーパネルを表示するミ" "リ秒。" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "検索テーブルの向き" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "検索テーブルの向きです。0 = 横、1 = 縦" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "システムトレイにアイコンを表示する" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "入力メソッド名を表示する" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "言語バーに入力メソッド名を表示する" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB アイコンの RGBA 値" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "プロパティー用にパネルアイコンを表示する遅延時間 (ミリ秒単位)" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "カスタムフォントを使う" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "言語パネル用にカスタムフォント名を使用する" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "カスタムフォント" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "言語パネル用のカスタムフォント名" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse のための Unicode ショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Unicode 入力の有効と無効を切り替えるためのショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse のための絵文字ショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "絵文字入力の有効と無効を切り替えるためのショートカットキー" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "絵文字ダイアログ上の絵文字用のカスタムフォント名" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "絵文字辞書用のデフォルトの言語" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "絵文字ダイアログ上の絵文字辞書のデフォルトの言語を選択します。その値 $lang " "は、/usr/share/ibus/dicts/emoji-$lang.dict に適用されます。" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "絵文字ダイアログ上のお気に入り絵文字リスト" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "このリストが文字を含む場合、絵文字リスト上にお気に入りの絵文字を表示すること" "ができます。" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "絵文字ダイアログ上のお気に入りの絵文字ルビリスト" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "このリストの中にお気に入りの絵文字用のルビを指定できます。" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "絵文字ルビを部分一致させることを可能にするか否か" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "絵文字ルビを完全一致ではなく部分文字列で一致させることを可能にするか否か。" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "指定した長さで絵文字ルビを一致させる" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "絵文字ルビを完全一致ではなく指定した文字数で部分一致させる" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "絵文字ルビを部分一致させる条件を選ぶ" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "絵文字ルビを部分一致させる次の条件のうちの1つを選ぶ: 0 == 文頭一致、1 == 文" "末一致、2 == 文中一致" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "起動時に絵文字データを読み込む" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "true の場合、起動時に絵文字データを読み込みます。約 10 MBメモリーがデータを読" "み込むために必要になります。false の場合、初めて絵文字ダイアログを開く時に絵" "文字データを読み込みます。" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "起動時に Unicode データを読み込む" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "true の場合、起動時に Unicode データを読み込みます。約 15 MB メモリーがデータ" "を読み込むために必要になります。false の場合、初めて絵文字ダイアログを開く時" "に Unicode データを読み込みます。true の場合、常に絵文字データが読み込まれた" "後で、Unicode データが読み込まれます。" #: 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:209 msgid "Other" msgstr "その他" #: setup/emojilang.py:67 msgid "Select a language" msgstr "言語の選択" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "キャンセル(_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "OK(_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "さらに…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "情報" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "閉じる(_C)" #: 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 "入力メソッドの選択" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "追加(_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "入力メソッド" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus の設定" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "以前の入力メソッドに切り替えるにはショートカットにシフトキーを付けて使用しま" "す" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus デーモンが実行されていません。起動しますか?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus デーモンを %d 秒以内に開始できませんでした。" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s のキーボードショートカットを選択" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "入力メソッドの切り替え中" #: setup/setup.ui:11 msgid "Horizontal" msgstr "横" #: setup/setup.ui:14 msgid "Vertical" msgstr "縦" #: setup/setup.ui:25 msgid "Top left corner" msgstr "左上" #: setup/setup.ui:28 msgid "Top right corner" msgstr "右上" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "左下" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "右下" #: setup/setup.ui:37 msgid "Custom" msgstr "カスタム" #: setup/setup.ui:48 msgid "Do not show" msgstr "表示しない" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "自動的に隠す" #: setup/setup.ui:54 msgid "Always" msgstr "常に表示する" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "一覧内の次の入力メソッドに切り替えるためのショートカットキー" #: setup/setup.ui:115 msgid "Next input method:" msgstr "次の入力メソッド:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "一覧内のひとつ前の入力メソッドに切り替えるためのショートカットキー" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "ひとつ前の入力メソッド:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "…" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "切り替え" #: setup/setup.ui:238 msgid "Enable:" msgstr "有効:" #: setup/setup.ui:291 msgid "Disable:" msgstr "無効:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "キーボードショートカット" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "ルックアップテーブルの中で候補ウィンドウの向きを設定します" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "候補ウィンドウの向き:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "言語バーをどのように表示するもしくは隠すかの ibus の動作を設定します" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "プロパティーパネルを表示する:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "言語パネルの位置" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "チェックボックスにチェック付けると、言語バーに入力メソッド名が表示されます" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "アプリケーションウィンドウに前編集テキストを組み込む" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" "アプリケーションウィンドウに入力メソッドのプリエディットテキストを組み込みま" "す" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "カスタムフォントを使う:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "フォントとスタイル" #: setup/setup.ui:579 msgid "General" msgstr "一般" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "選択した入力メソッドを有効な入力メソッドへ追加します" #: setup/setup.ui:682 msgid "_Remove" msgstr "削除(_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "選択した入力メソッドを有効な入力メソッドから削除します" #: setup/setup.ui:700 msgid "_Up" msgstr "上へ(_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "有効な入力メソッド一覧内で選択した入力メソッドを上へ移動させます" #: setup/setup.ui:718 msgid "_Down" msgstr "下へ(_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "有効な入力メソッド一覧内で選択した入力メソッドを下へ移動させます" #: setup/setup.ui:736 msgid "_About" msgstr "情報(_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "選択した入力メソッドの情報を表示します" #: setup/setup.ui:754 msgid "_Preferences" msgstr "設定(_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "選択した入力メソッドの設定を表示します" #: setup/setup.ui:812 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 "" "アクティブなインプットメソッドは、キーボードショートカットキーを押" "すかパネルアイコンをクリックすることによってリストされている中から1つのイン" "プットメソッドを選択することで切り替えることが可能です。" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "絵文字ルビまたは Unicode 名の変換を可能にするショートカットキー" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "絵文字ルビ:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Unicode コードポイント変換を可能にするショートかっトーキー" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Unicode コードポイント:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "絵文字ダイアログ上の Unicode 候補のフォントを設定" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Unicode フォント:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "絵文字ダイアログ上の絵文字ルビの言語を設定します" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "絵文字ルビの言語:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "絵文字ルビを次の条件と文字数以上で部分一致させる:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "絵文字ルビを完全一致ではなく部分文字列で一致させることが可能かどうか" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "文頭一致" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "文末一致" #: setup/setup.ui:1130 msgid "Containing match" msgstr "文中一致" #: setup/setup.ui:1176 msgid "Emoji" msgstr "絵文字" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "キーボードレイアウト" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "グローバル入力メソッドの設定" #: setup/setup.ui:1298 msgid "Advanced" msgstr "詳細" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "ログイン時に IBus を起動" #: setup/setup.ui:1358 msgid "Startup" msgstr "スタートアップ" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "活動" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "動物と自然" #: src/ibusemojigen.h:32 msgid "Component" msgstr "構成要素" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "国旗" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "食べ物と飲み物" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "物体" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "人と体" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "顔文字と感情" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "記号" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "旅行と場所" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "基本ラテン文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "ラテン1補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "ラテン文字拡張 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "ラテン文字拡張 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "IPA 拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "前進を伴う修飾文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "ダイアクリティカルマーク (合成可能)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "ギリシア文字及びコプト文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "キリール文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "キリール文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "アルメニア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "ヘブライ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "アラビア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "シリア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "アラビア文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "ターナ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "ンコ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "サマリア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "マンダ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "シリア文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "アラビア文字拡張 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "デーヴァナーガリー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "ベンガル文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "グルムキー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "グジャラート文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "オリヤー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "タミル文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "テルグ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "カンナダ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "マラヤーラム文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "シンハラ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "タイ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "ラオス文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "チベット文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "ミャンマー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "グルジア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "ハングル字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "エチオピア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "エチオピア文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "チェロキー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "統合カナダ先住民音節" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "オガム文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "ルーン文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "タガログ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "ハヌノオ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "ブヒッド文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "タグバヌア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "クメール文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "モンゴル文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "統合カナダ先住民音節拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "リンブ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "タイ ロ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "新タイ ロ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "クメール文字用記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "ブギス文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "ラーンナー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "ダイアクリティカルマーク (合成可能) 拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "バリ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "スンダ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "バタク文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "レプチャ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "オル・チキ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "キリール文字拡張 C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "グルジア文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "スンダ文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "ヴェーダ文字拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "音声記号拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "音声記号拡張補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "ダイアクリティカルマーク (合成可能) 補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "ラテン文字拡張追加" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "ギリシア文字拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "一般句読点" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "上付き・下付き" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "通貨記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "記号用ダイアクリティカルマーク (合成可能)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "文字様記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "数字に準じるもの" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "矢印" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "数学記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "その他の技術用記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "制御機能用記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "光学的文字認識、OCR" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "囲み英数字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "けい線素片" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "ブロック要素" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "幾何学模様" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "その他の記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "装飾記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "その他の数学記号 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "補助矢印 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "点字図形" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "補助矢印 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "その他の数学記号 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "補助数学記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "その他の記号及び矢印" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "グラゴル文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "ラテン文字拡張 C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "コプト文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "グルジア文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "ティフナグ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "エチオピア文字拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "キリール文字拡張 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "補助句読点" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "CJK 部首補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "康熙部首" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "漢字構成記述文字、IDC" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "CJK の記号及び句読点" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "平仮名" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "片仮名" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "注音字母" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "ハングル互換字母" # JIS のブロック名は KANBUN (CJK miscellaneous)、日本語による通用名称は「漢文用記号 (その他の CJK 文字)」 # だが、メッセージは Kanbun のみなので訳は「漢文用記号」のみとした #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "漢文用記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "注音字母拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "CJK の筆画" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "片仮名拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "囲み CJK 文字・月" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "CJK 互換用文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "CJK 統合漢字拡張 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "易経記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "CJK 統合漢字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "イ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "イ文字部首" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "リス文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "ヴァイ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "キリール文字拡張 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "バムン文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "声調修飾文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "ラテン文字拡張 D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "シロティナグリ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "共通インド数字に準じるもの" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "パスパ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "サウラーシュトラ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "デーヴァナーガリー文字拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "カヤー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "ルジャン文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "ハングル字母拡張 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "ジャワ文字" # 「ミャンマー文字拡張 A」と合わせた #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "ミャンマー文字拡張 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "チャム文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "ミャンマー文字拡張 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "タイ・ヴェト文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "マニプリ文字拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "エチオピア文字拡張 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "ラテン文字拡張 E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "チェロキー文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "マニプリ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "ハングル音節文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "ハングル字母拡張 B" # サロゲートペアは JIS(UCS) になし。 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "上位代用符号位置" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "上位私用代用符号位置" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "下位代用符号位置" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "私用領域" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "CJK 互換漢字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "アルファベット表示形" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "アラビア表示形 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "字形選択子" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "縦書き形" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "半記号 (合成可能)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "CJK 互換形" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "小字形" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "アラビア表示形 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "半角・全角形" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "特殊用途文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "線文字 B 音節文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "線文字 B 表意文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "エーゲ数字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "古代ギリシア数字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "古代記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "ファイストスの円盤の文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "リキア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "カリア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "コプト・エパクト数字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "古代イタリア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "ゴート文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "古代ペルム文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "ウガリト文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "古代ペルシャ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "デザレット文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "シェイヴィアン文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "オスマニア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "オセージ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "エルバサン文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "カフカース・アルバニア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "線文字 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "キプロス音節文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "アラム文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "パラミラ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "ナバテア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "ハトラ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "フェニキア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "リディア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "メロエ記念碑文体" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "メロエ草書体" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "カローシュティー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "古典南アラビア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "古典北アラビア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "マニ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "アヴェスター文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "碑文パルティア文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "碑文パフラヴィー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "聖詠パフラヴィー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "古テュルク文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "ロヴァーシュ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "ハニーフィー・ロヒンギャ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "ルーミー数字記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "旧ソグド文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "ソグド文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "エリマイス文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "ブラーフミー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "カイティ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "ソラ・ソンペン文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "チャクマ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "マハージャニー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "シャラダ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "シンハラ旧数字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "ホジャ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "ムルターニー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "フダーワーディー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "グランタ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "ネワ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "ティルフータ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "悉曇文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "モーディー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "モンゴル文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "タクリ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "アーホム文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "ドーグリー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "ワラング・クシティ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "ナンディナーガリー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "ザナバザル方形文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "ソヨンボ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "パウ・チン・ハウ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "バイクシュキー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "マルチェン文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "マサラム・ゴーンディー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "グンジャラ・ゴーンディー文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "マカサル文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "タミル文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "くさび形文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "くさび形文字の数字及び句読点" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "シュメール楔形文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "ヒエログリフ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "ヒエログリフ文字書式制御記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "アナトリア・ヒエログリフ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "バムン文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "ムロ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "バサ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "パハウ・フモン文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "メデファイドリン文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "ポラード文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "漢字の記号及び句読点" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "西夏文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "西南文字の構成要素" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "仮名文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "仮名文字拡張 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "小書き仮名拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "女書" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "デュプロワイエ式速記" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "速記書式制御記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "ビザンチン音楽記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "音楽記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "古代ギリシア音符記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "マヤ数字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "太玄経記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "算木用数字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "数学用英数字記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "サットン手話表記法" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "グラゴル文文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "ニアケン・プアチェ・フモン文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "ワンチョ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "メンデ文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "アドラム文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "インド・シヤク数字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "オスマン・シヤク数字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "アラビア数学用英数字記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "麻雀牌" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "ドミノ牌" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "トランプ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "囲み英数字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "囲み表意文字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "その他の記号と絵文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "顔文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "オーナメント" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "交通と地図の記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "錬金術記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "幾何学模様拡張" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "補助矢印 C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "補助記号と絵文字" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "チェス記号" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "記号と絵文字拡張 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "CJK 統合漢字拡張 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "CJK 統合漢字拡張 C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "CJK 統合漢字拡張 D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "CJK 統合漢字拡張 E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "CJK 統合漢字拡張 F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "CJK 互換漢字補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "タグ" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "字形選択子補助" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "補助私用領域 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "補助私用領域 B" #: tools/main.vala:51 msgid "List engine name only" msgstr "エンジン名のみ表示" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus に接続できません。\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "言語: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "エンジンが設定されていません。\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "グローバルエンジンの設定に失敗しました。\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "グローバルエンジンの取得に失敗しました。\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "システムレジストリーキャッシュを読み込みます。" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "レジストリーキャッシュ FILE を読み込みます。" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "レジストリーキャッシュは無効です。\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "システムレジストリーキャッシュを書き込みます。" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "レジストリーキャッシュ FILE を書き込みます。" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "ibus コアの代わりにエンジンのスキーマパスを使用し、コンマで区切られた値が可能" "です。" #: tools/main.vala:381 msgid "Resetting…" msgstr "初期化中…" #: tools/main.vala:399 msgid "Done" msgstr "完了" #: tools/main.vala:444 msgid "Set or get engine" msgstr "エンジンを設定もしくは表示する。" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon を終了する" #: tools/main.vala:446 msgid "Show available engines" msgstr "利用可能なエンジンを表示する" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(実装されていません)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon を再起動する" #: tools/main.vala:449 msgid "Show version" msgstr "バージョンを表示する" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "レジストリーキャッシュの内容を表示する" #: tools/main.vala:451 msgid "Create registry cache" msgstr "レジストリーキャッシュを作成する" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon の D-Bus アドレスを表示する" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "設定値を表示する" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "設定値を初期化する" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "ダイアログ上の絵文字をクリップボードに保存する" #: tools/main.vala:458 msgid "Show this information" msgstr "この情報を表示する" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "使い方: %s コマンド [オプション...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "コマンド:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s は不明なコマンドです。\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "お気に入り" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "その他" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Unicode の選択を開く" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "絵文字の選択に戻る" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "ページをめくる" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "ページを戻す" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "絵文字異形を表示する" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "閉じる" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "メニュー" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "警告メッセージを閲覧するためにクリックしてください" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Unicode の辞書を読み込んでいます:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "コードポイント: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "絵文字異形あり" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "説明: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "なし" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "ルビ: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "名前: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "別名: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "絵文字の選択" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Unicode の選択" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "現在のテキストアプリケーションを取得するのに失敗しました。アプリケーションを" "再フォーカスさせてください。例えば、Esc キーを数回入力して絵文字入力モードを" "開放し、デスクトップをクリックして、テキストアプリケーションを再度クリックし" "てください。" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "絵文字の選択を取り消しました。" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "クリップボードに絵文字をコピーしました。" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "絵文字ダイアログ上の絵文字用の「フォント」" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "フォント" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "絵文字ダイアログ上のルビ用の「言語」。例「en」" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "言語" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "絵文字ルビを部分一致させることが可能になる" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "指定した数字をもつ長さで一致させる" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "指定した数字の条件で一致させる" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus パネル" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus は Linux/Unix のためのインテリジェントなインプットバスです。" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "UTUMI Hirosi \n" "IWAI, Masaharu \n" "日向原 龍一 \n" "MIZUMOTO, Noriko " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "設定" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "再起動" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "終了" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/POTFILES.in0000644000000000000000000000301313623750431011626 00000000000000# Files with translatable strings. # Please keep this file in alphabetical order. bus/dbusimpl.c bus/engineproxy.c bus/inputcontext.c bus/panelproxy.c data/dconf/org.freedesktop.ibus.gschema.xml 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/emojilang.py setup/engineabout.py setup/enginecombobox.py setup/enginedialog.py setup/enginetreeview.py setup/ibus-setup.desktop setup/keyboardshortcut.py setup/main.py setup/setup.ui src/ibusbus.c src/ibusconfig.c src/ibusemojigen.h 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/ibusunicodegen.h src/ibusutil.c src/keyname-table.h tools/main.vala ui/gtk3/application.vala ui/gtk3/candidatearea.vala ui/gtk3/candidatepanel.vala ui/gtk3/emojier.vala ui/gtk3/emojierapp.vala ui/gtk3/handle.vala ui/gtk3/ibus-extension-gtk3.desktop.in ui/gtk3/ibus-ui-emojier.desktop.in 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.22/po/bg.po0000644000000000000000000027143713623751577011036 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-02-18 05:45+0000\n" "Last-Translator: Valentin Laskov \n" "Language-Team: Bulgarian \n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Предв. заредени механизми" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Предварително заредени механизми по време на стартирането на ibus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Ред на механизмите" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Съхранен ред на механизми в списъка с методи за писане" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Използване на системната клавиатурна подредба" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Използване на системната клавиатурна подредба (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Вграден редактиран текст" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Вгражда предв. редактиран текст в прозореца на приложението" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Използва глобалния метод за писане" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Споделяй същия метод за писане за всички приложения" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Разрешава метод за писане по подразбиране" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "Разрешава метод за писане по подразбиране, когато приложението е на фокус" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf запазва префиксите на имената" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Префикси на DConf клавишите за спиране конверсията на имената" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Превключващи клавишни комбинации" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Клавишна комбинация за включване или изключване на метода за писане" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Разреши клавишните комбинации" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Клавишна комбинация за включване на метода за писане" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Забрани клавишните комбинации" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Клавишна комбинация за изключване на метода за писане" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Клавишни комбинации за следващ механизъм" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" "Клавишна комбинация за превключване към следващия в списъка метод за писане" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Клавишни комбинации за предишен механизъм" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" "Клавишна комбинация за превключване към предишния в списъка метод за писане" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Автом. скриване" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Позиция на панела с езици" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Ориентация на таблицата за преглед" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Ориентация на таблицата за преглед. 0 = Хоризонтално, 1 = Вертикално" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Показвай икона в зоната за уведомяване" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Показва името на метода за писане" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Показва името на метода за писане на лентата за език" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Използване на избран шрифт" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Използване на избран шрифт за панела с езици" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Шрифт по избор" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Име на избрания шрифт за панела с езици" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Клавишна комбинация за включване или изключване на метода за писане" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 #, fuzzy msgid "The shortcut keys for turning emoji typing on or off" msgstr "Клавишна комбинация за включване или изключване на метода за писане" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "Име на избрания шрифт за панела с езици" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "Друг" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "Избор на метод за писане" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Отказване" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_Добре" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Относно" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" 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 "Избор на метод за писане" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Добавяне" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Метод за писане" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Клав." #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Предпочитания за IBus" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus демонът не е стартиран. Да го стартирам ли сега?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus демонът не може да се стартира вече %d секунди" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Изберете клавишна комбинация за %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Хоризонтално" #: setup/setup.ui:14 msgid "Vertical" msgstr "Вертикално" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Горен ляв ъгъл" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Горен десен ъгъл" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Долен ляв ъгъл" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Долен десен ъгъл" #: setup/setup.ui:37 msgid "Custom" msgstr "По избор" #: setup/setup.ui:48 msgid "Do not show" msgstr "" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "" #: setup/setup.ui:54 msgid "Always" msgstr "Винаги" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" "Клавишна комбинация за превключване към следващ в списъка метод за писане" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Следващ метод:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" "Клавишна комбинация за превключване към предишен в списъка метод за писане" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Предишен метод:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Разрешаване или забрана:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Разреши:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Забрани:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Клавишни комбинации" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Задава ориентацията на кандидатите в таблицата за преглед" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Ориентация на кандидатите:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Задава как ibus да показва или скрива лентата за езика" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Позиция на панела с езици:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "Показва името на метода за писане на лентата за език при поставена отметка" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Вгражда предв. редактиран текст в прозореца на приложението" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "" "Вгражда редактирания текст от метода за писане в прозореца на приложението" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "Използван шрифт по избор:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Шрифт и стил" #: setup/setup.ui:579 msgid "General" msgstr "Основни" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "Добавя избрания метод в списъка с разрешени методи за писане" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Премахване" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "Премахва избрания метод за писане от списъка с разрешени методи" #: setup/setup.ui:700 msgid "_Up" msgstr "На_горе" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "Премества нагоре избрания метод за писане в списъка с разрешени методи" #: setup/setup.ui:718 msgid "_Down" msgstr "На_долу" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "Премества надолу избрания метод за писане в списъка с разрешени методи" #: setup/setup.ui:736 msgid "_About" msgstr "_Относно" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Показва информация от избрания метод за писане" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Предпочитания" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Показва настройки на избрания метод за писане" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Клавишна комбинация за включване или изключване на метода за писане" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "Използван шрифт по избор:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Клавиатурна подредба" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Настройки на глобалния метод за писане" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Допълнителни" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "Стартирай ibus при влизане" #: setup/setup.ui:1358 msgid "Startup" msgstr "Стартиране" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "Вертикално" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "Списък само на имена на механизми" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Не мога да се свържа с IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "език: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Не е зададен механизъм.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Задаването на глобален механизъм не успя.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Получаването на глобален механизъм не успя.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "" #: tools/main.vala:399 msgid "Done" msgstr "" #: tools/main.vala:444 msgid "Set or get engine" msgstr "" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "" #: tools/main.vala:446 msgid "Show available engines" msgstr "" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "" #: tools/main.vala:449 msgid "Show version" msgstr "" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "" #: tools/main.vala:451 msgid "Create registry cache" msgstr "" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Употреба: %s КОМАНДА [ОПЦИЯ...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Команди:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s е непозната команда!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "Друг" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "Зат_варяне" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "Описание:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "Предпочитания за IBus" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "" "IBus е интелигентен начин за избор на метод за въвеждане на информация за " "Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Валентин Ласков" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Предпочитания" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Рестартиране" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "Спиране на програмата" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = По избор" ibus-1.5.22/po/Makevars0000644000000000000000000000447213623750431011557 00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(shell grep "GETTEXT_PACKAGE.*=" $(top_srcdir)/configure.ac | sed -e 's/\(.*\)=[ ]*\(.*\)/\2/') # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. # The last argument --keyword without keyword prevents xgettext from # extracting translatable strings from "Icon" in *.desktop files. XGETTEXT_OPTIONS = --from-code=UTF-8 --keyword=_ --keyword=N_ --keyword=C_:1c,2 --keyword=NC_:1c,2 --keyword=g_dngettext:2,3 --keyword=Name --keyword=Comment --keyword --add-comments # 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 \ Takao Fujiwara # 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 = # https://wiki.gnome.org/Initiatives/GnomeGoals/GettextMigration PO_DEPENDS_ON_POT = "no" DIST_DEPENDS_ON_UPDAE_PO = "no" ibus-1.5.22/po/sv.gmo0000644000000000000000000012226513623751604011223 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fzIf1g@g7hThihmh1hhhhvhnij jMjbj hj rj~jj jjjjjj k k*k;kDk)Wkkkk kkkkl lll+l ClQlWl _l ilvllll llll lm m%m8mRm#pmm mmm m n -n Nn on nnnno oo#o (o5oKo>Zoop+pp pp( q-3q(aqq qq qqq%qr%rF;rrr rrrrr4r))sSs istsssss"s ttt 't2tEtNt gt st}ttttt)tttu u/(u0XuGuu uuv'v-=vkv'zvLvv w !w$+wPw'pw#w w wwww x x)x yy<y Yyeynyyy yyy.y zz4zH-&͋)<\nvnjKΌ"= OYpFύ Ս #5G^o:8.2a{A\0ϐ.א$4Pe/ ,֑IM2b"Ԓ ' :[o x% ܓ  ( 6 DRo**Ӕ #!,NVgoxҕٕ ,U4/c;ZQo@ FJ@=ҙ86I018DEa Ûڛ .0L_ Üל0(1C'u8c%sO*$9IM`z  <qh. Ң BOH ̣ԣܣ /$G lx$JWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2019-06-11 10:11+0000 Last-Translator: Göran Uddeborg Language-Team: Swedish Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Zanata 4.6.2 Plural-Forms: nplurals=2; plural=(n != 1) ”TYPSNITT” för emoji-tecken i emoji-dialogen”SPRÅK” för annotationer i emoji-dialogen. T.ex. ”sv”%s är ett okänt kommando! (Inte implementerat)…Typsnitt och stilInställningar för global inmatningsmetodTangentbordslayoutKortkommandonUppstartIBus Den intelligenta inmatningsbussen Hemsida: https://github.com/ibus/ibus/wiki Den aktiva inmatningsmetoden kan bytas mellan de valda i listan ovan genom att trycka snabbkommandot eller klicka i panelikonen.OmAktiviteterLägg till den valda inmatningsmetoden till de aktiverade inmatningsmetodernaAdlamAvanceratEgeiska talAhomAlkemiska symbolerAlias: %sAlfabetiska presentationsformerAlltidAnatoliska hieroglyferGammalgrekisk musiknotationGammalgrekiska talAntika symbolerDjur & naturAnnotationer: %sArabiskaArabiska utökat-AArabiska matematiska alfabetiska symbolerArabiska presentationsformer-AArabiska presentationsformer-BArabiska tilläggArmeniskaPilarUpphovsman: %s Dölj automatisktAvestanBalinesiskBamumBamum-tilläggGrundläggande latinsktBassaiska vahBatakBengaliBhaiksukiBlockelementBopomofoUtökad bopomofoNedre vänstra hörnetNedre högra hörnetLådritningBrahmiPunktskriftsmönsterTa tillbaks emoji-valBuginesiskBuhidBysantinska musiksymbolerCJK-kompatibilitetCJK-kompatibilitetsformerCJK-kompatibilitetsideograferCJK-kompatibilitetideografstilläggCJK-ordstamstilläggCJK-streckCJK-symboler och skiljeteckenEnhetliga CJK-ideograferEnhetliga CJK-ideograftillägg AEnhetliga CJK-ideograftillägg BEnhetliga CJK-ideograftillägg CEnhetliga CJK-ideograftillägg DEnhetliga CJK-ideograftillägg EEnhetliga CJK-ideograftillägg FKan inte ansluta till IBus. Avbröt att välja en emoji.Kandidaters riktning:KariskaKaukasisk albanskaChakmaChamCherokesiskaCherokesiska tilläggSchacksymbolerVälj ett villkor för att matcha emoji-annotationer partielltVälj ett standardspråk med emoji-ordlistor i emoji-dialogen. Värdet $lang används i /usr/share/ibus/dicts/emoji-$lang.dictVälj en av följande villkor för att matcha emoji-annotationer partiellt: 0 == prefixmatchning, 1 == suffixmatchning, 2 == innehållsmatchningKlicka för att visa ett varningsmeddelandeStängKodpunkt: %sKombinerande diakritiska teckenKombinerande utökade diakritiska teckenTillägg för kombinerande diakritiska teckenKombinerande diakritiska symbolmarkörerKombineringshalvmarkörerKommandon: Vanliga indiska talformerKomponentInnehållsmatchningKontrollbilderKopierade en emoji till ditt urklipp.KoptiskKoptiska epact-nummerCopyright © 2007-2010 Peng Huang Copyright © 2007-2010 Red Hat, Inc.TalstavSkapa en registercacheKilskriftKilskrift-tal och skiljeteckenValutasymbolerAnpassatAnpassat typsnittAnpassat typsnitt för emoji-tecken i emoji-dialogenAnpassat typsnittsnamn till språkpanelenCypriotiska stavelserKyrilliskaKyrillisk utökad-AKyrillisk utökad-BKyrillisk utökad-CKyrilliska tilläggDConf namnbevarandeprefixStandardspråk för emoji-ordlistaBeskrivning: Beskrivning: %sDeseretDevanagariDevanagari utökadDingbatsAvaktivera kortkommandonAvaktivera:Visa inteDograDomino-brickorKlartDuployéTidig dynastisk kilskriftFormatstyrning för egyptiska hieroglyferEgyptiska hieroglyferElbasanElymaicBädda in förredigerad textBädda in förredigerad text i programfönstretBädda in förredigeringstext i programfönstretBädda in förredigeringstext för inmatningsmetoden i programfönstretEmojiEmoji-valSpråk för emoji-annotationer:Emoji-annoteringar:Emoji-annotationer kan matcha partielltEmoji-kortkommando för gtk_accelerator_parseHumörsymbolerAktivera inmatningsmetoden som standardAktivera inmatningsmetoden som standard när programmet får inmatningsfokusAktivera eller avaktivera:Aktivera kortkommandonAktivera:Inneslutna alfanumeriska utökningarInneslutna alfanumeriska teckenInneslutna CJK-bokstäver och -månaderInneslutna ideografiska utökningarMaskinordningEtiopiskaUtökad etiopiskUtökad etiopisk-AEtiopiska tilläggAvsluta ibus-demonenTYPSNITTMisslyckades att få det aktuella textprogrammet. Fokusera om ditt program. T.ex. tryck Esc-tangenten flera gånger för att släppa emoji-inskrivningsläget, klicka på ditt skrivbord och klicka på ditt textprogram igen.FavoriterFlaggorFölj inmatningsmarkören i fallet när panelen alltid visasMat & dryckAllmäntAllmänna skiljeteckenGeometriska formerUtökade geometriska formerGeorgiskaUtökad georgiskaGeorgiska tilläggAtt hämta den globala maskinen misslyckades. GlagolitiskGlagolitiska tilläggGotiskaGranthaUtökade grekiskaGrekiska och koptiskaGujaratiGunjala GondiGurmukhiHalvbredds- och helbreddsformerHangul-kompatibilitet JamoHangul JamoUtökad Hangul Jamo-AUtökad Hangul Jamo-BHangul-stavelserHanifi RohingyaHanunooHar emoji-varianterHatranskaHebreiskaDölj automatisktHöga surrogat för privat användningHöga surrogatHiraganaHorisontelltIBus-panelIBus-inställningarIBus-demonen kunde inte startas på %d sekunderIBus har startats! Om du inte kan använda IBus, lägg till följande rader i din $HOME/.bashrc; och logga därefter in igen till ditt skrivbord. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus är en intelligent inmatningsbuss för Linux/Unix.IPA-tilläggTecken för ideografisk beskrivningIdeografiska symboler och skiljeteckenOm emoji-annotationer kan matchas med en partiell sträng istället för en exakt matchningOm sant följer panelen inmatningsmarkören i fallet när panelen alltid visas. Om falskt visas panelen på en bestämd plats.SenarameiskaIndiska siyaq-siffrorInmatningsmetodInskriptionell pahlaviInskriptionell parthiskaJavanesiskaKaithiUtökad Kana-AKana-tilläggKanbunKangxi-ordstammarKannadaKatakanaFonetiska katakana-tilläggKayah LiKbdTangentkod:Tangentbordslayout: %s KortkommandonKharoshthiKhmerKhmer-symbolerKhojkiskaSindhiskaSPRÅKSpråkpanelens positionSpråkpanelens position:Språk: %s LaoYtterligare utökade latinskaLatin utökad-ALatinskt utökad-BUtökat latin-CUtökat latin-DUtökat latin-ELatinsk layout som inte har ASCIILatin-1-tilläggLepchaBokstavsliknande symbolerLimbuLinjär ALinjär B-ideogramLinjär B-stavelserLista endast maskinnamnLisuLäs in Unicode-data vid uppstartstillfälletLäs in Unicode-data vid uppstartstillfället om sant. Ungefär 15 MB minne behövs för att läsa in datan. Läs Unicode-datan när emoji-dialogen öppnas i början om falskt. Unicode-datan läses alltid in efter emoji-datan läses in även om sant.Läs in emoji-data vid uppstartstillfälletLäs in emoji-data vid uppstartstillfället om sant. Ungefär 10 MB minne behövs för att läsa in datan. Läs emoji-datan när emoji-dialogen öppnas i början om falskt.Laddar en Unicode-ordbokLåga surrogatLykiskaLydianMahajaniMahjong-brickorMakassariskaMalayalamMandeiskaManikeiskaMarchenMasaram GondiMatcha emoji-annotationer partiellt med mer än det angivna antalet tecken istället för den exakta matchningen.Matcha emoji-annotationer partiellt med följande villkor och mer än antalet tecken:Matcha emoji-annotationer med den angivna längdenMatcha med villkoret för det angivna heltaletMatcha med längden på det angivna heltaletMatematiska alfanumeriska symbolerMatematiska operatorerMayasiffrorMedefaidrinMeetei MayekMeetei Mayek-tilläggMende KikakuiMenyMeroitiska kursivMeroitiska hieroglyferMiaoDiverse matematiska symboler-ADiverse matematiska symboler-BDiverse symbolerDiverse symboler och pilarDiverse symboler och piktogramDiverse tekniskaModiModifieringsbokstäver för tonerModifierare:MongoliskaMongoliska tilläggMer …Flytta ner den valda inmatningsmetoden i listan över aktiverade inmatningsmetoderFlytta upp den valda inmatningsmetoden i listan över aktiverade inmatningsmetoderMruMultaniMusiksymbolerMyanmarUtökad Myanmar-AUtökad Myanmar-BNKoNabatéiskaNamn: %sNandinagariNy tai lueNewaKortkommandon för nästa maskinNästa inmatningsmetod:Ingen maskin är satt. IngenTalformerNushuNyiakeng Puachue HmongFöremålOghamOl ChikiFornungerskaFornitaliskaFornnordarabiskaFornpermiskaGammalpersiskaGammalsogdiskaFornsydarabiskaFornturkiskaÖppna Unicode-valOptisk teckenigenkänningOrienteringen på uppslagningstabellenOrienteringen på uppslagningstabellen. 0 = horisontellt, 1 = vertikaltOriyaDekorativa DingbatsOsageOsmaniskaAndraAnnatOttomanska siyaq-siffrorBläddra nedBläddra uppPahaw mongPalmyrenskaPau Cin HauFolk & kroppPhags-paPhaistos-skivaPhoeniciskFonetiska tilläggTillägg för fonetiska utökningarSpelkortTryck en tangent (eller tangentkombination)Tryck en tangent (eller tangentkombination). Dialogen kommer stängas när tangenten släpps.Fördröjning i millisekunder för pop-up-fönster för IME-byteInställningarPrefixmatchningPrefix av DConf-tangenter för att förhindra namnkonverteringFörhandsladda maskinerFörhandsladda maskiner när ibus startas uppKortkommandon för föregående maskinFöregående inmatningsmetod:Skriv ut D-Bus-adressen till ibus-demonenOmråde för privat användningPsaltaren-pahlaviAvslutaRGBA-värde på XKB-ikonenLäs registercachen i FIL.Läs systemregistercachen.RejangTa bort den valda inmatningsmetoden från de aktiverade inmatningsmetodernaÅterställ konfigurationsvärdenaÅterställer …Starta omStarta om ibus-demonenNumeriska Rumi-symbolerKör xmodmap om .xmodmap eller .Xmodmap finns när ibus-maskiner byts.RunorSamaritanskaSaurashtraSpara emoji i dialogen till urklippSparad maskinordning i listan över inmatningsmetoderSparade versionsnummerVälj ett språkVälj en inmatningsmetodVälj snabbkommando för %sSätt IBus-inställningarAnge ett typsnitt för Unicode-kandidater i emoji-dialogenAnge ett språk för emoji-annotationer i emoji-dialogenAtt sätta den globala maskinen misslyckades. Sätt eller hämta maskinAnge fördröjningen i millisekunder för att visa pop-up-fönstret för IME-byte. Standard är 400. 0 = Visa fönstret omedelbart. 0 < Vänta millisekunder. 0 > Visa inte fönstret och byt till föregående/nästa maskin.Ange beteendet hos ibus hur den visar eller döljer språkpanelenAnge ordningen av kandidater i tabelluppslagningSharadaDela samma inmatningsmetod mellan alla programShaviskaFormateringskontroll för StenografiVisa tillgängliga maskinerVisa emoji-varianterVisa ikonen i aktivitetsfältetVisa information om den valda inmatningsmetodenVälj namn på inmatningsmetodenVisa inmatningsmetodens namn i språkpanelenVisa inmatningsmetodens namn i språkpanelen när kryssrytan är iklickadVisa egenskapspanel:Visa uppsättningen av den valda inmatningsmetodenVisa konfigurationsvärdenaVissa innehållet i registercachenVisa denna informationVisa versionenSiddhamSinhalaSingalesiska arkaiska nummerSmå formvarianterUtökning för små kanasymbolerSmajlisar & känslaSogdiskaSora SompengSoyomboModifieringsbokstäver för blankstegSpecialteckenStarta ibus vid inloggningSuffixmatchningSundanesiskaSundanesiska tilläggUpphöjda och nedsänktaPiltillägg-APiltillägg-BPiltillägg-CMatematiska operatortilläggTillägg till skiljeteckenSymbol- och piktogramtilläggTillägg till privat användningsområde-ATillägg till privat användningsområde-BSuttons teckningsskriftSyloti NagriSymbolerSymboler och piktogram tillägg-ASyriskaSyriska tilläggTagalogTagbanwaTaggarTai leTai ThamTai VietTai Xuan Jing-symbolerTakriTamilskaTillägg för tamilTangutTangut-komponenterTeluguThaanaThailändskaIBus-demonen kör inte. Vill du starta den?Beteendet hos egenskapspanelen. 0 = Visa inte, 1 = Dölj automatiskt 2 = Visa alltidAntalet millisekunder att visa egenskapspanelenAntalet millisekunder att visa egenskapspanelen efter infokusering eller att egenskaperna ändrats.Antalet millisekunder att visa panelikonen för en egenskapAntalet millisekunder att visa panelikonen från maskinikonen för en egenskapsikon när maskinen byts om egenskapen anges av värdet på icon-prop-key i IBusEngineDesc. Om värdet är 0, ingen fördröjning och egenskapsikonen visas omedelbart.Registercachen är felaktig. Sparade versionsnummer kommer användas för att kontrollera skillnaden mellan versionen på den tidigare installerade ibus:en och den nuvarande ibus:en.Kortkommandot för att byta till nästa inmatningsmetod i listanKortkommandot för att byta till föregående inmatningsmetod i listanKortkommandot för att byta till nästa inmatningsmetod i listanKortkommandot för att byta till föregående inmatningsmetodKortkommandot för att slå på och av Unicode-inmatningKortkommandot för att slå på och av emoji-inmatningKortkommandot för att slå av inmatningsmetodenKortkommandot för att slå på inmatningsmetodenKortkommandot för att slå på och av inmatningsmetodenKortkommandon för att aktivera konverteringar av Unicode-kodpunkterKortkommandot för att aktivera emoji-annoteringar eller Unicode-namnTibetanskaTifinaghTirhutaÖvre vänstra hörnetÖvre högra hörnetTransport- och kartsymbolerResor & platserUtlös kortkommandonUtlös kortkommando för gtk_accelerator_parseUSA-layout läggs till till den Latinska layouten, varianten kan utelämnas.UgaritiskaUnicode-valUnicode-kodpunkter:Unicode-typsnitt:Unicode-kortkommandon för gtk_accelerator_parseEnhetliga kanadensiska aboriginstavelserEnhetliga kanadensiska aboriginstavelser, utökadAnvändning: %s KOMMANDO [FLAGGA …] Använd anpassat typsnittAnvänd det anpassade typsnittsnamnet till språkpanelenAnvänd ett anpassat typsnitt:Använd motorschemasökvägar istället för ibus-kärnan, vilket kan vara kommaseparerade värden.Använd den globala inmatningsmetodenAnvänd kortkommandot med skift för att byta till föregående inmatningsmetodAnvänd systemets (XKB) tangentbordslayoutAnvänd systemets tangentbordslayoutAnvänd xmodmapVaiVariationsväljareVariationsväljartilläggVediska tilläggVertikaltVertikala formerWanchoWarang CitiHuruvida emoji-annotationer kan matchas partiellt eller inteHuruvida emoji-annotationer kan matchas med en partiell sträng istället för den exakta matchningen eller inte.Skriv registercachen till FIL.Skriv systemregistercachen.XKB-ikonen visar layout-strängen och strängen visas med RGBA-värdet. RGBA-värdet kan vara 1. ett färgnamn från X11, 2. ett hexadecimalt värde på formen ”#rrggbb” där ”r”, ”g” och ”b” är hexadecimala siffror för rött, grönt och blått, 3. en RGB-färg på formen ”rgb(r,g,b)” eller 4. en RGBA-färg på formen ”rgba(r,g,b,a)” där ”r”, ”g” och ”b” är antingen heltal i intervallet 0 till 255 eller procentsatser i intervallet 0% till 100%, och ”a” är ett flyttalsvärde i intervallet 0 till 1 för alfa.Yi-ordstammarYi-stavelserYijing-hexagramsymbolerDu kan tilldela en annotering för en favorit-emoji i denna lista.Du kan visa favorit-emoji:erna i emoji-listan om denna lista har några tecken.Zanabazar-kvadratskrift_Om_Lägg till_Verkställ_Avbryt_Stäng_Radera_Ner_OK_Inställningar_Ta bort_Uppdefault:LTRfavorit-emoji-annoteringslista i emoji-dialogenfavorit-emoji-lista i emoji-dialogenspråk: %s byter inmatningsmetoderGöran Uddeborg ibus-1.5.22/po/sr@latin.gmo0000644000000000000000000000614413623751604012344 00000000000000*l;#o#0 ) <GZ)`^ 9M']   |  +   4 C P c q  + a  % , ; "R u  +        % - 3 $? #' )   &($*! "% ...Font and StyleGlobal input method settingsKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutCandidates orientation:Custom font name for language panelEnable or disable:GeneralIBus PreferencesIBus is an intelligent input bus for Linux/Unix.Key code:Keyboard shortcutsModifiers:Next input method:OtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.PreferencesQuitRestartSelect an input methodSelect keyboard shortcut for %sStart ibus on loginUse custom fontUse custom font name for language panel_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRtranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:49+0000 Last-Translator: Miloš Komarčević Language-Team: Serbian Language: sr@latin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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); ...Font i stilIzaberite metodu unosaPrečice tastaturePokretanjeIBus Inteligentna magistrala unosa Matična stranica: https://github.com/ibus/ibus/wiki O programuOrijentacije kandidata:Naziv prilagođenog fonta za jezički panelUključi ili isključi:OpšteIBus postavkeIBus je inteligentna magistrala unosa za Linux/Unix.Kod tastera:Prečice tastatureModifikatori:Sledeća metoda unosa:DrugoPritisnite taster (ili kombinaciju tastera)Pritisnite taster (ili kombinaciju tastera). Prozorče će biti zatvoreno kada se taster otpusti.PostavkeIzađiPokreni ponovoIzaberite metodu unosaIzaberite prečicu tastature za %sPokreni ibus pri prijaviUpotrebi prilagođeni fontKoristi prilagođeni font za jezički panel_O programu_Dodaj_PrimeniO_dustani_Zatvori_Obriši_DoleU _reduPos_tavke_Ukloni_Goredefault:LTRSerbian ibus-1.5.22/po/bn_IN.po0000644000000000000000000031371313623751577011425 00000000000000# Bengali (India) translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2018 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2018-02-20 04:21-0500\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Bengali (India) \n" "Language: bn_IN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 3.9.6\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "ইঞ্জিন পূর্বে লোড করা হবে" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus আরম্ভের সময় ইঞ্জিনগুলি পূর্বে লোড করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "ইঞ্জিনের অনুক্রম" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "ইনপুট পদ্ধতির তালিকায় সংরক্ষিত ইঞ্জিনের অনুক্রম" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME স্যুইচার উইন্ডোর ক্ষেত্রে পপ-অাপ মিলিসেকেন্ড বিলম্ব" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "সংরক্ষিত সংস্করণ নম্বর" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "ল্যাটিন সজ্জা যাতে কোনো ASCII নেই" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "US সজ্জা ল্যাটিন সজ্জাতে প্রয়োগ করা হয়। বৈচিত্র্য বাদ দেওয়া হতে পারে।" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmap ব্যবহার করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "ibus ইঞ্জিনগুলি পাল্টানোর সময়ে, .xmodmap বা .Xmodmap বিদ্যমান থাকলে xmodmap " "চালান।" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "সিস্টেম কি-বোর্ড বিন্যাস প্রয়োগ করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "সিস্টেম কি-বোর্ড (XKB) বিন্যাস প্রয়োগ করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "অ্যাপ্লিকেশন উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "সার্বজনীন ইনপুট পদ্ধতি " #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "সকল অ্যাপ্লিকেশনের মধ্যে একই ইনপুট পদ্ধতি ব্যবহার করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "ডিফল্ট অবস্থায় ইনপুট পদ্ধতি সক্রিয় করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "ইনপুট প্রাপ্ত করার উদ্দেশ্যে অ্যাপ্লিকেশনে ফোকাস করা হলে, ডিফল্ট রূপে ইনপুট পদ্ধতি " "সক্রিয় করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf দ্বারা নেম প্রেফিক্স সংরক্ষণ করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "নেম পরিবর্তন প্রতিরোধ করার জন্য DConf-কির প্রেফিক্স" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "ট্রিগারের শর্টকাট-কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "ইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse এর ক্ষেত্রে শর্টকাট কী ট্রিগার" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "শর্ট-কাট কি সক্রিয় করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "ইনপুট পদ্ধতি চালু করার জন্য ব্যবহৃত শর্ট-কাট কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "শর্ট-কাট কি নিষ্ক্রিয় করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "ইনপুট পদ্ধতি বন্ধ করার জন্য ব্যবহৃত শর্ট-কাট কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "পরবর্তী ইঞ্জিনের জন্য শর্টকাট-কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "তালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "পূর্ববর্তী ইঞ্জিনের শর্টকাট-কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "তালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "স্বয়ংক্রিয়ভাবে আড়াল করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "বিশিষ্টতা প্যানেলের অাচরণ। 0 = দেখাবেন না, 1 = স্বয়ংক্রিয় ভাবে লুকানো, 2 = সর্বদা " "দেখান" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "ভাষার প্যানেলের অবস্থান" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "প্যানেল সর্বদা দেখানো হলে, ইনপুট কার্সার অনুসরণ করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "বিশিষ্টতা প্যানেল দেখাতে মিলিসেকেন্ড" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "ফোকাস-ইন বা বিশিষ্টতা পরিবর্তিত হওয়ার পরে, বিশিষ্টতা প্যানেল দেখাতে মিলিসেকেন্ড।" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "লুক-আপ টেবিলের দিশা" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "লুক-আপ টেবিলের দিশা। 0 (০) = অনুভুমিক, 1 (১) = উল্লম্ব" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "সিস্টেম ট্রের মধ্যে আইকন প্রদর্শন করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB অাইকনের RGBA মান" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "ভাষার প্যানেলের জন্য স্বনির্ধারিত ফন্টের নাম ব্যবহার করা হবে" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "স্বনির্ধারিত ফন্ট" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "ভাষার প্যানেলের জন্য ব্যবহারযোগ্য স্বনির্ধারিত ফন্টের নাম" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse এর ক্ষেত্রে শর্টকাট কী ট্রিগার" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "ইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুন" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "অন্যান্য" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "বাতিল (_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "ঠিক আছে (_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "অারো…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "পরিচিতি" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "বন্ধ করুন (_C)" #: 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 "একটি ইনপুট পদ্ধতি নির্বাচন করুন" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "যোগ করুন (_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "ইনপুট পদ্ধতি" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus সংক্রান্ত পছন্দ" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য শিফ্ট সমেত শর্ট-কাট কি ব্যবহার করুন" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ডেমন বর্তমানে চলছে না। এটি আরম্ভ করা হবে কি?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ডেমনটি %d সেকেন্ডে আরম্ভ করা যায়নি।" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s-র জন্য কি-বোর্ড শর্ট-কাট ধার্য করুন" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "ইনপুট পদ্ধতি পরিবর্তন" #: setup/setup.ui:11 msgid "Horizontal" msgstr "অনুভূমিক" #: setup/setup.ui:14 msgid "Vertical" msgstr "উল্লম্ব" #: setup/setup.ui:25 msgid "Top left corner" msgstr "উপরে বাঁদিকের কোণায়" #: setup/setup.ui:28 msgid "Top right corner" msgstr "উপরে ডানদিকের কোণায়" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "নীচে বাঁদিকের কোণায়" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "নীচে ডানদিকের কোণায়" #: setup/setup.ui:37 msgid "Custom" msgstr "স্বনির্ধারিত" #: setup/setup.ui:48 msgid "Do not show" msgstr "দেখাবেন না" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "স্বয়ংক্রিয় ভাবে লুকান" #: setup/setup.ui:54 msgid "Always" msgstr "সর্বদা" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "তালিকায় উপস্থিত পরবর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" #: setup/setup.ui:115 msgid "Next input method:" msgstr "পরবর্তী ইনপুট পদ্ধতি:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "তালিকায় উপস্থিত পূর্ববর্তী ইনপুট পদ্ধতিতে পরিবর্তনের জন্য প্রযোজ্য শর্ট-কাট কি" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "পূর্ববর্তী ইনপুট পদ্ধতি:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "সক্রিয় অথা নিষ্ক্রিয় করুন:" #: setup/setup.ui:238 msgid "Enable:" msgstr "সক্রিয় করুন:" #: setup/setup.ui:291 msgid "Disable:" msgstr "নিষ্ক্রিয় করুন:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "কি-বোর্ড শর্ট-কাট" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "লুক-আপ টেবিলের মধ্যে প্রযোজ্য বিকল্পগুলির দিশা নির্ধারণ করুন" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "নির্বাচিত বস্তুর দিশা:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ভাষার বার প্রদর্শন ও আড়াল করার উদ্দেশ্যে ibus-র আচরণ নির্ধারণ করুন" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "বিশিষ্টতা প্যানেল দেখান:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "ভাষার প্যানেলের অবস্থান:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "চেকবক্স নির্বাচিত হলে, ভাষার বারের মধ্যে ইনপুট পদ্ধতির নাম প্রদর্শন করা হবে" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "অ্যাপ্লিকেশনের উইন্ডোর মধ্যে প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "অ্যাপ্লিকেশনের উইন্ডোর মধ্যে ইনপুট পদ্ধতির প্রি-এডিট টেক্সট সন্নিবেশ করা হবে" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "ফন্ট ও বিন্যাস" #: setup/setup.ui:579 msgid "General" msgstr "সাধারণ" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকা যোগ করা হবে" #: setup/setup.ui:682 msgid "_Remove" msgstr "মুছে ফেলুন (_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "সক্রিয় ইনপুট পদ্ধতির তালিকা থেকে নির্বাচিত ইনপুট পদ্ধতিটি মুছে ফেলা হবে" #: setup/setup.ui:700 msgid "_Up" msgstr "উপরে (_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় উপরে স্থানান্তর করা হবে" #: setup/setup.ui:718 msgid "_Down" msgstr "নীচে (_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "নির্বাচিত ইনপুট পদ্ধতিটি, সক্রিয় ইনপুট পদ্ধতির তালিকায় নীচে স্থানান্তর করা হবে" #: setup/setup.ui:736 msgid "_About" msgstr "পরিচিতি (_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "নির্বাচিত ইনপুট পদ্ধতি সংক্রান্ত তথ্য প্রদর্শন করা হবে" #: setup/setup.ui:754 msgid "_Preferences" msgstr "পছন্দ (_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "নির্বাচিত ইনপুট পদ্ধতির সেট-আপ প্রদর্শন করা হবে" #: setup/setup.ui:812 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 "" "কীবোর্ড শর্টকাট কী টিপে বা প্যানেল অাইকনে ক্লিক করে, উপরের তালিকায় " "নির্বাচিতটি থেকে সক্রিয় ইনপুট পদ্ধতি পাল্টানো যেতে পারে।" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "ইনপুট পদ্ধতি খোলা ও বন্ধ করার জন্য প্রয়োজনীয় শর্ট-কাট কি নির্ধারণ করুন" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "স্বনির্ধারিত ফন্ট প্রয়োগ করুন:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "কি-বোর্ডের বিন্যাস" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "ইনপুট পদ্ধতির সার্বজনীন বৈশিষ্ট্য" #: setup/setup.ui:1298 msgid "Advanced" msgstr "উন্নত" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "লগ-ইন করার সময় ibus আরম্ভ করা হবে" #: setup/setup.ui:1358 msgid "Startup" msgstr "প্রারম্ভ" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "শুধুমাত্র ইঞ্জিনের নামের তালিকা প্রদর্শন করা হবে" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus-র সাথে সংযোগ করতে ব্যর্থ।\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "ভাষা: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "কোনো ইঞ্জিন নির্ধারিত হয়নি।\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "গ্লোবাল ইঞ্জিন নির্ধারণ করতে ব্যর্থ।\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "গ্লোবাল ইঞ্জিন প্রাপ্ত করতে ব্যর্থ।\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "সিস্টেম রেজিস্ট্রি ক্যাশ পড়ুন।" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "রেজিস্ট্রি ক্যাশ FILE পড়ুন।" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "রেজিস্ট্রি ক্যাশ অবৈধ।\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "সিস্টেম রেজিস্ট্রি ক্যাশ লিখুন।" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "রেজিস্ট্রি ক্যাশ FILE লিখুন।" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "পুনঃসেট…" #: tools/main.vala:399 msgid "Done" msgstr "সম্পন্ন" #: tools/main.vala:444 msgid "Set or get engine" msgstr "ইঞ্জিন সেট করুন বা পান" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon থেকে প্রস্থান করুন" #: tools/main.vala:446 msgid "Show available engines" msgstr "উপলব্ধ ইঞ্জিনগুলি দেখান" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(বাস্তবায়িত নয়)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon বন্ধ করে অাবার চালু করুন" #: tools/main.vala:449 msgid "Show version" msgstr "সংস্করণ দেখান" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "রেজিস্ট্রি ক্যাশের বিষয়বস্তু দেখান" #: tools/main.vala:451 msgid "Create registry cache" msgstr "রেজিস্ট্রি ক্যাশ তৈরি করুন" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon এর D-Bus ঠিকানা প্রিন্ট করুন" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "কনফিগারেশন মানগুলি দেখান" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "কনফিগারেশন মানগুলি পুনঃসেট করুন" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "এই তথ্য দেখান" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "ব্যবহারপ্রণালী: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "কমান্ড:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s একটি অজানা কমান্ড!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "বন্ধ করুন (_C)" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "Linux/Unix-র সাথে ব্যবহারযোগ্য বুদ্ধিবিশিষ্ট ইনপুট বাস হল IBus" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "রুণা ভট্টাচার্য্য (runab@fedoraproject.org)" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "পছন্দ" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "পুনরারম্ভ" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "প্রস্থান" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = স্বনির্ধারিত" #~ msgid "IBus Update" #~ msgstr "IBus অাপডেট" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Super+space হল এখন ডিফল্ট হট-কী।" ibus-1.5.22/po/sr.gmo0000644000000000000000000000726313623751604011217 00000000000000*l;#o#0 ) <GZ)`^ 9M']  *( ) C  , M* #x  S  !( J 'd P   * < )7 0a M  # 3 A KX j x $#' )   &($*! "% ...Font and StyleGlobal input method settingsKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki AboutCandidates orientation:Custom font name for language panelEnable or disable:GeneralIBus PreferencesIBus is an intelligent input bus for Linux/Unix.Key code:Keyboard shortcutsModifiers:Next input method:OtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.PreferencesQuitRestartSelect an input methodSelect keyboard shortcut for %sStart ibus on loginUse custom fontUse custom font name for language panel_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRtranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:49+0000 Last-Translator: Miloš Komarčević Language-Team: Serbian Language: sr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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); ...Фонт и стилИзаберите методу уносаПречице тастатуреПокретањеIBus Интелигентна магистрала уноса Матична страница: https://github.com/ibus/ibus/wiki О програмуОријентације кандидата:Назив прилагођеног фонта за језички панелУкључи или искључи:ОпштеIBus поставкеIBus је интелигентна магистрала уноса за Linux/Unix.Код тастера:Пречице тастатуреМодификатори:Следећа метода уноса:ДругоПритисните тастер (или комбинацију тастера)Притисните тастер (или комбинацију тастера). Прозорче ће бити затворено када се тастер отпусти.ПоставкеИзађиПокрени поновоИзаберите методу уносаИзаберите пречицу тастатуре за %sПокрени ibus при пријавиУпотреби прилагођени фонтКористи прилагођени фонт за језички панел_О програму_Додај_ПримениО_дустани_Затвори_Обриши_ДолеУ _редуПос_тавке_Уклони_Гореdefault:LTRSerbian ibus-1.5.22/po/sq.gmo0000644000000000000000000000200313623751604011201 00000000000000HI P \ ju  u X c o }      AlwaysAuthor: %s Description: HorizontalKeyboard shortcutsLanguage: %s Modifiers:More…Top left cornerTop right cornerVertical_Apply_DeleteProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2017-04-20 11:38-0400 Last-Translator: Sidorela Uku Language-Team: Albanian Language: sq MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Zanata 3.9.6 Plural-Forms: nplurals=2; plural=(n != 1) GjithmonëAutori: %s Përshkrimi: HorizontalShkurtimet e tastierësGjuhë: %s Modifikuesit:Më shumë...Cepi lart majtasCepi lart djathtasVertikal_Apliko_Fshiibus-1.5.22/po/ml.po0000644000000000000000000031632713623751601011040 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: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2014-11-11 09:36+0000\n" "Last-Translator: Ani Peter \n" "Language-Team: Malayalam \n" "Language: ml\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "സംവിധാനങ്ങള്‍ ലഭ്യമാക്കുക" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus ആരംഭിക്കുമ്പോള്‍ സംവിധാനങ്ങള്‍ ലഭ്യമാക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "എഞ്ചിന്‍ ക്രമങ്ങള്‍" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "ഇന്‍പുട്ട് മെഥേഡ് പട്ടികയില്‍ സൂക്ഷിച്ചിട്ടുള്ള എഞ്ചിന്‍ ക്രമങ്ങള്‍" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "ഐഎംഇ സ്വിച്ചര്‍ ജാലകത്തിനുള്ള പോപ്പപ്പ് താമസം മില്ലിസെക്കന്‍ഡുകളില്‍" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "സൂക്ഷിച്ച പതിപ്പു്" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "ആസ്കീ ഇല്ലാത്ത ലാറ്റിന്‍ ശൈലികള്‍" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmap ഉപയോഗിയ്ക്കൂ" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "സിസ്റ്റം കീബോര്‍ഡ് മാതൃക ഉപയോഗിക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "സിസ്റ്റം കീബോര്‍ഡ് (XKB) മാതൃക ഉപയോഗിക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "പ്രീഎഡിറ്റ് ടെക്സ്റ്റ് ചേര്‍ക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "പ്രയോഗത്തിനുള്ള ജാലകത്തില്‍ പ്രീഎഡിറ്റ് ടെക്സ്റ്റ് ചേര്‍ക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "ഗ്ലോബല്‍ ഇന്‍പുട്ട് മെഥേഡ് ഉപയോഗിക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "എല്ലാ പ്രയോഗങ്ങളിലും ഒരേ ഇന്‍പുട്ട് രീതി ഉപയോഗിക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "സ്വതവേ ഇന്‍പുട്ട് മെഥേഡ് സജ്ജമാക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "പ്രയോഗത്തിലേക്കു് ഇന്‍പുട്ട് ചെയ്യുവാന്‍ സാധിയ്ക്കുമ്പോള്‍ സ്വതവേ ഇന്‍പുട്ട് മെഥേഡ് സജ്ജമാക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "എഞ്ചിന്‍ ക്രമങ്ങള്‍" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "ഇന്‍പുട്ട് മെഥേഡ് പട്ടികയില്‍ സൂക്ഷിച്ചിട്ടുള്ള എഞ്ചിന്‍ ക്രമങ്ങള്‍" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "എളുപ്പവഴികള്‍ ട്രിഗര്‍ ചെയ്യുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "ഇന്‍പുട്ട് മെഥേഡ് ഓണ്‍ അല്ലെങ്കില്‍ ഓഫ് ചെയ്യുന്നതിനുള്ള എളുപ്പവളികള്‍ സജ്ജമാക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse-നു് കുറുക്കുവഴികള്‍ ഉപയോഗിയ്ക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "കുറുക്കുവഴി കീകള്‍ പ്രവര്‍ത്തന സജ്ജമാക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "ഇന്‍പുട്ട രീതി ഓണ്‍ ചെയ്യുന്നതിനുള്ള കുറുക്കുവഴി കീകള്‍" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "കുറുക്കുവഴി കീകള്‍ പ്രവര്‍ത്തന രഹിതമാക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "ഇന്‍പുട്ട രീതി ഓഫ് ചെയ്യുന്നതിനുള്ള കുറുക്കുവഴി കീകള്‍" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "അടുത്ത സംവിധാനത്തിനുള്ള എളുപ്പവഴികള്‍" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "പട്ടികയിലുള്ള അടുത്ത ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനുള്ള എളുപ്പവഴി" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "തൊട്ടു് മുമ്പുള്ള സംവിധാനത്തിനുള്ള എളുപ്പവഴികള്‍" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "മുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറുന്നതിനുള്ള എളുപ്പവഴി" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "സ്വയം അദൃശ്യമാക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "ഭാഷയുടെ പാനല്‍ സ്ഥാനം" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "വിശേഷതകളുടെ പാനല്‍ കാണിയ്ക്കുന്നതിനുള്ള സമയം (മില്ലിസെക്കന്‍ഡ്)" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "ലുക്കപ്പ് പട്ടികയുടെ ക്രമീകരണം" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "ലുക്കപ്പ് പട്ടികയുടെ ക്രമീകരണം. 0 = നേരെയുള്ള, 1 = കുറുകയുള്ള" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "സിസ്റ്റം ട്രേയില്‍ ചിഹ്നം കാണിക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "ഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "ഭാഷയുടെ പാനലില്‍ ഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB പ്രതിരൂപത്തിന്റെ RGBA മൂല്ല്യം" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 #, fuzzy msgid "The milliseconds to show the panel icon for a property" msgstr "വിശേഷതകളുടെ പാനല്‍ കാണിയ്ക്കുന്നതിനുള്ള സമയം (മില്ലിസെക്കന്‍ഡ്)" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "സജ്ജമാക്കിയ അക്ഷരസഞ്ചയം ഉപയോഗിക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "ഭാഷ്ക്കുള്ള പാനലില്‍ നിങ്ങള്‍ സജ്ജമാക്കിയ അക്ഷരസഞ്ചയത്തിന്റെ പേരു് ഉപയോഗിക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "അക്ഷരസഞ്ചയം യഥേഷ്ടമാക്കുക:" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "ഭാഷയുടെ പാനലിലേക്കുള്ള അക്ഷരസഞ്ചയത്തിനുള്ള പേരു് സജ്ജമാക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse-നു് കുറുക്കുവഴികള്‍ ഉപയോഗിയ്ക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "ഇന്‍പുട്ട് മെഥേഡ് ഓണ്‍ അല്ലെങ്കില്‍ ഓഫ് ചെയ്യുന്നതിനുള്ള എളുപ്പവളികള്‍ സജ്ജമാക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 #, fuzzy msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse-നു് കുറുക്കുവഴികള്‍ ഉപയോഗിയ്ക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 #, fuzzy msgid "The shortcut keys for turning emoji typing on or off" msgstr "ഇന്‍പുട്ട് മെഥേഡ് ഓണ്‍ അല്ലെങ്കില്‍ ഓഫ് ചെയ്യുന്നതിനുള്ള എളുപ്പവളികള്‍ സജ്ജമാക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 #, fuzzy msgid "Custom font name for emoji characters on emoji dialog" msgstr "ഭാഷയുടെ പാനലിലേക്കുള്ള അക്ഷരസഞ്ചയത്തിനുള്ള പേരു് സജ്ജമാക്കുക" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "മറ്റുള്ളവ" #: setup/emojilang.py:67 #, fuzzy msgid "Select a language" msgstr "ഒരു ഇന്‍പുട്ട് മെഥേഡ് തെരഞ്ഞെടുക്കുക" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_റദ്ദാക്കുക" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_ശരി" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "കൂടുതല്‍..." #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "സംബന്ധിച്ചു്" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" 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 "ഒരു ഇന്‍പുട്ട് മെഥേഡ് തെരഞ്ഞെടുക്കുക" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_ചേര്‍ക്കുക" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "ഇന്‍പുട്ട് മെഥേഡ്" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus മുന്‍ഗണനകള്‍" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "മുമ്പുള്ള ഇന്‍പുട്ട് രീതിയിലേക്കു് പോകുന്നതിനായി shift-നൊപ്പമുള്ള കുറുക്കുവഴി ഉപയോഗിയ്ക്കുക" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ഡെമണ്‍ പ്രവര്‍ത്തനത്തിലില്ല, നിങ്ങള്‍ക്കു് ഇതു് ആരംഭിയ്ക്കണമോ?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ഡെമണ്‍ %d സെക്കന്‍ഡുകളില്‍ ആരംഭിയ്ക്കുവാന്‍ സാധ്യമല്ല" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s-നുള്ള കീബോര്‍ഡ് എളുപ്പവഴി തെരഞ്ഞെടുക്കുക" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "ഇന്‍പുട്ട് രീതികള്‍ തമ്മില്‍ മാറുക" #: setup/setup.ui:11 msgid "Horizontal" msgstr "കുറുകെയുള്ള" #: setup/setup.ui:14 msgid "Vertical" msgstr "നേരെയുള്ള" #: setup/setup.ui:25 msgid "Top left corner" msgstr "മുകളില്‍ ഇടതു് കോണ്‍ " #: setup/setup.ui:28 msgid "Top right corner" msgstr "മുകളില്‍ വലതു് കോണ്‍ " #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "താഴെ ഇടതു് കോണ്‍" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "താഴെ വലതു് കോണ്‍ " #: setup/setup.ui:37 msgid "Custom" msgstr "യഥേഷ്ടം:" #: setup/setup.ui:48 msgid "Do not show" msgstr "ഇനി കാണിയ്ക്കരുതു്" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "സ്വയമായി അദൃശ്യമാക്കുക" #: setup/setup.ui:54 msgid "Always" msgstr "എപ്പോഴും" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" "അടുത്ത ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനായി അടുത്ത സംവിധാനത്തിനുള്ള എളുപ്പവഴി" #: setup/setup.ui:115 msgid "Next input method:" msgstr "അടുത്ത ഇന്‍പുട്ട് മെഥേഡ്:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" "മുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ് സംവിധാനത്തിലേക്ക് മാറ്റുന്നതിനായി തൊട്ടു് മുമ്പുള്ള സംവിധാനത്തിനുള്ള " "എളുപ്പവഴി" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "മുമ്പുള്ള ഇന്‍പുട്ട് മെഥേഡ്:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "സജ്ജമാക്കുക അല്ലെങ്കില്‍ നിര്‍ജ്ജീവമാക്കുക:" #: setup/setup.ui:238 msgid "Enable:" msgstr "പ്രവര്‍ത്തന സജ്ജമാക്കുക: " #: setup/setup.ui:291 msgid "Disable:" msgstr "പ്രവര്‍ത്തന രഹിതമാക്കുക: " #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "കീബോര്‍ഡ് എളുപ്പവഴികള്‍" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "ലുക്കപ്പ് പട്ടികയില്‍ ലഭ്യമായവയുടെ ക്രമീകരണം സജ്ജമാക്കുക" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "ലഭ്യമായവയുടെ ക്രമീകരണങ്ങള്‍:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ibus ഭാഷയുടെ പാനല്‍ കാണിക്കണമോ വേണ്ടയോ എന്നതു് സജ്ജമാക്കുക" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "വിശേഷതയ്ക്കുള്ള പാനല്‍ കാണിയ്ക്കുക:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "ഭാഷയുടെ പാനല്‍ സ്ഥാനം:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "ചെക്ക്ബോക്സ് ചെക്ക് ചെയ്യുമ്പോള്‍ ഭാഷയുടെ പാനലില്‍ ഇന്‍പുട്ട് മെഥേഡിന്റെ പേരു് കാണിക്കുക" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "പ്രയോഗത്തിനുള്ള ജാലകത്തില്‍ പ്രീഎഡിറ്റ് ടെക്സ്റ്റ് ചേര്‍ക്കുക" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "പ്രയോഗത്തിനുള്ള ജാലകത്തില്‍ പ്രീഎഡിറ്റ് ടെക്സ്റ്റിനുള്ള ഇന്‍പുട്ട് രീകി ചേര്‍ക്കുക" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "സജ്ജമാക്കിയ അക്ഷരസഞ്ചയം ഉപയോഗിക്കുക:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "അക്ഷരസഞ്ചയവും രീതിയും" #: setup/setup.ui:579 msgid "General" msgstr "സാധാരണ" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളിലേക്കു് തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് ചേര്‍ക്കുക" #: setup/setup.ui:682 msgid "_Remove" msgstr "_നീക്കം ചെയ്യുക" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് നീക്കം ചെയ്യുക" #: setup/setup.ui:700 msgid "_Up" msgstr "_മുകളിലേക്ക്" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് മുകളിലേക്ക് നീക്കുക" #: setup/setup.ui:718 msgid "_Down" msgstr "_താഴോട്ട്" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "സജ്ജമാക്കിയ ഇന്‍പുട്ട് മെഥേഡുകളില്‍ നിന്നും തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡ് താഴേക്ക് നീക്കുക" #: setup/setup.ui:736 msgid "_About" msgstr "_അണിയറ വിശേഷങ്ങള്‍" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് മെഥേഡിനെപ്പറ്റിയുള്ള വിവരങ്ങള്‍ കാണിക്കുക" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_മുന്‍ഗണനകള്‍ " #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "തെരഞ്ഞെടുത്ത ഇന്‍പുട്ട് രീതിയുടെ സജ്ജീകരണം കാണിയ്ക്കുക" #: setup/setup.ui:812 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 "" #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "ഇന്‍പുട്ട് മെഥേഡ് ഓണ്‍ അല്ലെങ്കില്‍ ഓഫ് ചെയ്യുന്നതിനുള്ള എളുപ്പവളികള്‍ സജ്ജമാക്കുക" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "സജ്ജമാക്കിയ അക്ഷരസഞ്ചയം ഉപയോഗിക്കുക:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "കീബോര്‍ഡ് മാതൃക" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "ഗ്ലോബല്‍ ഇന്‍പുട്ട് മെഥേഡ് ഉപയോഗിക്കുക" #: setup/setup.ui:1298 msgid "Advanced" msgstr "മെച്ചപ്പെട്ടവ" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "പ്രവേശിക്കുമ്പോള്‍ തന്നെ ibus ആരംഭിക്കുക" #: setup/setup.ui:1358 msgid "Startup" msgstr "ആരംഭത്തില്‍" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 #, fuzzy msgid "Vertical Forms" msgstr "നേരെയുള്ള" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "എഞ്ചിന്‍ പേരു് മാത്രം ലഭ്യമാക്കുക" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus-ലേക്കു് കണക്ട് ചെയ്യുവാന്‍ സാധ്യമല്ല.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "ഭാഷ: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "എഞ്ചിന്‍ സജ്ജമല്ല.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "ഗ്ലോബല്‍ എഞ്ചിന്‍ സജ്ജമാക്കുന്നതു് പരാജയപ്പെട്ടു.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "ഗ്ലോബല്‍ എഞ്ചിന്‍ ലഭ്യമാക്കുന്നതു് പരാജയപ്പെട്ടു.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "സിസ്റ്റം രജിസ്ട്രി കാഷ് ലഭ്യമാക്കുക." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "രജിസ്ട്രി ക്യാഷ് ഫയല്‍ ലഭ്യമാക്കുക." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "രജിസ്ട്രി ക്യാഷ് അസാധു.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "സിസ്റ്റം രജിസ്ട്രി ക്യാഷിലേക്കു് സൂക്ഷിയ്ക്കുക." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "രജിസ്ട്രി ക്യാഷ് ഫയലിലേക്കു് സൂക്ഷിയ്ക്കുക." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "വീണ്ടും സജ്ജമാക്കുന്നു..." #: tools/main.vala:399 msgid "Done" msgstr "പൂര്‍ത്തിയായി" #: tools/main.vala:444 msgid "Set or get engine" msgstr "എഞ്ചിന്‍ സജ്ജമാക്കുക അല്ലെങ്കില്‍ ലഭ്യമാക്കുക" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon-ല്‍ നിന്നും പുറത്തു് കടക്കുക" #: tools/main.vala:446 msgid "Show available engines" msgstr "ലഭ്യമായ എഞ്ചിനുകള്‍ കാണിയ്ക്കുക" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(ലഭ്യമാക്കിയിട്ടില്ല)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon വീണ്ടും ആരംഭിയ്ക്കുക" #: tools/main.vala:449 msgid "Show version" msgstr "പതിപ്പു് കാണിയ്ക്കുക" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "രജിസ്ട്രി ക്യാഷിന്റെ ഉള്ളടക്കം കാണിയ്ക്കുക" #: tools/main.vala:451 msgid "Create registry cache" msgstr "രജിസ്ട്രി ക്യാഷ് തയ്യാറാക്കുക" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon-ന്റെ ഡി-ബസ് വിലാസം പ്രിന്റ് ചെയ്യുക" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "ക്രമീകരണ മൂല്ല്യങ്ങള്‍ കാണിയ്ക്കുക" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "ക്രമീകരണ മൂല്ല്യങ്ങള്‍ വീണ്ടും സജ്ജമാക്കുക" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "ഈ വിവരം കാണിയ്ക്കുക" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "ഉപയോഗിയ്ക്കേണ്ട വിധം: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "കമാന്‍ഡുകള്‍:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s ഒരു അപചിരിത കമാന്‍ഡാകുന്നു!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 #, fuzzy msgid "Others" msgstr "മറ്റുള്ളവ" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "_അടയ്ക്കുക" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, fuzzy, c-format msgid "Description: %s" msgstr "വിവരണം:\n" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 #, fuzzy msgid "IBus Panel" msgstr "IBus പരിഷ്കരണം" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "ലിനക്സ്/യുണിക്സിനുള്ള ഇന്റലിജന്റ് ഇന്‍പുട്ട് ബസാണു് IBus." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "അനി പീറ്റര്‍ " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "മുന്‍ഗണനകള്‍ " #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "വീണ്ടും ആരംഭിക്കുക" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "പുറത്ത് കടക്കുക" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = യഥേഷ്ടം" #~ msgid "Super+space is now the default hotkey." #~ msgstr "ഇപ്പോള്‍ സ്വതവേയുള്ള എളുപ്പവഴി Super+space ആകുന്നു." ibus-1.5.22/po/hu.po0000644000000000000000000031450313623751600011035 00000000000000# Hungarian translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2020 Takao Fujiwara # 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 # Meskó Balázs , 2017. #zanata # Meskó Balázs , 2018. #zanata # Meskó Balázs , 2019. #zanata # Balázs Meskó , 2020. msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2020-01-05 18:49+0000\n" "Last-Translator: Balázs Meskó \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.9.1\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Alrendszerek előtöltése" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Alrendszerek előtöltése az ibus indításakor" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Alrendszerek sorrendje" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Mentett alrendszerek sorrendje a beviteli módok listájában" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Felugró ablak késleltetése az IME váltóablaknál" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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ésleltetését az IME váltóablaknál. Az " "alapértelmezett 400.0 = Ablak azonnali megjelenítése. 0 < Késleltetés " "ezredmásodpercben. 0 > Nem jeleníti meg az ablakot, és átvált a következő/" "előző alrendszerre." #: data/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Mentett verziószám" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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 "" "A mentett verziószám arra lesz használva, hogy ellenőrizve legyen az " "előzőleg telepített ibus, és az ibus jelenlegi verziója közti különbség." #: data/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Latin kiosztások, amelyekben nincs ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "USA kiosztás a Latin kiosztások mögé fűzve. A változat elhagyható." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Xmodmap használata" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "Az xmodmap futtatása, ha létezik .xmodmap vagy .Xmodmap fájl az ibus " "alrendszerváltáskor." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Rendszer billentyűzetkiosztásának használata" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "A rendszer billentyűzetkiosztásának (XKB) használata" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Előszerkesztett szöveg beágyazása" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Előszerkesztett szöveg beágyazása az alkalmazásablakba" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Globális beviteli mód használata" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Azonos beviteli mód megosztása minden alkalmazás közt" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Beviteli mód engedélyezése alapértelmezésben" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 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/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "A DConf megőrzi a név előtagokat" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "A DConf előtaggal látja el a kulcsokat, hogy ne legyenek névkonverziók" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Gyorsbillentyűk aktiválása" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Gyorsbillentyűk a beviteli mód ki- vagy bekapcsolásához" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Aktiválja a gyorsbillentyűket a gtk_accelerator_parse részére" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Gyorsbillentyűk engedélyezése" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "A beviteli mód bekapcsolásához használt gyorsbillentyűk" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Gyorsbillentyűk letiltása" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "A beviteli mód kikapcsolásához használt gyorsbillentyűk" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Következő alrendszer gyorsbillentyűi" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 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ásához használt gyorsbillentyű" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Előző alrendszer gyorsbillentyűi" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "A lista előző beviteli módjára váltásához használt gyorsbillentyű" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Automatikus elrejtés" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "A tulajdonságpanel viselkedése. 0 = Nem jelenik meg, 1 = Automatikus " "elrejtés, 2 = Mindig látszik" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Nyelvi panel pozíciója" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "A bemeneti kurzor követése, ha a panel mindig megjelenik" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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 "" "Ha igaz, akkor a panel követi a bemeneti kurzort abban az esetben, ha a " "panel mindig megjelenik. Ha hamis, akkor a panel egy fix helyen jelenik meg." #: data/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "A tulajdonságpanel megjelenítési ideje ezredmásodpercben" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Hány ezredmásodpercig jelenjen meg a tulajdonságpanel a fókuszálás, vagy a " "tulajdonságok változása után." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Kikeresési tábla tájolása" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 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/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Ikon megjelenítése az értesítési területen" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Beviteli mód nevének megjelenítése" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Beviteli mód nevének megjelenítése a nyelvi eszköztáron" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "Az XKB ikon RGBA értéke" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage values in the range 0% to 100%, and 'a' is a floating point value " "in the range 0 to 1 of the alpha." msgstr "" "Az XKB ikon a kiosztási karakterláncot mutatja, és a karakterlánc RGBA " "értékként jelenik meg. Az RGA érték a következők egyike lehet. 1. egy X11 " "színnév, 2. egy hexadecimális érték „#rrggbb” formában, ahol az „r”, „g” és " "„b” a vörös, zöld és kék színek értékei hexadecimális számjegyekkel, 3. egy " "RGB szín „rgb(r,g,b,a)” vagy 4. egy RGBA szín „rgba(r,g,b,a)” alakban, ahol " "az „r”, „g” és „b” egész számok 0 és 255 között, vagy százalékos értékek 0% " "és 100% között, az „a” pedig az alfa lebegőpontos értéke 0 és 1 között." #: data/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "A panel ikon megjelenítési ideje egy tulajdonsághoz ezredmásodpercben" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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 "" "A panel ikon megjelenítési ideje egy tulajdonsághoz ezredmásodpercben, ha az " "alrendszerek között vált, és ha a tulajdonság az icon-prop-key értékeként " "van megadva az IBusEngineDesc-ben. Ha az érték 0, akkor nincs késleltetés, " "és a tulajdonságikon azonnal megjelenik." #: data/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Egyéni betűkészlet használata" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Egyéni betűkészlet használata a nyelv panelen" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Egyéni betűkészlet" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Egyéni betűkészlet neve a nyelv panelhez" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Unicode gyorsbillentyű a gtk_accelerator_parse részére" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "Gyorsbillentyű az Unicode bevitel ki- vagy bekapcsolásához" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Emodzsi gyorsbillentyűket a gtk_accelerator_parse részére" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "Gyorsbillentyűk az emodzsi bevitel ki- vagy bekapcsolásához" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "Egyéni emodzsi betűkészlet neve az emodzsi párbeszédablakon" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Emodzsi szótár alapértelmezett neve" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Válassza ki az emodzsi párbeszédablakon megjelenő emodzsi szótárak " "alapértelmezett nyelvét. A $lang érték ebbe lesz behelyettesítve: /usr/share/" "ibus/dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "kedvenc emodzsik listája az emodzsi párbeszédablakon" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Megjelenítheti a kedvenc emodzsijait a listában, ha vannak ilyen karakterek." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "kedvenc emodzsik annotációinak listája az emodzsi párbeszédablakon" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "Annotációkat adhat hozzá a kedvenc, listában szereplő emodzsijainak." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "Az emodzsi annotációkra lehet-e részlegesen illeszteni" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Illeszthetőek-e részleges karakterláncokra az emodzsi annotációk, a pontos " "egyezés helyett." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Illesztés a megadott hosszúságú emodzsi annotációkra" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Az emodzsi annotációk részleges illesztése, a pontos egyezés helyett, ha " "több mint ennyi karakter lett megadva." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "Válasszon egy feltételt az emodzsi annotációk részleges illesztéséhez" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Válasszon egyet a következő feltételek közül, az emodzsi annotációk " "részleges illesztéséhez: 0 == szó elejére illesztés, 1 == szó végére " "illesztés, 2 == tartalmazási illesztés" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Emodzsi adatok betöltése indításkor" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Emodzsi adatok betöltése indításkor, ha igaz. Körülbelül 10 MB memória " "szükséges az adatok betöltéséhez. Ha hamis, akkor az emodzsi adatok a " "párbeszédablak megnyitásakor lesznek betöltve." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Unicode adatok betöltése indításkor" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Unicode adatok betöltése indításkor, ha igaz. Körülbelül 15 MB memória " "szükséges az adatok betöltéséhez. Ha hamis, akkor a Unicode adatok a " "párbeszédablak megnyitásakor lesznek betöltve. A Unicode adatok mindenképpen " "az emodzsi adatok után lesznek betöltve, akkor is ha igaz." #: 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:209 msgid "Other" msgstr "Egyéb" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Válasszon nyelvet" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Mégse" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_OK" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Tovább…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Névjegy" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Bezárás" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Nyelv: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Billentyűzetkiosztás: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Szerző: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Leírás:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Válasszon beviteli módot" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "Hozzá_adás" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Beviteli mód" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Bill." #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus beállítások" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "IBus beállítások megadása" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Gyorsbillentyűk" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Billentyűkód:" #: setup/keyboardshortcut.py:82 msgid "Modifiers:" msgstr "Módosítók:" #. apply button #: setup/keyboardshortcut.py:130 msgid "_Apply" msgstr "_Alkalmaz" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Törlés" #: 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 "" "Nyomjon meg egy billentyűt (vagy billentyűkombinációt).\n" "Az ablak a billentyű felengedésekor bezáródik." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Nyomjon meg egy billentyűt (vagy billentyűkombinációt)" #: setup/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "Használja a Shift billentyűt a gyors visszaváltáshoz a korábbi beviteli módra" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "Az IBus démon nem fut. Elindítja?" #: setup/main.py:536 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 "" "Az IBus elindult. Ha nem tudja használni az IBust, adja a következő sorokat " "a $HOME/.bashrc fájlhoz; majd jelentkezzen be újra.\n" " export GTK_IM_MODULE=ibus\n" " export XMODIFIERS=@im=ibus\n" " export QT_IM_MODULE=ibus" #. Translators: %d == 5 currently #: setup/main.py:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "Az IBus démon nem indítható el %d másodpercen belül" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s gyorsbillentyűjének kiválasztása" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "beviteli módok váltása" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Vízszintes" #: setup/setup.ui:14 msgid "Vertical" msgstr "Függőleges" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Bal felső sarok" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Jobb felső sarok" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Bal alsó sarok" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Jobb alsó sarok" #: setup/setup.ui:37 msgid "Custom" msgstr "Egyéni" #: setup/setup.ui:48 msgid "Do not show" msgstr "Ne mutassa" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Automatikus elrejtés" #: setup/setup.ui:54 msgid "Always" msgstr "Mindig" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Következő beviteli mód:" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Előző beviteli mód:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "…" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Engedélyezés vagy tiltás:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Engedélyezés:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Letiltás:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Gyorsbillentyűk" #: setup/setup.ui:374 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:376 msgid "Candidates orientation:" msgstr "Jelöltek tájolása:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" "Az ibus viselkedésének megadása, hogyan jelenítse meg vagy rejtse el a " "nyelvi sávot" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Tulajdonságpanel megjelenítése:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Nyelvi panel elhelyezése:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "" "A beviteli mód nevének megjelenítése a nyelvi eszköztáron, ha be van jelölve " "a mező" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "Előszerkesztett szöveg beágyazása az alkalmazás ablakába" #: setup/setup.ui:513 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:527 msgid "Use custom font:" msgstr "Egyéni betűkészlet használata:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Betűkészlet és stílus" #: setup/setup.ui:579 msgid "General" msgstr "Általános" #: setup/setup.ui:671 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:682 msgid "_Remove" msgstr "_Eltávolítás" #: setup/setup.ui:689 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:700 msgid "_Up" msgstr "_Fel" #: setup/setup.ui:707 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:718 msgid "_Down" msgstr "_Le" #: setup/setup.ui:725 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:736 msgid "_About" msgstr "_Névjegy" #: setup/setup.ui:743 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:754 msgid "_Preferences" msgstr "B_eállítások" #: setup/setup.ui:761 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:812 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 "" "Az aktív beviteli mód a fenti listában szereplők közül állítható " "be, a gyorsbillentyűk megnyomásával, vagy a panel ikonra kattintva." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" "Gyorsbillentyű az emodzsi annotációk vagy a Unicode nevek átalakításának " "engedélyezéséhez" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Emodzsi annotáció:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "Gyorsbillentyű az Unicode kódpont-átalakítások engedélyezéséhez" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Unicode kódpont:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" "Unicode jelöltekből álló betűkészlet beállítása az emodzsi párbeszédablakon" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Unicode betűkészlet:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Emodzsi annotációk nyelvének beállítása az emodzsi párbeszédablakon" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Emodzsi annotációk nyelve:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Az emodzsi annotációk részleges illesztése a következő feltétel szerint, ha " "több mint ennyi karakter lett megadva:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Ha az emodzsi annotációkat részleges szövegre kell illeszteni, pontos " "egyezés helyett" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Előtag illeszkedés" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Utótag illeszkedés" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Tartalmazó illeszkedés" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emodzsi" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Billentyűzetkiosztás" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Globális bevitelimód-beállítások" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Speciális" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "Az intelligens beviteli busz\n" "Honlap: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Az IBus indítása bejelentkezéskor" #: setup/setup.ui:1358 msgid "Startup" msgstr "Indulás" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Tevékenységek" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Állatok és természet" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Összetevő" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Zászlók" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Étel és ital" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Tárgyak" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "Emberek és test" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "Hangulatjelek és érzelmek" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Szimbólumok" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Utazás és helyek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Alap latin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Latin-1 kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Latin bővített – A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Latin bővített – B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "IPA kiegészítések" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Térköz módosító betűk" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Egyesítő diakritikus jelek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Görög és kopt" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Cirill" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Cirill kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Örmény" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Héber" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Arab" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Szír" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Arab kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "NKo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Szamaritánus" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandeus" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Szír kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Arab bővített – A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Dévanágari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengáli" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmukhi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Gudzsaráti" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Orija" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tamil" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Telugu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Kannada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malajálam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Szingaléz" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Thai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Lao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tibeti" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Burmai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Grúz" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Hangul jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Etióp" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Etióp kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Cseroki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Egyesített kanadai őslakos szótagírás" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Rúnák" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Tagalog" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunoo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buhid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Tagbanwa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Khmer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Mongol" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Egyesített kanadai őslakos szótagírás bővített" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai Le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Új Tai Lü" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Khmer szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Buginéz" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Tai Tham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Egyesítő diakritikus jelek bővített" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Balinéz" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Szundai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepcha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ol Chiki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Cirill bővített – C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "Grúz bővített" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Szundai kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Védikus bővítések" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Fonetikus bővítések" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Fonetikus bővítések kiegészítése" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Egyesítő diakritikus jelek kiegészítése" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Latin további bővített" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Görög bővített" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Általános központozás" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Alsó és felső index" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Pénznemek szimbólumai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Egyesítő diakritikus jelek szimbólumokhoz" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Betűszerű szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Számalakok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Nyilak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Matematikai operátorok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Egyéb műszaki jelek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Vezérlőkarakterek jelei" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Optikai karakterfelismerés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Közrezárt alfanumerikus karakterek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Dobozrajzolás" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Blokkelemek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Geometriai alakzatok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Egyéb szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Ábrácskák" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Kiegészítő matematikai szimbólumok – A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Kiegészítő nyilak A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Braille-jelek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Kiegészítő nyilak B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Kiegészítő matematikai szimbólumok – B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Kiegészítő matematikai operátorok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Egyéb szimbólumok és nyilak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Glagolita" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Latin bővített – C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Kopt" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Grúz kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Etióp bővített" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Cirill bővített – A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Központozási kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "CJK radikális kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Kang-hszi radikálisok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Képírásjel leíró karakterek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "CJK szimbólumok és központozás" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Hangul jamo kompatibilitás" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Bopomofo bővített" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "CJK vonalak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Katakana fonetikus bővítések" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Közrezárt CJK betűk és hónapok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "CJK kompatibilitás" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "CJK egyesített képírásjel kiegészítés – F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Ji csing hexagram szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "CJK egyesített képírásjelek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Yi szótagok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Yi radikálisok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Vai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Cirill bővített – B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Módosító hangjelek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Latin bővített – D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Syloti Nagri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Általános indiai számalakok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Phags-pa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurashtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Dévanágari bővített" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Hangul jamo bővített – A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Jávai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Burmai bővített – B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Cham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Bburmai bővített – A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tai Viet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Meetei Mayek kiegészítések" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Etióp bővített – A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Latin bővített – E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Cseroki kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Hangul szótagok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Hangul jamo bővített – B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Felső pótlások" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Felső pótlások személyes használatra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Alsó pótlások" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Személyes használatra kijelölt tartomány" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "CJK kompatibilitási képírásjelek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Alfabetikus megjelenítési alakok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Arab megjelenítési alakok – A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Változatválasztók" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Függőleges alakok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Egyesítő féljelek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "CJK kompatibilitási alakok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Kisalakú változatok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Arab megjelenítési alakok – B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Fél- és teljes szélességű alakok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Különleges" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Lineáris B szótagírás" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Lineáris B képírásjelek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Égei számok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Ógörög számok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Ősi szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Phaisztoszi korong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Lükiai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Kariai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Kopt epact számok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Régi itáliai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gót" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Régi permi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ugariti" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Óperzsa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Deseret" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Shaw-féle ábécé" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmanya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Elbasan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Kaukázusi albaniai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Lineáris A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Ciprióta szótagírás" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "Birodalmi arámi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Palmürai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nabateus" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Hatran" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Föníciai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lüd" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Meroita hieroglifák" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Meroita dőlt" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Kharosti" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Régi déli arab" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Régi északi arab" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Manicheai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Avesztán" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Feliratos pártus" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Feliratos pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Zsoltáros pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Régi török" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Székely–magyar rovásírás" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "Hanifi rohingja" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Rumi számszimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "Régi szogd" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "Szogd" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "Elámi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Bráhmi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaithi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Szora szompeng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Csakma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Mahajani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Sharada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Szinhala archaikus számok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Khodzski" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Multani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Khudawadi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Grantha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Newa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Tirhuta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Sziddham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Modi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Mongol kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Dogra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Warang Citi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "Nandinágari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Zanabazar-féle négyzet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Szojombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Masaram-féle gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Gunjalai gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Makasar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "Tamil kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Ékírás" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Ékírásos szimbólumok és írásjelek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Kora dinasztiai ékírás" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Egyiptomi hieroglifák" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "Egyiptomi hieroglifa formátumvezérlők" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Anatóliai hieroglifák" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Bamum kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mro" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Bassa Vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Pahawh Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Medefaidrin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Miao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Ideografikus szimbólumok és írásjelek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Tangut" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Tangut komponensek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Kana kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Kana bővített – A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "Kis kana bővítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Nü-su" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Duployan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Gyorsírás formátum vezérlők" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Bizánci zenei szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Zenei szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Ógörög zenei jelölés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "Maja számjegyek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Tai Xuan Jing szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Számolórúd számjegyek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Matematikai alfanumerikus szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Sutton-féle jelnyelv" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Glagolita kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "Nyiakeng Puachue Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "Wancho" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Mende Kikakui" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "Indiai siyaq számjegyek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "Oszmán siyaq számjegyek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Arab matematikai ábécészimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Madzsong kövek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Dominók" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Játékkártyák" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Közrezárt alfanumerikus kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Közrezárt képírásjel kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Egyéb szimbólumok és piktogramok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Emotikonok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Díszítő apróságok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Közlekedési és térkép szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Alkímiai szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Geometriai alakzatok bővített" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Kiegészítő nyilak C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Kiegészítő szimbólumok és piktogramok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "Sakk szimbólumok" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "Szimbólumok és piktogramok bővített – A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "CJK egyesített képírásjel kiegészítés – B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "CJK egyesített képírásjel kiegészítés – C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "CJK egyesített képírásjel kiegészítés – D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "CJK egyesített képírásjel kiegészítés – E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "CJK egyesített képírásjel kiegészítés – F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "CJK kompatibilitási képírásjel kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Címkék" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Variációválasztó kiegészítés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Kiegészítő személyes használatú terület A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Kiegészítő személyes használatú terület B" #: tools/main.vala:51 msgid "List engine name only" msgstr "Csak az alrendszerek nevének listázása" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Nem lehet csatlakozni a IBushoz.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "nyelv: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Nincs alrendszer beállítva.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Nem sikerült az általános alrendszer beállítása.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Nem sikerült az általános alrendszer lekérése.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "A rendszer regisztrációs gyorsítótárának olvasása." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "A rendszer regisztrációs FÁJLjának olvasása." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "A regisztrációs gyorsítótár érvénytelen.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "A rendszer regisztrációs gyorsítótárának írása." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "A rendszer regisztrációs FÁJLjának írása." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "A motor séma útvonalainak használata az ibus mag helyett, mely vesszővel " "elválasztott értékekből állhat." #: tools/main.vala:381 msgid "Resetting…" msgstr "Visszaállítás…" #: tools/main.vala:399 msgid "Done" msgstr "Kész" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Alrendszer beállítása vagy lekérése" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Kilépés az ibus-daemon-ból" #: tools/main.vala:446 msgid "Show available engines" msgstr "Elérhető alrendszerek megjelenítése" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Nincs megvalósítva)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Az ibus-daemon újraindítása" #: tools/main.vala:449 msgid "Show version" msgstr "Verzió megjelenítése" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "A regisztrációs gyorsítótár tartalmának megjelenítése" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Regisztrációs gyorsítótár létrehozása" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Az ibus-daemon D-Bus címének kiírása" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Beállítási értékek megjelenítése" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "A beállítási értékek visszaállítása" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "A párbeszédablakon lévő emodzsi vágólapra mentése " #: tools/main.vala:458 msgid "Show this information" msgstr "Ezen információk megjelenítése" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Használat: %s PARANCS [KAPCSOLÓK…]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Parancsok:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s: ismeretlen parancs!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Kedvencek" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Többi" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Unicode választás megnyitása" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Emodzsi választás visszahozása" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Page Down" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Page Up" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Emodzsi változatok megjelenítése" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Bezárás" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Menü" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Kattintson a figyelmeztető üzenet megtekintéséhez" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Unicode szótár betöltése:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Kódpont: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Vannak emodzsi változatai" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Leírás: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Nincs" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Annotációk: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Név: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Álnév: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Emodzsi választás" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Unicode választás" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "Nem sikerült lekérni a jelenlegi szöveges alkalmazást. Hozza újra fókuszba " "az alkalmazást. Például nyomja meg többször az Esc gombot az emodzsi beírási " "módból kilépéshez, kattintson az asztalra, majd újra a szöveges alkalmazásra." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Emodzsi kiválasztás megszakítva." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Emodzsi vágólapra másolva." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "„BETŰKÉSZLET” az emodzsiválasztó párbeszédablakon" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "BETŰKÉSZLET" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "„NYELV” az emodzsi párbeszédablak annotációhoz. Például „en”" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "NYELV" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Az emodzsi annotációkra lehet részlegesen illeszteni" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Illesztés a megadott egész számmal egyező hosszra" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Illesztés a megadott egész szám feltételével" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus panel" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "Az IBus egy intelligens beviteli busz Linux/Unix rendszerekhez." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "Zoltan Hoppar , 2012.\n" "Meskó Balázs , 2017.\n" "\n" "Launchpad 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:1118 msgid "Preferences" msgstr "Beállítások" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Újraindítás" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/ca.po0000644000000000000000000031334513623751577011024 00000000000000# Catalan translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2020 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # Robert Antoni Buj Gelonch , 2017. #zanata # Robert Antoni Buj Gelonch , 2018. #zanata # fujiwara , 2018. #zanata # Antoni Bella Pérez , 2020. msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2020-01-09 22:01+0000\n" "Last-Translator: Antoni Bella Pérez \n" "Language-Team: Catalan \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Weblate 3.9.1\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Precarrega els motors" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Precarrega els motors durant l'inici de l'IBus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Ordre dels motors" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Ordre dels motors desats a la llista dels mètodes d'entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 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/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Número de la versió desada" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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'usarà per comprovar la diferència entre la " "versió anterior i l'actual de l'IBus." #: data/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Les disposicions llatines no tenen ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 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/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Usa xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "Executa xmodmap si existeix .xmodmap o .Xmodmap quan es commutin els motors " "de l'IBus." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Usa la disposició de teclat del sistema" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Usa la disposició de teclat del sistema (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Incrusta el text pre-editat" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Incrusta el text pre-editat a la finestra de l'aplicació" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Usa el mètode d'entrada global" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Comparteix el mateix mètode d'entrada amb totes les aplicacions" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Habilita el mètode d'entrada predeterminat" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "Habilita el mètode d'entrada predeterminat quan l'aplicació obté el focus de " "l'entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf preserva els prefixes" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Prefixos de tecles DConf per aturar la conversió del nom" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Drecera de teclat per a l'activador" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "La drecera de teclat per habilitar o inhabilitar el mètode d'entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Drecera de teclat de l'activador per gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Habilita les dreceres de teclat" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "La drecera de teclat per activar el mètode d'entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Inhabilita les dreceres de teclat" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "La drecera de teclat per desactivar el mètode d'entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Drecera de teclat del motor següent" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "" "La drecera de teclat per commutar al següent mètode d'entrada de la llista" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Drecera de teclat del motor anterior" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "" "La drecera de teclat per commutar al mètode d'entrada anterior de la llista" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Oculta automàticament" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 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/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Posició del quadre d'idiomes" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 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/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Mil·lisegons per mostrar el quadre de propietats" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 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/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orientació de la taula de cerca" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientació de la taula de cerca. 0 = Horitzontal, 1 = Vertical" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Mostra la icona a la safata del sistema" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Mostra el nom del mètode d'entrada" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Mostra el nom del mètode d'entrada a la barra d'idioma" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "Valor RGBA de la icona XKB" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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 en l'interval de 0 a 255 o valors de percentatge en " "l'interval de 0% a 100%, i «a» té un valor en punt flotant en l'interval de " "0 a 1 per l'alfa." #: data/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "Els mil·lisegons per mostrar el quadre d'icona amb una propietat" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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 "" "Els mil·lisegons per mostrar el quadre d'icona des de la icona del motor, en " "una icona de propietat, sempre que s'activin els motors, si la propietat " "s'especifica amb el valor icon-prop-key a IBusEngineDesc. Si el valor és 0, " "no hi ha retard i la icona de propietat es mostra automàticament." #: data/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Usa un tipus de lletra personalitzat" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Usa un tipus de lletra personalitzat per al quadre d'idiomes" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Tipus de lletra personalitzat" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Tipus de lletra personalitzat per al quadre d'idiomes" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Drecera de teclat d'Unicode per gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "La drecera de teclat per activar o desactivar el tecleig d'Unicode" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Drecera de teclat d'emojis per gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "La drecera de teclat per activar o desactivar el tecleig d'emojis" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" "El nom del tipus de lletra personalitzat per als caràcters emoji al diàleg " "dels emojis" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Idioma predeterminat per al diccionari emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Trieu l'idioma predeterminat per ls diccionaris dels emojis al diàleg " "d'emojis. El valor $lang s'aplica a /usr/share/ibus/dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "llista d'emojis preferits al diàleg dels emojis" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Podeu visualitzar els emojis preferits a la llista d'emojis, si aquesta " "llista té qualsevol caràcter." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "llista de les anotacions emoji preferides al diàleg dels emojis" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "En aquesta llista podeu assignar una anotació per a un emoji preferit." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "Si les anotacions emoji poden coincidir o no parcialment" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Si les anotacions emoji poden coincidir o no amb una cadena parcial en " "comptes de la coincidència exacta." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Coincidència de les anotacions emoji amb la llargada especificada" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Coincidència parcial de les anotacions emoji amb el nombre de caràcters " "especificat en comptes de la coincidència exacta." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "Trieu una condició per coincidir parcialment amb les anotacions emoji" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Trieu una de les condicions següents per coincidir parcialment amb les " "anotacions emoji: 0 == Coincidència del prefix, 1 == Coincidència del sufix, " "2 == La coincidència conté" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Carrega les dades emoji en el moment de l'inici" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Si és cert, es carregaran les dades emoji al moment de l'inici. Caldran uns " "10 MB de memòria per a carregar les dades. Si és fals, es carregaran les " "dades emoji quan s'obri el diàleg emoji al començament." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Carrega les dades Unicode en el moment de l'inici" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Si és cert, es carregaran les dades Unicode al moment de l'inici. Caldran " "uns 15 MB de memòria per a carregar les dades. Si és fals, es carregaran les " "dades Unicode quan s'obri el diàleg emoji al començament." #: 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:209 msgid "Other" msgstr "Altres" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Selecciona un idioma" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Cancel·la" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "D'ac_ord" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Més…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Quant a" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Tanca" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Idioma: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Disposició del teclat: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Autor: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Descripció:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Seleccioneu un mètode d'entrada" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Afegeix" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Mètode d'entrada" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Preferències de l'IBus" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Establiu les preferències de l'IBus" #: setup/keyboardshortcut.py:55 msgid "Keyboard shortcuts" msgstr "Dreceres de teclat" #: setup/keyboardshortcut.py:67 msgid "Key code:" msgstr "Codi de la tecla:" #: 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "Usa la drecera de teclat amb la tecla de majúscules per canviar a l'anterior " "mètode d'entrada" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "No s'està executant el dimoni de l'IBus. El voleu iniciar?" #: setup/main.py:536 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 l'IBus! Si no podeu usar-lo, 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "El dimoni de l'IBus no s'ha pogut iniciar en %d segons" #: setup/main.py:562 #, 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:564 msgid "switching input methods" msgstr "Commutació dels mètodes d'entrada" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horitzontal" #: setup/setup.ui:14 msgid "Vertical" msgstr "Vertical" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Cantonada superior esquerra" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Cantonada superior dreta" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Cantonada inferior esquerra" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Cantonada inferior dreta" #: setup/setup.ui:37 msgid "Custom" msgstr "Personalitzat" #: setup/setup.ui:48 msgid "Do not show" msgstr "No mostrar" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Ocultar automàticament" #: setup/setup.ui:54 msgid "Always" msgstr "Sempre" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "" "La drecera de teclat per commutar al següent mètode d'entrada de la llista" #: setup/setup.ui:115 msgid "Next input method:" msgstr "Següent mètode d'entrada:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "" "La drecera de teclat per canviar al mètode d'entrada anterior de la llista" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "Mètode d'entrada anterior:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Habilita o inhabilita:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Habilita:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Inhabilita:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Dreceres de teclat" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Estableix l'orientació dels candidats a la taula de cerca" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Orientació dels candidats:" #: setup/setup.ui:407 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:409 msgid "Show property panel:" msgstr "Mostra el quadre de propietats:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Posició del quadre d'idiomes:" #: setup/setup.ui:494 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:508 msgid "Embed preedit text in application window" msgstr "Incrusta el text pre-editat en la finestra de l'aplicació" #: setup/setup.ui:513 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:527 msgid "Use custom font:" msgstr "Usa el tipus de lletra personalitzat:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Tipus de lletra i estil" #: setup/setup.ui:579 msgid "General" msgstr "General" #: setup/setup.ui:671 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:682 msgid "_Remove" msgstr "Sup_rimeix" #: setup/setup.ui:689 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:700 msgid "_Up" msgstr "A_munt" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "Mou amunt el mètode d'entrada seleccionat en la llista de mètodes habilitats" #: setup/setup.ui:718 msgid "_Down" msgstr "A_vall" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" "Mou avall el mètode d'entrada seleccionat en els mètodes d'entrada habilitats" #: setup/setup.ui:736 msgid "_About" msgstr "_Quant a" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Mostra la informació del mètode d'entrada seleccionat" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Preferències" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Mostra la configuració del mètode d'entrada seleccionat" #: setup/setup.ui:812 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 en fer clic a la icona " "del quadre." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" "La drecera de teclat per habilitar les conversions de les anotacions emoji o " "els noms Unicode" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Anotació emoji:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" "La drecera de teclat per habilitar les conversions de la posició del codi " "Unicode" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Posició del codi Unicode:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" "Estableix un tipus de lletra dels candidats Unicode al diàleg de l'emoji" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Tipus de lletra Unicode:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Estableix l'idioma de les anotacions emoji al diàleg dels emoji" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Idioma d'anotació emoji:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Fes coincidir parcialment les anotacions emoji amb la següent condició i més " "que el nombre de caràcters:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Si les anotacions emoji poden coincidir amb una cadena parcial en comptes de " "la coincidència exacta" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Coincidència del prefix" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Coincidència del sufix" #: setup/setup.ui:1130 msgid "Containing match" msgstr "La coincidència conté" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emoji" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Disposició del teclat" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Paràmetres del mètode d'entrada global" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Avançat" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "Inicia l'IBus en entrar" #: setup/setup.ui:1358 msgid "Startup" msgstr "Inici" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Activitats" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Animals i natura" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Banderes" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Menjar i beguda" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Objectes" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 #, fuzzy msgid "Smileys & Emotion" msgstr "Emoticones i gent" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Símbols" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Viatges i llocs" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Llatí bàsic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Llatí-1 suplementari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Llatí ampliat-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Llatí ampliat-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "Extensions IPA" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Modificador de l'espaiat de les lletres" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Combinació de les marques diacrítiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Grec i copte" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Ciríl·lic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Ciríl·lic suplementari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Armeni" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Hebreu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Àrab" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Siríac" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Àrab suplementari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "NKo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Samarità" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandaic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Siríac suplementari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Àrab ampliat-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Devanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengalí" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmukhi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Gujarati" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Oriya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tàmil" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Telugu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Kanarès" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malaiàlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Singalès" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Tai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Laosià" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tibetà" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Birmà" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Georgià" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Hangul Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Etiòpic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Etiòpic suplementari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Cherokee" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Sil·labaris aborígens unificats del Canadà" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Rúnic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Tagal" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunoo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buhid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Tagbanwa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Khmer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Mongol" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Sil·labaris ampliats aborígens unificats del Canadà" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai Le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Tai Lue nou" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Símbols Khmer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Bugui" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Tai Tham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Combinació ampliada de les marques diacrítiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Balinès" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Sundanès" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepcha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ol Chiki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Ciríl·lic ampliat-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Sundanès suplementari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Extensions vèdiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Extensions fonètiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Extensions fonètiques suplementàries" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Combinació suplementària de les marques diacrítiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Llatí ampliat addicional" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Grec ampliat" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Puntuació general" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Superíndexs i subíndexs" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Símbols de moneda" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Combinació de les marques diacrítiques per als símbols" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Símbols semblants a lletres" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Formes de nombres" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Fletxes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Operadors matemàtics" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Tècnics variats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Imatges de control" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Reconeixement òptic de caràcters" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Alfanumèrics delimitats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Dibuixos de quadres" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Elements de blocs" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Figures geomètriques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Símbols variats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Dingbats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Símbols-A matemàtics variats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Fletxes-A suplementàries" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Plantilles en Braille" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Fletxes-B suplementàries" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Símbols-B matemàtics variats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Operadors matemàtics suplementaris" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Símbols i fletxes variats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Glagolític" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Llatí ampliat-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Copte" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Georgià suplementari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Etiòpic ampliat" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Ciríl·lic ampliat-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Puntuació suplementària" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "Radicals suplementaris del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Radicals Kangxi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Caràcters de descripció ideogràfica" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "Símbols i puntuació del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Hangul compatible amb el Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Bopomofo ampliat" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "Traços del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Extensions fonètiques Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Lletres i mesos delimitats del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "Compatibilitat del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "Extensió A d'ideogrames unificats del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Símbols d'hexagrames Yijing" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "Ideogrames unificats del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Sil·labari Yi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Radicals Yi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Vai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Ciríl·lic ampliat-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Lletres amb modificació del to" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Llatí ampliat-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Syloti Nagri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Formes de nombres comuns de l'Índic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Phags-pa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurashtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Devanagari ampliat" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Hangul Jamo ampliat-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Javanès" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Myanmar ampliat-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Txam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Myanmar ampliat-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tai Viet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Ampliacions Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Etiòpic ampliat-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Llatí ampliat-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Cherokee suplementari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Sil·labari Hangul" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Hangul Jamo ampliat-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Substitucions altes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Substitucions altes d'ús privat" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Substitucions baixes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Àrea d'ús privat" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "Ideogrames de compatibilitat del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Formes de presentació alfabètica" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Formes A de presentació àrab" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Selectors de variació" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Formes verticals" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Combinació de mitges marques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "Formes de compatibilitat del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Variants de formes petites" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Formes B de presentació àrab" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Formes d'amplada mitjana i completa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Especials" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Conjunt lineal B de síl·labes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Ideogrames B lineals" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Nombres de l'egeu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Nombres del grec antic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Símbols antics" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Disc de Phaistos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Lici" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Cari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Nombres epact coptes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Cursiva antiga" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gòtic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Permià antic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ugarític" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Persa antic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Deseret" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Shavian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmanya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Elbasan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Albanès caucasià" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Lineal A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Conjunt de síl·labes del xipriota" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "Arameu imperial" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Arameu de Palmira" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nabateu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Fenici" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lidi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Jeroglífics meroítics" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Formes i valors meroítics" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Kharoshthi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Àrab del sud antic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Àrab del nord antic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Avèstic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Inscripcions del parthià" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Inscripcions del pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Turc antic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Hongarès antic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 #, fuzzy msgid "Old Sogdian" msgstr "Àrab del sud antic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 #, fuzzy msgid "Sogdian" msgstr "Lidi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaithi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Mongol suplementari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 #, fuzzy msgid "Tamil Supplement" msgstr "Suplement de selectors de variació" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Cuneïforme" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Nombres i puntuació cuneïforme" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Cuneïforme anterior a les dinasties" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Jeroglífics egipcis" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 #, fuzzy msgid "Egyptian Hieroglyph Format Controls" msgstr "Jeroglífics egipcis" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Jeroglífics d'Anatòlia" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Símbols i puntuació ideogràfiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Símbols musicals bizantins" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Símbols musicals" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Notació musical en grec antic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 #, fuzzy msgid "Mayan Numerals" msgstr "Nombres egeus" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Símbols tai xuan jing" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Palets xinesos per comptar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Símbols matemàtics alfanumèrics" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Glagolític suplementari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Símbols alfabètics matemàtics àrabs" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Fitxes del Mahjong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Fitxes del dòmino" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Cartes de joc" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Suplement alfanumèric tancat" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Suplement ideogràfic tancat" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Símbols i pictogrames variats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Emoticones" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Dingbats ornamentals" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Símbols de transports i mapes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Símbols químics" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Figures geomètriques ampliades" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Fletxes-C suplementàries" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Símbols i pictogrames suplementaris" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 #, fuzzy msgid "Chess Symbols" msgstr "Símbols" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "Extensió B d'ideogrames unificats del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "Extensió C d'ideogrames unificats del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "Extensió D d'ideogrames unificats del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "Extensió E d'ideogrames unificats del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "Extensió F d'ideogrames unificats del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "Ideogrames suplementaris de compatibilitat del CJK" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Etiquetes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Suplement dels selectors de variació" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Àrea A d'ús privat suplementari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Àrea B d'ús privat suplementari" #: tools/main.vala:51 msgid "List engine name only" msgstr "Mostra tan sols el nom del motor" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "No es pot connectar amb l'IBus.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "idioma: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "No s'ha establert cap motor.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "S'ha produït un error en establir el motor global.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "S'ha produït un error en obtenir el motor global.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Llegeix la memòria cau del registre del sistema." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Llegeix el FITXER de la memòria cau del registre." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "La memòria cau del registre no és vàlida.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Escriu la memòria cau del registre del sistema." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Escriu el FITXER de la memòria cau del registre." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "Usa els camins d'esquema del motor en comptes del nucli de l'IBus, el qual " "pot tenir els valors separats amb comes." #: tools/main.vala:381 msgid "Resetting…" msgstr "S'està restablint…" #: tools/main.vala:399 msgid "Done" msgstr "Fet" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Estableix o obté el motor" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Surt de l'ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "Mostra els motors disponibles" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(No implementat)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Reinicia el dimoni de l'IBus" #: tools/main.vala:449 msgid "Show version" msgstr "Mostra la versió" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Mostra el contingut de la memòria cau del registre" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Crea la memòria cau del registre" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Mostra l'adreça D-Bus del dimoni de l'IBus" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Mostra els valors de la configuració" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Restableix els valors de la configuració" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Desa l'emoji del diàleg al porta-retalls " #: tools/main.vala:458 msgid "Show this information" msgstr "Mostra aquesta informació" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Ús: %s ORDRE [OPCIÓ...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Ordres:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s no és una ordre reconeguda!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Preferits" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Altres" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Obre l'Unicode triat" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Torna a la selecció emoji" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Av Pàg" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Re Pàg" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Mostra les variants dels emojis" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Tanca" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Menú" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Cliqueu per a veure un missatge d'avís" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "S'està carregant un diccionari Unicode:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Posició del codi: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Té variants d'emoji" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Descripció: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Sense" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Anotacions: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Nom: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Àlies: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Selecciona l'emoji" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Unicode triat" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "No s'ha pogut obtenir l'aplicació de text actual, si us plau torneu-li a " "donar el focus, p. ex., premeu Esc diverses vegades per sortir del mode " "escriptura emoji, cliqueu a l'escriptori i de nou en la vostra aplicació." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "S'ha cancel·lat per triar un emoji." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "S'ha copiat un emoji al vostre porta-retalls." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "«TIPUS DE LLETRA» per als caracters emoji en el diàleg emoji" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "TIPUS DE LLETRA" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "ca" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "IDIOMA" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Les anotacions emoji poden coincidir parcialment" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Coincideix amb la llargada de l'enter especificat" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Coincideix amb la condició de l'enter especificat" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "Quadre de l'IBus" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "L'IBus és un bus d'entrada intel·ligent per a Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "Joan Duran \n" "Oscar Osta Pueyo ,\n" "Patricia Rivera Escuder ,\n" "Robert Antoni Buj Gelonch ,\n" "Xavier Conde Rueda ,\n" "Antoni Bella " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Preferències" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Reinicia" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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" #~ msgid "Type annotation or choose emoji" #~ msgstr "Teclegeu l'anotació o trieu l'emoji" #~ msgid "IBus Update" #~ msgstr "Actualització d'IBus" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Súper+espai ara és l'accés de teclat per defecte." ibus-1.5.22/po/nb.gmo0000644000000000000000000001005513623751604011163 00000000000000?Y pq#  *H> #  % -80I z   )^2 - ; O ` i p u |         U .k          ( J@  )    " ' : D M X 2l      53;\o 7&Pw   " /9?4:6"# ,5 1< &*-)+%$;0(3!87=2 '.>Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupAboutAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.CustomCustom fontCustom font name for language panelDescription: Disable shortcut keysDisable:Enable input method by defaultEnable or disable:Enable:GeneralHorizontalIBus PreferencesIBus is an intelligent input bus for Linux/Unix.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel position:Language: %s Modifiers:Next input method:OtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.PreferencesPrevious input method:QuitRestartSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesShow information of the selected input methodStart ibus on loginUse custom font:Vertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRtranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:48+0000 Last-Translator: Kjartan Maraas Language-Team: Norwegian Bokmål Language: nb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Skrift og stilGlobale innstillinger for inndatametodeTastaturutformingTastatursnarveierOppstartOmAvansertAlltidForfatter: %s Skjul automatiskNederste venstre hjørneNederste høyre hjørneOpphavsrett © 2007-2010 Peng Huang Opphavsrett © 2007-2010 Red Hat, Inc.EgendefinertEgendefinert skriftEgendefinert skriftnavn for språkpaneletBeskrivelse: Slå av snarveitasterSlå av:Slå på inndatametode som forvalgSlå på eller av:Slå på:GenereltHorisontalBrukervalg for IBusIBus er en intelligent inndatabuss for Linux/Unix.InndatametodeTastaturTastekode:Tastaturutforming: %s TastatursnarveierPosisjon for språkpanel:Språk: %s Endringstaster:Neste inndatametode:AnnetVennligst trykk en tast (eller en tastekombinasjon)Vennligst trykk en tast (eller en tastekombinasjon) Dialogen vil lukkes når tasten slippes.BrukervalgForrige inndatametode:AvsluttStart på nyttVelg en inndatametodeVelg tastatursnarvei for %sSett brukervalg for IBusVis informasjon om valgt inndatametodeStart ibus ved påloggingBruk egendefinert skrift:Vertikal_Om_Legg til_Bruk_Avbryt_Lukk_SlettNe_d_OK_BrukervalgFje_rn_Oppdefault:LTRKjartan Maraas ibus-1.5.22/po/ko.po0000644000000000000000000032147513623751601011041 00000000000000# Korean translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2019 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # Michelle Kim , 2017. #zanata # fujiwara , 2018. #zanata # Young-Ho, Cha , 2003-2006. (gucharmap) # Changwoo Ryu , 2007-2015. (gucharmap) # DaeHyun Sung , 2016-2019. (gucharmap) # Changwoo Ryu , 2019. msgid "" msgstr "" "Project-Id-Version: ibus 1.5.21\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2019-10-24 10:31+0000\n" "Last-Translator: Copied by Zanata \n" "Language-Team: GNOME Korea \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Zanata 4.6.2\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "엔진 미리로드" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus 시작 시 엔진 미리 로드" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "엔진 순서" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "입력 방식 목록에 저장된 엔진 순서" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME 스위치 창의 팝업 밀리초 단위의 지연" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "저장된 버전 번호" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "ASCII가 없는 라틴어 레이아웃" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "" "US 레이아웃이 라틴어 레인아웃에 추가되었습니다. 변형된 것은 생략될 수 있습니" "다." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmap 사용" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "ibus 엔진을 전환할 때 .xmodmap 또는 .Xmodmap이 있으면 xmodmap 실행합니다." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "시스템 키보드 레이아웃 사용" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "시스템 키보드 (XKB) 레이아웃 사용" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "프리에디트 텍스트 포함" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "응용 프로그램 창에 프리에디트 텍스트를 포함" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "전역 입력 방식 사용" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "모든 응용 프로그램에서 동일한 입력 방식 공유" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "입력기를 디폴트로 활성화" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "프로그램의 입력창에 포커스가 가면 디폴트로 입력기를 활성화합니다" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf는 이름 접두사를 보존합니다" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "DConf 키 접두사는 이름 변환을 중지합니다" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "트리거 바로 가기 키" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "입력 방식을 활성 또는 해제하는 바로 가기 키" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse의 트리거 바로 가기 키" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "바로 가기 키 활성화" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "입력 방식을 전환하는 바로 가기 키 활성화" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "바로 가기 키 비활성화" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "입력 방식을 전환하는 바로 가기 키 비활성화" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "다음 엔진 바로 가기 키" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "목록에 있는 다음 입력 방식으로 전환하는 바로 가기 키" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "이전 엔진 바로 가기 키" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "목록에 있는 이전 입력 방식으로 전환하는 바로 가기 키" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "자동 숨기기" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "속성 패널 돌작입니다. 0 = 보여주지 않음, 1 = 자동 숨김, 2 = 항상 표시" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "언어 패널 위치" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "패널을 항상 표시할 경우 입력 커서를 따라감" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "속성 패널을 표시할 밀리세컨드 단위 시간" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "포커스 인 상태 또는 속성 값을 바꾸었을 경우 속성 패널을 표시할 밀리세컨드 단" "위 시간입니다." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "검색 테이블의 방향" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "검색 테이블의 방향. 0 = 가로, 1 = 세로" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "시스템 트레이에 아이콘 보여주기" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "입력 방식 이름 보여주기" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "언어 도구 모음에 입력 방식 이름 보여주기" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB 아이콘의 RGBA 값" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "속성에 대해 패널 아이콘을 표시하는 시간, 밀리초 단위" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "사용자 정의 글꼴 사용" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "언어 패널 용 사용자 정의 글꼴 이름 사용" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "사용자 정의 글꼴" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "언어 패널 용 사용자 정의 글꼴 이름" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "유니코드 바로 가기 키, gtk_accelerator_parse 형식" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "입력 방식을 활성 또는 해제하는 바로 가기 키" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse에 사용할 에모지 바로 가기 키" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "에모지 입력을 켜거나 끄는 바로 가기 키" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "에모지 대화창의 에모지 문자에 사용할 사용자 설정 글꼴 이름" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "에모지 사전에 사용할 기본값 언어" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "에모지 대화창의 에모지 사전의 기본 언어를 선택합니다. $lang 값이면 /usr/" "share/ibus/dicts/emoji-$lang.dict 사전을 사용합니다." #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "에모지 대화 창의 자주 사용하는 에모지 목록" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "이 목록에 문자가 들어 있으면 에모지 목록에서 자주 사용하는 에모지를 표시합니" "다." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "에모지 대화 창의 자주 사용하는 에모지 주석" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "이 목록에 자주 사용하는 에모지의 주석을 저장할 수 있습니다." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "에모지 주석을 일부분 일치할지 여부" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "에모지 주석 전체가 일치할 경우가 아니더라도 문자열 일부분만 일치해도 찾을지 " "여부." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "지정한 길이의 에모지 주석 일치" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "에모지 주석 전체가 일치할 경우가 아니더라도 지정한 개수의 문자보다 많이 일치" "하면 찾습니다." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "에모지 주석을 부분 일치하는 조건 선택" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "에모지 주석을 부분 일치하는 다음 조건 중의 하나를 고르십시오: 0 = 시작 일치, " "1 == 끝 일치, 2 == 포함 일치" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "시작할 때 에모지 데이터 읽어들이기" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "참이면 시작할 때 에모지 데이터를 읽어들입니다. 이 데이터를 읽어들이려면 약 " "10MB의 메모리가 필요합니다. 거짓이면 에모지 대화창을 처음 열 때 에모지 데이터" "를 읽어들입니다." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "시작할 때 유니코드 데이터 읽어들이기" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "참이면 시작할 때 유니코드 데이터를 읽어들입니다. 이 데이터를 읽어들이려면 약 " "15MB의 메모리가 필요합니다. 거짓이면 에모지 대화창을 처음 열 때 유니코드 데이" "터를 읽어들입니다. 참이더라도 에모지 데이터를 읽어들인 뒤에는 유니코드 데이터" "를 항상 읽어들입니다." #: 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:209 msgid "Other" msgstr "기타" #: setup/emojilang.py:67 msgid "Select a language" msgstr "언어를 선택하십시오" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "취소(_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "확인(_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "더 보기…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "정보" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "닫기(_C)" #: 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 "입력 방식을 선택합니다" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "추가(_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "입력 방식" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus 환경 설정" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "이전 입력 방식으로 전환는 바로 가기 키에 shift를 누른 키 사용" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus 데몬이 실행되고 있지 않습니다. 이를 시작하시겠습니까?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus 데몬이 %d초 내에 시작하지 못했습니다" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s의 바로 가기 키를 선택" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "입력 방식 전환 중" #: setup/setup.ui:11 msgid "Horizontal" msgstr "가로" #: setup/setup.ui:14 msgid "Vertical" msgstr "세로" #: setup/setup.ui:25 msgid "Top left corner" msgstr "왼쪽 위" #: setup/setup.ui:28 msgid "Top right corner" msgstr "오른쪽 위" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "왼쪽 아래" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "오른쪽 아래" #: setup/setup.ui:37 msgid "Custom" msgstr "사용자 정의" #: setup/setup.ui:48 msgid "Do not show" msgstr "보여주지 않음" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "자동으로 숨기기" #: setup/setup.ui:54 msgid "Always" msgstr "항상" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "목록에 있는 다음 입력 방식으로 전환하는 바로 가기 키" #: setup/setup.ui:115 msgid "Next input method:" msgstr "다음 입력 방식:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "목록에 있는 이전 입력 방식으로 전환하는 바로 가기 키" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "이전 입력 방식:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "활성화 또는 비활성화:" #: setup/setup.ui:238 msgid "Enable:" msgstr "활성화:" #: setup/setup.ui:291 msgid "Disable:" msgstr "비활성화:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "바로 가기 키" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "검색 테이블에서 후보 창의 방향 설정" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "후보 창의 방향:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ibus가 입력 도구 모음을 표시하거나 숨기는 방법 설정" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "속성 패널을 표시:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "언어 패널 위치:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "확인란을 선택하면 입력 방식의 이름을 입력 도구 모음에 표시" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "응용 프로그램 창에 프리에디트 텍스트 포함" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "입력 방식의 프리에디트 텍스트를 어플레케이션 창에 포함시킵니다" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "사용자 정의 글꼴 사용:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "글꼴 및 스타일" #: setup/setup.ui:579 msgid "General" msgstr "일반" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "활성화된 입력 방식에 선택한 입력 방식을 추가합니다" #: setup/setup.ui:682 msgid "_Remove" msgstr "제거(_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "활성화된 입력 방식 목록에서 선택한 입력 방식을 제거" #: setup/setup.ui:700 msgid "_Up" msgstr "위로(_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "활성화된 입력 방식 목록에서 선택한 입력 방식을 위로 이동합니다" #: setup/setup.ui:718 msgid "_Down" msgstr "아래로(_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "활성화된 입력 방식 목록에서 선택한 입력 방식을 아래로 이동합니다" #: setup/setup.ui:736 msgid "_About" msgstr "정보(_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "선택한 입력 방식의 정보 보여주기" #: setup/setup.ui:754 msgid "_Preferences" msgstr "기본 설정(_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "선택한 입력 방식 설정 보기" #: setup/setup.ui:812 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 "" "활성화된 입력 방식 목록에서 키보드 바로 가기 키를 누르거나 패널 아" "이콘을 눌러 선택한 활성 입력 방식을 전환할 수 있습니다." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "에모지 주석 또는 유니코드 이름을 변환하는 바로 가기 키 목록" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "에모지 주석:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "유니코드 코드 값 변환을 활성화하는 바로 가기 키" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "유니코드 코드 값:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "에모지 대화창의 유니코드 후보 글꼴을 설정" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "유니코드 글꼴:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "에모지 대화창의 에모지 주석 언어를 설정" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "에모지 주석 언어:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "에모지 주석이 다음 조건에 따라 일정 문자 개수보다 더 일치하면 찾기:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "에모지 주석이 전체 일치하지 않더라도 문자열 일부만 일치하면 찾습니다" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "시작 일치" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "끝 일치" #: setup/setup.ui:1130 msgid "Containing match" msgstr "포함 일치" #: setup/setup.ui:1176 msgid "Emoji" msgstr "에모지" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "키보드 레이아웃" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "전역 입력 방식 설정" #: setup/setup.ui:1298 msgid "Advanced" msgstr "고급" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "로그인 시 ibus 시작" #: setup/setup.ui:1358 msgid "Startup" msgstr "시작" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "활동" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "동물 및 자연" #: src/ibusemojigen.h:32 msgid "Component" msgstr "부품" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "깃발" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "음식 및 음료" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "물건" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "사람 및 신체" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "표정 및 감정 표현" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "기호" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "여행 및 장소" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "기본 라틴문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "라틴-1 문자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "라틴문자 확장영역 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "라틴문자 확장영역 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "국제 음표 문자 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "간격 조정 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "조합 구분 표시" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "그리스 문자 및 콥트 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "키릴 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "키릴 문자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "아르메니아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "히브리 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "아랍 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "시리아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "아랍 문자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "타너 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "은코 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "사마리아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "만다르어 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "시리아 문자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "아랍 문자 확장영역 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "데바나가리 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "벵골 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "구르무키 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "구자라트 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "오리야 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "타밀 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "텔루구 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "칸나다 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "말라얌람 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "신할라 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "타이 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "라오 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "티베트 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "미얀마 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "그루지야 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "한글 자모" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "에티오피아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "에티오피아 문자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "체로키 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "통합 캐나다 원주민 음절" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "오검 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "룬 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "타갈로그 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "하누누 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "부히드 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "타그반와 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "크메르 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "몽골 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "통합 캐나다 원주민 음절 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "림부 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "타이레 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "신 타이 루에" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "크메르 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "부기스 문자" # 태국 북부 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "타이삼 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "조합 구분 표시 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "발리 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "순다 문자" # 인도네시아 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "바타크 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "레프차 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "올 치키 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "키릴 문자 확장영역 C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "그루지야 문자 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "순다 문자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "베다 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "발음 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "발음 확장 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "조합 구분 표시 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "라틴 확장 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "그리스 문자 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "일반 문장 부호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "위첨자/아래첨자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "화폐 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "기호용 조합 구분 표시" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "문자 모양 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "여러가지 숫자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "화살표" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "수학 연산자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "여러가지 기타 서술 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "제어 문자 표시" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "광학 인식 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "괄호 영문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "테두리 모양" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "블럭 요소" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "도형" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "여러가지 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "딩뱃 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "여러가지 수학기호 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "화살표 추가영역 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "점자 모양" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "화살표 추가영역 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "여러가지 수학기호 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "수학 연산자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "여러가지 기호 및 화살표" # 고대 슬라브어를 적는 데 쓰였던 음소 문자 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "글라골루 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "라틴문자 확장영역 C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "콥트 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "그루지야 문자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "티피나그 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "에티오피아 문자 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "키릴 문자 확장영역 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "추가 문장 부호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "한중일 부수 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "강희자전 부수" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "한자 기술 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "한중일 기호 및 문장 부호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "히라가나" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "카타카나" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "주음부호(중국어 발음기호)" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "한글 호환 자모" # 중국어 텍스트를 이해하기 쉽도록 주석을 다는 일본식 표기 # http://en.wikipedia.org/wiki/Kanbun#Unicode_kanbun #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "간분" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "주음부호 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "한중일 획수" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "카타카나 발음 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "한중일 둘러싼 문자 및 날짜 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "한중일 호환 영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "한중일 통합 한자 확장영역 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "주역 6선형 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "한중일 통합 한자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "이 음절문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "이 문자 부수" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "리수어" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "바이 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "키릴 문자 확장영역 B" # 아프리카 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "바뭄어 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "변조 성조 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "라틴 문자 확장영역-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "실헤티 나가리" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "인도 공통 숫자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "파스파 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "사우라슈트라 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "데바나가리 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "카야 리 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "레장 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "한글 자모 확장영역 A" # 인도네시아 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "자와어" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "미얀마 확장영역 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "참 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "미얀마 확장영역 A" # 태국 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "타이비엣 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "메이테이 문자 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "에티오피아 문자 확장영역 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "라틴문자 확장영역 E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "체로키 문자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "메이테이 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "한글 음절" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "한글 자모 확장영역 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "상위 확장코드" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "개인용 상위 확장코드" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "하위 확장코드" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "개인 사용 영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "한중일 호환 한자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "알파벳 표시 꼴" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "아랍 문자 표시 꼴 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "여러가지 선택자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "세로 모양" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "조합 반각 표시" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "한중일 호환 꼴" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "작은꼴 변형" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "아랍 문자 표시 꼴 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "반각 및 전각 꼴" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "특수 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "선형 B 음절문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "선형 B 표의문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "에게 숫자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "고대 그리스 숫자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "고대 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "파이스토스 원판" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "리키아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "카리 문자" # Epact - 태양력이 태음력보다 초과하는 날 수, 1월 1일에 달의 형태 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "콥트어 이팩트 번호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "고대 이탈리아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "고트 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "고대 페름어" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "우가릿 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "옛 페르시아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "데저렛 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "쇼 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "오스마냐 문자" # 아메리카 원주민 오세이지족의 언어를 표기하기 위한 문자 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "오세이지 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "엘바산 문자" # 중세에 있던 알바니아라는 국가를 현대의 알바니아와 구분하는 용어 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "캅카스 알바니아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "선형 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "키프로스 음절표" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "황실 아람어 알파벳" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "팔미라 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "나바테아 문자" # 이란 지역 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "하트란 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "페니키아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "리디아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "메로에 상형문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "메로에 필기체" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "카로시디 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "고대 남아라비아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "고대 북아라비아 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "마니교 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "아베스탄어" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "파르티아어 새김 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "팔레비어 새김 문자" # 시편(Psalter)으로 발견된 팔레비어 문자 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "시편 팔레비어 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "고대 튀르크 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "옛 헝가리 문자" # 1980년대 이슬람학자인 모하마드 하니프가 로힝야족의 언어를 연구해 개발한 문자 '하니프 로힝야(Hanifi Rohingya)' #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "하니피 로힝야 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "루미 숫자 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "고대 소그드 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "소그드 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "엘리마이스 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "브라흐미 문자" # 북 인도 문자 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "카이시 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "소라 솜펭 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "차크마 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "마하자니 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "샤라다 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "신할라 고대 숫자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "코즈키 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "물타니 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "쿠다와디 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "그랜사 문자" # 네팔에서 사용하는 네와르어의 문자(newa alphabet) #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "네와 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "티르후타 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "시드햄 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "모디 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "몽골 문자 추가영역" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "타크리 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "아홈 문자" # The Dogra script is historically associated with the Dogri language #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "도그라 문자" # 인도 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "바랑 크시티 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "난디나가리 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "자나바자르 정방형 문자" # 소욤보는 몽골인의 문자인 소욤보 문자로 구성 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "소욤보 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "파우 킨 하우 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "바이크수키 문자" # 티베트 북부지방에서 사용하던 샹슝(象雄,zhang-zhung)왕국의 고대문자. 샹슝 문자라고도 부름. 사어(死語) #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "샹슝 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "마사람 곤디 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "건잘라 곤디 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "마카사르 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "타밀 문자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "설형 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "설형 숫자및 구두기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "초기 왕조 쐐기 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "고대 이집트 신성문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "고대 이집트 신성문자 형식 제어 문자" # 현재 터키 지역 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "아나톨리아 상형문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "바뭄어 문자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "므로 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "바사 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "파하우몽 문자" # Oberi Okaime,The Medefaidrin script was created for an artificial language Medefaidrin #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "메데파이드린 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "먀오 문자" # 서하문자(西夏文字, Tangut Block) #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "표의문자용 기호 및 구두 기호" # 서하문자(西夏文字, Tangut Block) #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "서하 문자" # 서하문자(西夏文字, Tangut Block) #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "서하 문자 구성요소" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "가나 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "가나 확장영역 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "작은 가나꼴 확장영역" # 뉘수 문자(女书, 女書, Nǚshū) 음절 문자이며, 중국의 소수민족인 야오족 여성들만이 사용함. #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "뉘수 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "듀플로이언 속기 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "속기 형식 컨트롤 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "비잔틴 음악 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "음악 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "고대 그리스 음표" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "마야 숫자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "태현경 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "산가지 숫자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "수학용 알파벳, 숫자 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "서튼 수화 표기" # 고대 슬라브어를 적는 데 쓰였던 음소 문자 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "글라골루 문자 추가영역" # ‘Genesis Complete Hmong script’; 출처: https://www.unicode.org/L2/L2017/17002r3-n4780r3-nyiakeng-puachue-hmong.pdf #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "창세기 몽족 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "완초 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "멘데어 키카쿠이 문자" # 플라니어(Fulani language)를 표기하기 위한 문자 #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "애들램 문자" # the Indic Siyaq Numbers are a specialized subset of the Arabic script that was used for accounting and in general for recording numbers https://www.unicode.org/L2/L2015/15121r2-indic-siyaq.pdf #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "인도 시야크 숫자" # the Indic Siyaq Numbers are a specialized subset of the Arabic script that was used for accounting and in general for recording numbers https://www.unicode.org/L2/L2015/15121r2-indic-siyaq.pdf #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "오스만 시야크 숫자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "아랍 수학용 알파벳 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "마작 타일" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "도미노 타일" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "플레잉카드" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "괄호 영문자 및 숫자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "괄호 한자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "여러가지 기호 및 그림 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "이모티콘" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "장식용 딩뱃 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "교통 및 지도 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "연금술 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "도형 확장영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "화살표 추가영역 C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "추가 기호 및 그림 문자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "체스 기호" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "기호 및 그림 문자 확장영역-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "한중일 통합 한자 확장영역 B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "한중일 통합 한자 확장영역 C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "한중일 통합 한자 확장영역 D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "한중일 통합 한자 확장영역 E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "한중일 통합 한자 확장영역 F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "한중일 호환 보충 한자" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "태그" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "여러가지 선택자 추가영역" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "사용자 추가영역 A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "사용자 추가영역 B" #: tools/main.vala:51 msgid "List engine name only" msgstr "엔진 이름만 나열합니다" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus에 연결할 수 없습니다.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "언어: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "엔진이 설정되어 있지 않습니다.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "글로벌 엔진의 설정에 실패했습니다.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "글로벌 엔진의 취득에 실패했습니다.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "시스템 레지스트리 캐시를 읽어들입니다." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "레지스트리 캐시 파일을 읽어들입니다." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "레지스트리 캐시가 잘못되었습니다.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "시스템 레지스트리 캐시를 씁니다." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "레지스트리 캐시 파일을 씁니다." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "IBus 코어 대신 엔진 스키마 경로 사용, 쉼표로 구분한 경로 값 목록." #: tools/main.vala:381 msgid "Resetting…" msgstr "초기화 중…" #: tools/main.vala:399 msgid "Done" msgstr "완료" #: tools/main.vala:444 msgid "Set or get engine" msgstr "엔진을 설정하거나 얻기" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon 끝내기" #: tools/main.vala:446 msgid "Show available engines" msgstr "존재하는 엔진 표시" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(구현 안함)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon 다시 시작" #: tools/main.vala:449 msgid "Show version" msgstr "버전 보기" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "레지스트리 캐시 내용 표시" #: tools/main.vala:451 msgid "Create registry cache" msgstr "레지스트리 캐시 만들기" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon의 D-Bus 주소 출력" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "설정 값 표시" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "설정 값 재설정" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "대화창의 에모지를 클립보드에 저장" #: tools/main.vala:458 msgid "Show this information" msgstr "이 정보 표시" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "사용법: %s <명령> [옵션...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "명령:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s은(는) 알 수 없는 명령입니다!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "자주 사용" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "기타" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "유니코드 선택 열기" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "에모지 선택으로 돌아가기" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "다음 페이지" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "이전 페이지" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "에모지 변종 보기" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "닫기" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "메뉴" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "경고 메시지를 보려면 누르십시오" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "유니코드 사전 읽어들이는 중:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "코드값: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "에모지 변종 있음" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "설명: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "없음" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "주석: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "이름: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "다른 이름: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "에모지 선택" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "유니코드 선택" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "현재 텍스트 응용 프로그램을 알아낼 수 없습니다. 응용 프로그램의 포커스를 다" "시 맞춰 보십시오. 예를 들어 Esc 키를 여러번 눌러 에모지 입력 모드를 벗어나거" "나, 바탕 화면을 누르고 텍스트 응용 프로그램을 다시 눌러 보십시오." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "에모지 선택 취소됨." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "에모지를 클립보드에 복사." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "\"<글꼴>\"을 에모지 대화창의 에모지 문자에 사용합니다" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "<글꼴>" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "\"<언어>\"를 에모지 대화창 주석에 사용합니다 (예: \"en\")" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "<언어>" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "에모지 주석 일부분과 일치 가능" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "지정한 정수 값 길이만큼 일치" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "지정한 정수 값의 조건에 맞게 일치" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus 패널" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus는 리눅스/유닉스를 위한 지능형 입력 버스입니다." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "김은주 \n" "류창우 " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "기본 설정" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "다시 시작" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "끝내기" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/tg.gmo0000644000000000000000000000366113623751604011203 00000000000000!$/,   %.6 >I MW jx ~  y} #   #.2)Is   ! 9I `jn   !   ...AboutAlwaysAuthor: %s Auto hideCustomDescription: Disable:Enable:GeneralHorizontalKbdKey code:Keyboard shortcutsLanguage: %s OtherPreferencesQuitRestartVertical_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2014-02-18 05:49+0000 Last-Translator: tajikfedora Language-Team: Tajik Language: tg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); ...Дар бораиҲамешаМуаллиф: %s Пинҳонкунии худкорТанзимотШарҳ: Хомӯшкунӣ:Фаъолсозӣ:УмумӣУфуқӣKbdРамзи тугма:Миёнбурҳои клавиатураЗабон: %s ДигарХусусиятҳоХуруҷБозоғозӣАмудӣ_Дар бораи барнома_Илова кардан_Татбиқ кардан_Бекор кардан_Пӯшидан_Нест кардан_Поён_OK_Хусусиятҳо_Тоза кардан_Болоdefault:LTRibus-1.5.22/po/es.gmo0000644000000000000000000012410713623751603011176 00000000000000!,+,1-7-O-a-e-#{----o-O./ /</N/T/]/l/q/ ///////00/060&H0o00000 0 00000 1 11#1 +151D1M1_1r1 1111111112'22Z2 r2~22"2"2"2"3"=3"`3333333333 47!4Y44l5555$5&5' 616 F6Q6 k6u66"666H6757 K7!U7w77 757#7788$888L8`8%}8 888 88889 99 "9/949=9V9k9s9(9(9@9: :,:G:(Y:-: ::D:;1;F; N;o;;; ;;;;<<(<-< <=9= B=O=W=k=|===== ==>>>>0> 9>G>P>n> >>>>>>>>? ??;?K? T? _?j?.{??0z@@"@#@TAVAAA A BB6B?BFBVBfBmB}BBBBB BBB BB B C CCC7C PC^CbC|CCCCC!CCD D D&D/DBDUDkD,pDD*EEsFFFFF FF FF FF FoGfpG1G1 H.;H!jHHH H HH HHHII$!I$FIkI I%IIII I JJ%J@-JCnJJJJJJJJ K K KK$K>KQKdK iKvK|KKK K KK K K KK KKL0L9LLLLLLLL LL L L L LL M M M4M SM)aM^M0M N 'N.4NcN%sNNN&NNOOO.OLOlO?sOO OOOOJP[P aP kP"vP(PPPPQ Q45Q7jQQQQ9R1RR2S6S>SXSoSS-SS&S@TIT'^TT"TT TTTTU&U8U @UMUUUnUwU U UUUUUU#V9V$RV wV VV VVVVVW WWW W)W?WEWKWRWdWkWrW8wWOW'XQ(X6zXXYY@hZDZDZ<3[6p[4[.[- \49\:n\M\\\]] ]1]K][]/q]C]]]] ^/^%O^.u^^^'^^R _`_>x_ __ __``6`G`P` _`7k`a`a $aEa -c 9cFc?^cOcccd ddd!d)d/d 3d@dHd Ld.Xd#d dddd7fLf g2gDgHg5_g gg gtgRh h iPiciiiriii i#iii$ij*j=jSjcjjj+}j!j!jjk k k k )k3kG O]wQ\>,%@X i tȆ !!3FcLJ·U^@Ljۈ (Ca ɉ׉  :H$a%C" (2 ; H R^ mw#ɋ8Ћs A} ̌F)/=(m.&(&OvR},Ў 2VA .B(E U$v@F0CtVEْ@'h"q!+ѓ=(;>dZ=(Z,ʕޕ (2 ;HP lw Ė&)P$i$$ؗ   ' 0:AJ Sagmt :Wܘ34fhCϙ=%QwIHMNPD6E{=:=:Kx`Ğ%.6>Yr#8ǟc do4!ؠ,'F;`:"B3X- Ǣˢ% % 7KCl'+$P J Xe<|T !,5 >H PZa jx ?0ӧ .f.! /RD<yT;?G8[U;O1|0+H/A{42 ~Mtp 6X Fi:rboQ2_?}MSxb89"#F>&  (P" @ |wn9V5Q*3sRd)$-Z`,<^jluwV I&0BZXyO\YzKW'aEAY 3k g}*Lep 17 56mh` ]dm$P4_lcaJ'GHIJK\ )h:^z -kqU@oW]>=ircN=u%nBeS%Cg[qt#s.C{fj,xEv(7L~Nv!+ DT"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian HieroglyphsElbasanEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2019-03-02 11:55+0000 Last-Translator: Máximo Castañeda Riloba Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 4.6.2 FUENTE para los emoji en el cuadro de diálogo de emojiIDIOMA para las anotaciones en el cuadro de diálogo de emoji (p.ej.: "es").¡%s es un comando desconocido! (no implementado)...Fuente y EstiloConfiguraciones globales de método de entradaDistribución del tecladoAtajos de tecladoInicioIBus El bus de entrada inteligente Sitio web: https://github.com/ibus/ibus/wiki 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.Acerca deActividadesAgregar el método de entrada seleccionado a los métodos de entrada habilitadosAdlamAvanzadoNúmeros egeosAhomSímbolos alquímicosAlias: %sFormas de presentación alfabéticaSiempreJeroglíficos anatoliosNotación musical del griego antiguoNúmeros de griego antiguoSímbolos antiguosAnimales y naturalezaAnotaciones: %sÁrabeÁrabe extendido-ASímbolos alfabéticos matemáticos árabesFormas de presentación árabes-AÁrabe, formas de presentación BÁrabe (suplemento)ArmenioFlechasAutor: %s Auto OcultarAvésticoBalinésShümomShümom (suplemento)Latino básicoVahBatakBengalíBhaiksukiBloquesBopomofoBopomofo extendidoEsquina inferior izquierdaEsquina inferior derechaDibujos de cuadrosBrahmiPatrones BrailleVolver a la selección emojiBuginésBuhidSímbolos musicales biznatinosCJK (compatibilidad)CJK, formas de compatibilidadCJK, ideogramas de compatibilidadCJK, ideogramas de compatibilidad (suplemento)CJK, radicales (suplemento)CJK, trazosCJK, símbolos y puntuaciónCJK, ideogramas unificadosCJK, ideogramas unificados extensión ACJK, ideogramas unificados extensión BCJK, ideogramas unificados extensión CCJK, ideogramas unificados extensión DCJK, ideogramas unificados extensión ECJK, ideogramas unificados extensión FNo se puede conectar a IBus. Cancelada la selección de emoji.Orientación de los candidatos:CarioAlbanocaucásicoChakmaChamCheroquiCheroqui (suplemento)Símbolos de ajedrezElija una condición para las coincidencias parciales de anotaciones de emojiElija un idioma predeterminado para el diccionario de emoji. Su valor ($lang) se aplica a /usr/share/ibus/dicts/emoji-$lang.dictElija una de estas condiciones para las coincidencias parciales de anotaciones de emoji: 0 == inicio del texto, 1 == final del texto, 2 == contiene el texto.Pulse para ver mensaje de avisoCerrarPunto de código: %sMarcas diacríticas combinantesMarcas diacríticas combinantes extendidasMarcas diacríticas combinantes (suplemento)Marcas diacríticas combinantes para símbolosMarcas intermedias combinantesComandos: Formas numéricas índicas comunesComponenteContiene el textoDescriptores de controlSe copió un emoji al portapapeles.CoptoNúmeros epact coptosCopyright (c) 2007–2010 Peng Huang Copyright (c) 2007–2010 Red Hat, Inc.Varillas de numeraciónCrear el caché del registroCuneiformeCuneiforme, números y puntuaciónSímbolos monetariosPersonalizadoFuente personalizadaNombre de fuente personalizada para caracteres emoji en el diálogo de emojiNombre de fuente personalizado para el panel de idiomaSilabario chipriotaCirílicoCirílico extendido-ACirílico extendido-BCirílico extendido-CCirílico (suplemento)DConf preserva los prefijos de nombresIdioma predeterminado para el diccionario de emojiDescripción: Descripción: %sDeseretDevanagariDevanagari extendidoCaracteres gráficosDeshabilitar atajos de tecladoInhabilitar:No mostrarDograFichas de dominóHechoDuployanaCuneiforme arcaicoJeroglíficos egipciosElbasanoInsertar texto preeditadoInsertar texto previamente editado en la ventana de la aplicaciónInsertar texto previamente editado en la ventana de la aplicaciónInsertar el texto previamente editado del método de entrada en la ventana de la aplicaciónEmojiSelección de emojiIdioma para las anotaciones de emoji:Anotación emoji:Se permiten coincidencias parciales en las anotaciones de emojiAtajos de teclado de emoji para gtk_accelerator_parseEmoticonosHabilitar método de entrada por defectoHabilitar método de entrada por defecto cuando la aplicación consigue el foco de entradaHabilitar o inhabilitar:Habilitar atajos de tecladoHabilitar:Alfanuméricos encerrados (suplemento)Alfanuméricos encerradosCJK, letras y meses encerradosIdeogramas encerrados (suplemento)Orden de las máquinasEtíopeEtíope extendidoEtíope extendido-AEtíope (suplemento)Detener el ibus-daemonFUENTENo se pudo obtener la aplicación de texto actual, por favor devuélvala el foco (por ejemplo, pulse escape varias veces para salir del modo emoji, haga clic en el escritorio y de nuevo en su aplicación.FavoritosBanderasSiga el cursor de entrada en caso de que el panel siempre se muestreComida y bebidaGeneralPuntuación generalFormas geométricasFormas geométricas extendidasGeorgianoGeorgiano extendidoGeorgiano (suplemento)Falló al obtener la máquina global. GlagolíticoGlagolítico (suplemento)GóticoGranthaGriego extendidoGriego y coptoGujaratiGunjala GondiGurmukhiFormas de ancho completo e intermedioJamo con compatibilidad hangulHangul JamoHangul Jamo extendido-AHangul Jamo extendido-BHangul, sílabasHanifi rohinyáHanunóoTiene variantes emojiHatranoHebreoOcultar automáticamenteSubrogaciones altas de uso privadoSubrogaciones altasHiraganaHorizontalPanel IBusPreferencias de IBusEl demonio IBus no se pudo iniciar en %d segundos¡IBus fue iniciado! Sin no puede usar IBus, agregue las siguientes líneas a su $HOME/.bashrc; luego vuelga a ingresar a su cuenta. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus es un bus de entrada inteligente para Linux/Unix.Extensiones IPACaracteres ideográficos de descripciónSímbolos y puntuación ideográficaSi se puede obtener una coincidencia parcial en lugar de exacta en la búsqueda de anotaciones de emoji.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.Arameo imperialNúmeros índicos siyahMétodos de EntradaPahlaví, inscripcionesParto, inscripcionesJavanésKaithiKana extendido-AKana (suplemento)KanbunKangxi (radicales)KannadaKatakanaKatakana, extensiones fonéticasKayah LiKbdCódigo clave:Distribución del teclado: %s Atajos de tecladoKarostiJemerJemer (símbolos)KhojkiKhudawadiIDIOMAPosición del panel de idiomaPosición del panel de idioma:Idioma: %s LaoLatino extendido adicionalLatino extendido-ALatino extendido-BLatino extendido-CLatino extendido-DLatino extendido-EDisposiciones latinas que no tienen ASCIILatino-1 (suplemento)LepchaSímbolos similares a letrasLimbuLineal AIdeogramas lineales BSilabario lineal BListar sólo los nombres de máquinasLisuCargar los datos de Unicode al inicioCargar los datos de Unicode al inicio. Se necesitan alrededor de 15MB. Si está desactivado, se cargarán al abrir el cuadro de selección de emoji. Los datos de Unicode sólo se cargarán después de los de emoji, incluso cuando esta opción esté activa.Cargar los datos de emoji al inicioCargar los datos de emoji al inicio. Se necesitan alrededor de 10MB. Si está desactivado, se cargarán al abrir el cuadro de selección de emoji.Cargando un diccionario Unicode:Subrogaciones bajasLicioLidioMahajaniFichas de MahjongMacasarMalayalamMandeoManiqueoMarchenMasaram GondiObtener coincidencias parciales en lugar de exactas en las anotaciones de emoji que tengan más que el número de caracteres indicado Realizar búsqueda parcial en las anotaciones de emoji con la siguiente condición y más que un mínimo de caracteres:Realizar búsquedas en las anotaciones de emoji con la longitud de texto indicadaBuscar coincidencias con la condición indicada por el códigoBuscar coincidencias con la longtud indicadaSímbolos matemáticos alfanuméricosOperadores matemáticosNumeración mayaMedefidrinMeetei MayekMeetei Mayek, extensionesSilabario ki-ka-kuMenúMeroítico, cursivaMeroítico, jeroglíficosPollard MiaoSímbolos matemáticos variados ASímbolos matemáticos variados BSímbolos variadosSímbolos y flechas variadosSímbolos y pictogramas variosTécnicos variadosModiLetras modificadoras del tonoModificadores:MongolMongol (suplemento)Más...Mover abajo el método de entrada seleccionado en los métodos de entrada habilitadosMover arriba el método de entrada seleccionado en la lista de métodos de entrada habilitadosMroMultaniSímbolos musicalesMyanmarMyanmar extendido-AMyanmar extendido-BN'KoNabateoNombre: %sNuevo Tai LueNewaAtajo de teclado para el siguiente motorSiguiente método de entrada:No se configuró la máquina. NingunaFormas numéricasNü shuObjetosOgamOl ChikiHúngaro antiguoItalo antiguoÁrabe del norte antiguoPérmico antiguoPersa antiguoSogdiano antiguoÁrabe meridional antiguoTurco antiguoAbrir selección UnicodeReconocimiento óptico de caracteresOrientación de la tabla de búsquedaOrientación de la tabla de búsqueda. 0 = Horizontal, 1 = VerticalOriyaPictogramas ornamentalesOsageOsmanyaOtroOtrosSiguienteAnteriorPahawh HmongPalmirenoPau Cin HauGente y cuerpo'Phags-paDisco de FestoFenicioExtensiones fonéticasExtensiones fonéticas (suplemento)NaipesPor favor, presione una tecla (o combinación de teclas)Por favor, presione una tecla (o una combinación de tecla). El diálogo será cerrado cuando la tecla sea soltada.Retraso en milisegundos de Popup para ventana del interruptor IMEPreferenciasComienza con el textoPrefijos para las claves de DConf para parar la conversión de nombresPrecargar máquinasPrecargar los motores durante el inicio de ibusAtajo de teclado para la máquina previaMétodo de entrada anterior:Imprimir la dirección de D-Bus de ibus-daemonÁrea de uso privadoPahlaví, salmosSalirValor RGBA del ícono XKBLea el ARCHIVO de caché del registro.Lea el cache del registro del sistema.RejangEliminar el método de entrada seleccionado de los métodos de entrada habilitadosRestablecer los valores de la configuraciónRestableciendo...ReiniciarReiniciar el ibus-daemonNumerales rumiEjecutar xmodmap si .xmodmap o .Xmodmap existen cuando los motores ibus son cambiados.RúnicoSamaritanoSaurashtraGuardar emoji del diálogo en el portapapeles.Orden de las máquinas guardada en la lista de métodos de entradaNúmero de versión guardadaElija un idiomaSeleccione un método de entradaSeleccione la tecla de atajo para %sDefina las preferencias de IBusFuente a usar para los candidatos Unicode en el cuadro de emoji.Idioma a usar en el cuadro de emoji para las anotaciones de los mismosFalló la configuración de la máquina global. Ponga u obtenga una máquinaEstablece retraso en milisegundos para mostrar la ventana del selector IME. El valor predeterminado es 400. 0 = Muestra la ventana inmediatamente. 0 < Demora en milisegundos. 0 > No muestra la ventana ni los motores siguientes o anteriores.Configurar el comportamiento de ibus sobre cómo mostrar u ocultar la barra de idiomasEstablecer la orientación de los candidatos en la tabla de búsquedaSharadaCompartir el mismo método de entrada con todas las aplicacionesShavianoTaquigrafía, controles de formatoMostrar las máquinas disponiblesMostrar variantes de emojiMostrar un ícono en la bandeja del sistemaMostrar información sobre el método de entrada seleccionadoMostrar el nombre del método de entradaMostrar el nombre del método de entrada en la barra de idiomaMostrar el nombre del método de entrada en la barra de idioma cuando se marque la casillaMostrar panel de propiedades:Mostrar la configuración del método de entrada seleccionadoMostrar los valores de la configuraciónMostrar el contenido del caché del registroMostrar esta informaciónMostrar la versiónSiddhamSinhalaSinhala, numerales antiguosVariantes de formas pequeñasEmocionesSogdianoSora SompengSoyomboModificadores del espaciadoEspecialesIniciar ibus al ingresarAcaba con el textoSondanésSondanés (suplemento)Superíndices y subíndicesFlechas suplementarias AFlechas suplementarias BFlechas (suplemento-C)Operadores matemáticos suplementariosPuntuación (suplemento)Símbolos y pictogramas (suplemento)Área suplementaria de uso privado AÁrea suplementaria de uso privado BLengua de signos SuttonSyloti NagriSímbolosSirioSirio (suplemento)TagaloTagbanwaEtiquetasTai LeTai ThamTai VietTai Xuan JingTakriTamilTangutTangut, componentesTeluguThaanaTailandésEl demonio IBus no se está ejecutando. ¿Desea iniciarlo?La conducta del panel de propiedad,0= No mostrar, 1 = Auto ocultar, 2 = Mostrar siempreLos milisegundos para mostrar el panel de propiedadLos milisegundos para mostrar el panel de propiedad después de enfocar o que las propiedades cambien.Los milisegundos para mostrar el icono del panel para una propiedadLos milisegundos para mostrar el icono del panel desde el icono del motor a un icono de la propiedad cada vez que los motores se encienden si la propiedad se especifica por el valor de icono-prop-clave en IBusEngineDesc. Si el valor es 0, no hay tiempo de retardo y el icono de la propiedad se muestra inmediatamente.El caché del registro es inválido. 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.Tecla programada para cambiar al siguiente método de entrada en la listaTecla programada para cambiar al método de entrada anterior en la listaLos atajos de teclado para avanzar al siguiente método de entrada de la listaLos atajos de teclado para retroceder al método de entrada anterior en la listaLos atajos de teclado para activar y desactivar la escritura UnicodeLos atajos de teclado para activar y desactivar la escritura de emojiLos atajos de teclado para deshabilitar el método de entradaLos atajos de teclado para habilitar el método de entradaAtajo de teclado para encender o apagar el método de entradaLos atajos de teclado para activar las conversiones de los códigos UnicodeLos atajos de teclado para activar las conversiones de las anotaciones de emoji o nombre UnicodeTibetanoTifinagTirhutaEsquina superior izquierdaEsquina superior derechaSímbolos de transporte y mapasViajes y lugaresActivadora de los Atajos de tecladoActivador de llaves de atajos para leer gtk_accelerator Disposición de los Estados Unidos se anexa a los Disposiciones Latino. variante puede ser omitida.UgaríticoSelección UnicodeCódigo Unicode:Fuente Unicode:Atajos de teclado Unicode para gtk_accelerator_parseSilabarios indígenas canadiensesSilabarios indígenas canadienses extendidosUso: %s COMANDO [OPCIÓN...] Usar fuente personalizadaUsar nombre de fuente personalizado para el panel de idiomaUsar fuente personalizada:Usar rutas de esquema del motor en lugar del núcleo ibus.Utilizar método de entrada globalUsar atajos con shift para cambiar al método anterior de entradaUsar la distribución del teclado del sistema (XKB)Usar la distribución del teclado del sistemaUsar xmodmapVaiSelectores de variaciónSelectores de variación (suplemento)Extensiones vedasVerticalFormas verticalesWarang CitiSi se permiten o no las coincidencias parciales en las anotaciones de emojiSi se puede obtener una coincidencia parcial en la búsqueda de anotaciones de emoji en lugar de una exacta.Escriba al ARCHIVO caché del registro.Escriba al caché del registro del sistema.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.Yi, radicalesYi, sílabasHexagramas del I-ChingPuede poner anotaciones a sus emoji favoritos en esta lista.Puede mostrar sus emoji favoritos en la lista de emoji si los incluye en esta lista.Zanabazar cuadradaAcerca _de_Añadir_Aplicar_Cancelar_Cerrar_Eliminar_Bajar_Aceptar_Preferencias_Quitar_Subirdefault:LTRlista de anotaciones de emoji favoritos en el diálogo de emojilista de emoji favoritos en el diálogo de emojiidioma: %s cambiando métodos de entradaCréditos de Traducciónibus-1.5.22/po/as.po0000644000000000000000000031145013623751577011037 00000000000000# Assamese translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2018 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2018-02-20 04:21-0500\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Assamese \n" "Language: as\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 3.9.6\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "ইঞ্জিনসমূহ আগতে ল'ড কৰক" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus আৰম্ভৰ আগতে ইঞ্জিন ল'ড কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "ইঞ্জিনসমূহৰ ক্ৰম" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "ইনপুট পদ্ধতি তালিকাত সংৰক্ষিত ইঞ্জিন ক্ৰম" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME চুইচাৰ উইন্ডোৰ বাবে মিলিছেকেণ্ডত পপআপ বিলম্ব" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "সংৰক্ষিত সংস্কৰণ সংখ্যা" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "ASCII নথকা লেটিন বিন্যাসসমূহ" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "US বিন্যাসক লেটিন বিন্যাসসমূহলৈ সংযোজন কৰা হয়। অপৰক বাদ দিব পাৰি।" #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmap ব্যৱহাৰ কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "ibus ইঞ্জিনসমূহ চুইচ কৰোতে যদি .xmodmap অথবা .Xmodmap থাকে xmodmap চলাব।" #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "চিস্টেম কিবৰ্ড বিন্যাস ব্যৱহাৰ কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "চিস্টেম কিবৰ্ড (XKB) বিন্যাস ব্যৱহাৰ কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "পূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "এপ্লিকেচনৰ উইন্ডোত পূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "সৰ্বব্যাপী ইনপুট পদ্ধতি ব্যৱহাৰ কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "সকলো এপ্লিকেচনৰ মাজত একেই ইনপুট পদ্ধতি অংশীদাৰী কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "ইনপুট পদ্ধতি অবিকল্পিতভাৱে সামৰ্থবান কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "যেতিয়া এপ্লিকেচনে ইনপুট ফকাচ প্ৰাপ্ত কৰে তেতিয়া অবিকল্পিতভাৱে ইনপুট পদ্ধতি সামৰ্থবান " "কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf সংৰক্ষিত নাম উপসৰ্গসমূহ" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "নাম পৰিবৰ্তন বন্ধ কৰিবলে DConf কি'সমূহৰ উপসৰ্গসমূহ" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "ট্ৰিগাৰৰ চৰ্টকাট কি'সমূহ" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "ইনপুট পদ্ধতি খোলা আৰু বন্ধ কৰাৰ বাবে প্ৰয়োজনীয় চৰ্টকাট কি' নিৰ্ধাৰণ কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ৰ বাবে চৰ্টকাট কি'সমূহ ট্ৰিগাৰ কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "চৰ্টকাট কি'সমূহ সামৰ্থবান কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "ইনপুট পদ্ধতি খুলিবলে চৰ্টকাট কি'সমূহ" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "চৰ্টকাট কি'সমূহ অসামৰ্থবান কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "ইনপুট পদ্ধতি বন্ধ কৰিবলে চৰ্টকাট কি'সমূহ" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "পৰবৰ্তী ইঞ্জিন চৰ্টকাট কি'সমূহ" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "তালিকাত থকা পৰৱৰ্তী ইনপুট পদ্ধতিলে যাবলে চৰ্টকাট কি'সমূহ" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "পূৰ্ববৰ্তী ইঞ্জিনৰ চৰ্টকাট কি'" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "তালিকাত থকা পূৰ্বৱৰ্তী ইনপুট পদ্ধতিলে যাবলে চৰ্টকাট কি'সমূহ" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "স্বচালিতভাৱে লুকাওক" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "বৈশিষ্ট্য পেনেলৰ আচৰণ। 0 = নেদেখুৱাব, 1 = স্বচালিতভাৱে লুকুৱাওক, 2 = সদায় দেখুৱাব" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "ভাষাৰ পেনেলৰ স্থান" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "পেনেল সদায় দেখুৱা হলে ইনপুট কাৰ্চাৰক অনুকৰণ কৰিব" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "বৈশিষ্ট্য পেনেল দেখুৱাবলৈ মিলিছেকেণ্ড" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "ফকাচ-ইন আৰু বৈশিষ্ট্যসমূহ পৰিবৰ্তন হোৱাৰ পিছত বৈশিষ্ট্য পেনেল দেখুৱাবলৈ মিলিছেকেণ্ড।" #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "লুক-আপ টেবুলৰ দিশ" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "লুকআপ টেবুলৰ দিশ। ০ = আনুভূমিক, ১ = উলম্ব" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "চিস্টেম ট্ৰেত আইকন দেখুৱাওক" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "ইনপুট পদ্ধতিৰ নাম দেখুৱাওক" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "ভাষাৰ বাৰত ইনপুট পদ্ধতিৰ নাম দেখুৱাওক" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB আইকনৰ RGBA মান" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "স্বনিৰ্বাচিত ফন্ট ব্যৱহাৰ কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "ভাষাৰ পেনেলৰ বাবে স্বনিৰ্বাচিত ফন্টৰ নাম ব্যৱহাৰ কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "স্বনিৰ্বাচিত ফন্ট" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "ভাষাৰ পেনেলৰ বাবে স্বনিৰ্বাচিত ফন্ট" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ৰ বাবে চৰ্টকাট কি'সমূহ ট্ৰিগাৰ কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "ইনপুট পদ্ধতি খোলা আৰু বন্ধ কৰাৰ বাবে প্ৰয়োজনীয় চৰ্টকাট কি' নিৰ্ধাৰণ কৰক" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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:209 msgid "Other" msgstr "অন্য" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "বাতিল (_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "ঠিক আছে (_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "অধিক" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "বিষয়ে" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "বন্ধ কৰক (_C)" #: 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 "এটা ইনপুট পদ্ধতি বাছক" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "যোগ কৰক (_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "ইনপুট পদ্ধতি" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus পছন্দসমূহ" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "পূৰ্বৱৰ্তী ইনপুট পদ্ধতিলৈ চুইচ কৰিবলে shift ৰ সৈতে চৰ্টকাট ব্যৱহাৰ কৰক" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ডিমন চলি থকা নাই। আপুনি আৰম্ভ কৰিব বিচাৰে নেকি?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ডিমনক %d ছেকেণ্ডত আৰম্ভ কৰিব পৰা নগল" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s ৰ কাৰণে কিবৰ্ডৰ চৰ্টকাট বাছক" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "ইনপুট পদ্ধতিসমূহ চুইচ কৰা" #: setup/setup.ui:11 msgid "Horizontal" msgstr "আনুভূমিক" #: setup/setup.ui:14 msgid "Vertical" msgstr "উল্লম্ব" #: setup/setup.ui:25 msgid "Top left corner" msgstr "ওপৰৰ বাওঁফালৰ কোণত" #: setup/setup.ui:28 msgid "Top right corner" msgstr "ওপৰৰ সোঁফালৰ কোণত" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "তলৰ বাওঁফালৰ কোণত" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "তলৰ সোঁফালৰ কোণত" #: setup/setup.ui:37 msgid "Custom" msgstr "স্বনিৰ্বাচিত" #: setup/setup.ui:48 msgid "Do not show" msgstr "নেদেখুৱাব" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "স্বচালিতভাৱে লুকুৱাওক" #: setup/setup.ui:54 msgid "Always" msgstr "সদায়ে" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "তালিকাত উপস্থিত পৰবৰ্তী ইনপুট পদ্ধতিলৈ পৰিবৰ্তনৰ বাবে প্ৰযোজ্য চৰ্টকাট কি'" #: setup/setup.ui:115 msgid "Next input method:" msgstr "পিছৰ ইনপুট পদ্ধতি:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "তালিকাত উপস্থিত পূৰ্ববৰ্তী ইনপুট পদ্ধতিলৈ পৰিবৰ্তনৰ বাবে প্ৰযোজ্য চৰ্টকাট কি'" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "আগৰ ইনপুট পদ্ধতি" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "সামৰ্থবান বা অসামৰ্থবান কৰক:" #: setup/setup.ui:238 msgid "Enable:" msgstr "সামৰ্থবান কৰক:" #: setup/setup.ui:291 msgid "Disable:" msgstr "অসামৰ্থবান কৰক:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "কিবৰ্ডৰ চৰ্টকাটসমূহ" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "লুক-আপ টেবুলত প্ৰযোজ্য বিকল্পসমূহৰ দিশ নিৰ্ধাৰণ কৰক" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "প্ৰাৰ্থীৰ দিশ:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "ভাষাৰ বাৰ প্ৰদৰ্শন আৰু লুকুৱাৰ উদ্দেশ্যে ibus ৰ আচৰণ নিৰ্ধাৰণ কৰক" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "বৈশিষ্ট্য পেনেল দেখুৱাওক:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "ভাষাৰ পেনেলৰ স্থান:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "চেকবক্স নিৰ্বাচিত হ'লে ভাষাৰ বাৰত ইনপুট পদ্ধতিৰ নাম দেখুৱাওক" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "এপ্লিকেচনৰ উইন্ডোত পূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰক" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "এপ্লিকেচনৰ উইন্ডোত ইনপুট পদ্ধতিৰ পূৰ্বসম্পাদনা লিখনী প্ৰোথিত কৰক" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "স্বনিৰ্বাচিত ফন্ট ব্যৱহাৰ কৰক:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "ফন্ট আৰু শৈলী" #: setup/setup.ui:579 msgid "General" msgstr "সাধাৰণ" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "নিৰ্বাচিত ইনপুট পদ্ধতিক সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাত যোগ কৰক" #: setup/setup.ui:682 msgid "_Remove" msgstr "আঁতৰাওক (_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাৰ পৰা নিৰ্বাচিত ইনপুট পদ্ধতি আঁতৰুৱা হ'ব" #: setup/setup.ui:700 msgid "_Up" msgstr "ওপৰত (_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "নিৰ্বাচিত ইনপুট পদ্ধতিক সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাৰ ওপৰলৈ স্থানান্তৰ কৰক" #: setup/setup.ui:718 msgid "_Down" msgstr "তলত (_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "নিৰ্বাচিত ইনপুট পদ্ধতিক সামৰ্থবান ইনপুট পদ্ধতিৰ তালিকাৰ তললৈ স্থানান্তৰ কৰক" #: setup/setup.ui:736 msgid "_About" msgstr "বিষয়ে (_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "নিৰ্বাচিত ইনপুট পদ্ধতি সংক্ৰান্ত তথ্য দেখুৱাওক" #: setup/setup.ui:754 msgid "_Preferences" msgstr "পছন্দ (_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "নিৰ্বাচিত ইনপুট পদ্ধতিৰ ইনস্টল দেখুৱাওক" #: setup/setup.ui:812 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 "" "কি'বৰ্ড চৰ্টকাট কি অথবা পেনেল আইকন ক্লিক কৰি সক্ৰিয় ইনপুট পদ্ধতিত ওপৰৰ " "তালিকাত নিৰ্বাচিতসমূহৰ পৰা চুইচ কৰিব পৰা যাব। " #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "ইনপুট পদ্ধতি খোলা আৰু বন্ধ কৰাৰ বাবে প্ৰয়োজনীয় চৰ্টকাট কি' নিৰ্ধাৰণ কৰক" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "স্বনিৰ্বাচিত ফন্ট ব্যৱহাৰ কৰক:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "কিবৰ্ডৰ বিন্যাস" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "বিশ্বব্যাপী ইনপুট পদ্ধতি সংহতিসমূহ" #: setup/setup.ui:1298 msgid "Advanced" msgstr "উন্নত" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "লগিনত ibus আৰম্ভ কৰক" #: setup/setup.ui:1358 msgid "Startup" msgstr "আৰম্ভণি" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "কেৱল ইঞ্জিন নাম তালিকাভুক্ত কৰক" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus লে সংযোগ কৰিব নোৱাৰি।\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "ভাষা: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "কোনো ইঞ্জিন সংহতি কৰা হোৱা নাই।\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "বিশ্বব্যাপী ইঞ্জিন সংহতি কৰা ব্যৰ্থ হল।\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "বিশ্বব্যাপী ইঞ্জিন প্ৰাপ্ত কৰা ব্যৰ্থ হল।\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "চিস্টেম ৰেজিস্ট্ৰি ক্যাশ পঢ়ক।" #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "ৰেজিস্ট্ৰি ক্যাশ FILE পঢ়ক।" #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "ৰেজিস্ট্ৰি ক্যাশ বৈধ নহয়।\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "চিস্টেম ৰেজিস্ট্ৰি ক্যাশ লিখক।" #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "ৰেজিস্ট্ৰি ক্যাশ FILE লিখক।" #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "পুনৰ সংহতি কৰা হৈছে" #: tools/main.vala:399 msgid "Done" msgstr "কৰা হল" #: tools/main.vala:444 msgid "Set or get engine" msgstr "ইঞ্জিন সংহতি কৰক অথবা প্ৰাপ্ত কৰক" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon প্ৰস্থান কৰক" #: tools/main.vala:446 msgid "Show available engines" msgstr "উপলব্ধ ইঞ্জিনসমূহ দেখুৱাওক" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(প্ৰণয়ন কৰা হোৱা নাই)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon পুনৰাম্ভ কৰক" #: tools/main.vala:449 msgid "Show version" msgstr "সংস্কৰণ দেখুৱাওক" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "ৰেজিস্ট্ৰি ক্যাশৰ সমল দেখুৱাওক" #: tools/main.vala:451 msgid "Create registry cache" msgstr "ৰেজিস্ট্ৰি ক্যাশ সৃষ্টি কৰক" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon ৰ D-Bus ঠিকনা প্ৰিন্ট কৰক" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "সংৰূপৰ মানসমূহ দেখুৱাওক" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "সংৰূপৰ মানসমূহ পুনৰ সংহতি কৰক" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "এই তথ্য দেখুৱাওক" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "ব্যৱহাৰ: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "কমান্ডসমূহ:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s এটা অজ্ঞাত কমান্ড!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "বন্ধ কৰক (_C)" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus এটা Linux/Unix ৰ কাৰণে বুদ্ধিমান ইনপুট bus।" #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "" "অমিতাক্ষ ফুকন (aphukan@fedoraproject.org), নীলমদ্যুতি গোস্বামী (ngoswami@redhat." "com)" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "পছন্দ" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "পুনাৰম্ভ" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "প্ৰস্থান" #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = স্বনিৰ্বাচিত" #~ msgid "IBus Update" #~ msgstr "IBus আপডেইট" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Super+space এতিয়া অবিকল্পিত হটকি।" ibus-1.5.22/po/fr.po0000644000000000000000000031710513623751600011031 00000000000000# French translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2020 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Charles-Antoine Couret , 2009 # dominique bribanick , 2011,2014 # Jérôme Fenal , 2012-2013 # Julien Humbert , 2009-2014, 2020. # Sam Friedmann , 2010 # Julien Humbert , 2009-2015, 2020. # fujiwara , 2015. #zanata # Jean-Baptiste Holcroft , 2016. #zanata, 2020. # José Fournier , 2016. #zanata # Edouard Duliege , 2017. #zanata # Emmanuel Nedelec , 2017. #zanata # Jean-Baptiste Holcroft , 2017. #zanata, 2020. # José Fournier , 2017. #zanata # fujiwara , 2017. #zanata # Jean-Baptiste Holcroft , 2018. #zanata, 2020. # elmerys , 2018. #zanata # fujiwara , 2018. #zanata # Jean-Baptiste Holcroft , 2019. #zanata, 2020. # fujiwara , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2020-02-05 04:16+0000\n" "Last-Translator: Julien Humbert \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 3.10.3\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Précharger les moteurs" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Précharger les moteurs au démarrage d’ibus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Ordre des moteurs" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 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/dconf/org.freedesktop.ibus.gschema.xml:22 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/dconf/org.freedesktop.ibus.gschema.xml:23 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Numéro de version enregistré" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Dispositions latines ne disposant pas d’ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 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/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Utiliser xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 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/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Utiliser la disposition clavier système" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Utiliser la disposition clavier système (XKB)" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Insérer le texte en cours d’édition" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Insérer le texte en cours d’édition dans la fenêtre de l’application" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Utiliser la méthode d’éntrée globale" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Partager la même méthode d’entrée pour toutes les applications" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Par défaut, activer la méthode d’entrée" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 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/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "Préservation des préfixes de nom DConf" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Préfixes des clés DConf pour arrêter la conversion de nom" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Raccourci clavier déclencheur" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "Raccourcis claviers pour activer ou désactiver les méthodes d’entrées" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Raccourci clavier déclencheur pour gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Activer les raccourcis clavier" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "Les raccourcis clavier pour la méthode d’entrée sont activés" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Désactiver les raccourcis clavier" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "Les raccourcis clavier pour désactiver la méthode d’entrée" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Raccourci clavier pour passer au moteur suivant" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 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/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Raccourci clavier pour revenir au moteur précédent" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 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/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Masquage automatique" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "Comportement du panneau de propriétés. 0 = Ne pas afficher, 1 = Cacher " "automatiquement, 2 = Toujours afficher" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Position de la barre de langues" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 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/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Temps en millisecondes pour afficher le panneau de propriétés" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "Temps en millisecondes pour afficher le panneau de propriétés après prise du " "focus ou changement des propriétés." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Orientation de la liste des candidats" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Orientation de la liste des candidats. 0 = Horizontale, 1 = Verticale" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Afficher l’icône dans la boîte à miniatures" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Afficher le nom de la méthode d’entrée" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Afficher le nom de la méthode d’entrée sur la barre de langues" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "Valeur RGBA de l’icône XKB" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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ères de la disposition et cette " "chaîne de caractères est affichée avec sa valeur RGBA. Cette valeur RGBA " "peut être 1. le nom d’une couleur X11, 2. une valeur hexadécimale sous la " "forme « #rrggbb » où « r », « g » et « b » sont des chiffres hexadé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, est " "un nombre à virgule flottante compris entre 0 et 1." #: data/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" "Temps en millisecondes pour afficher l’icône de panneau d’une propriété" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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 "" "Millisecondes d’affichage de l’icône du panneau d’une propriété lorsqu’un " "moteur est chargé si la propriété est renseignée par a valeur de icon-prop-" "key dans IBusEngineDesc. Si la valeur est 0, sans délai et l’icône de " "propriété est montrée immédiatement." #: data/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Utiliser une police personnalisée :" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Utiliser une police personnalisée pour la barre de langues" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Police personnalisée" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Police personnalisée pour la barre de langues" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Touches de raccourcis Unicodes pour gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "" "Les touches de raccourcis pour activer ou désactiver la frappe en mode " "Unicode" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Raccourcis clavier des émoticônes pour gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "Raccourcis clavier pour activer ou désactiver la saisie des émoticônes" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" "Nom de la police personnalisée pour les caractères d’émoticônes dans la " "boite de dialogue" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Langue par défaut pour le dictionnaire des émoticônes" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Choisissez la langue par défaut pour les dictionnaires d’émoticônes dans la " "boite de dialogue. La valeur $Lang est appliquée à /usr/share/ibus/dicts/" "emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "liste des émoticônes favorites dans la boite de dialogue" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Vous pouvez afficher les émoticônes favorites dans la liste des émoticônes " "si celle-ci contient des caractères." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "liste des annotations d’émoticônes favorites dans la boite de dialogue" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" "Vous pouvez assigner une annotation pour une émoticône favorite dans cette " "liste." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" "Si les annotations d’émoticônes peuvent correspondre partiellement ou non" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Si les annotations d’émoticônes peuvent correspondre ou non à une chaîne " "partielle plutôt qu’à la chaîne complète." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Correspondance d’annotations d’émoticônes ayant la longueur spécifiée" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Correspondances partielles avec plus que le nombre de caractères spécifié " "plutôt qu’une correspondance exacte." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" "Choisir une condition de correspondance partielle d’annotations d’émoticônes" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Choisissez une des conditions suivantes pour pour la correspondance " "partielle d’annotations d’émoticônes : 0 == correspondance de préfixe, 1 == " "correspondance de suffixe, 2 == correspondance de contenu" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Charge les données relatives aux émoticônes au démarrage" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Charge les données relatives aux émoticônes au démarrage si la condition est " "remplie. 10Mb de mémoire sont nécessaires pour charger ces données. Sinon, " "les données des émoticônes sont chargées lors de l’ouverture de la boite de " "dialogue des émoticônes." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Charge les données Unicode au démarrage" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Charge les données Unicode au démarrage si la condition est remplie. 15Mb de " "mémoire sont nécessaires pour charger ces données. Sinon, les données " "Unicode sont chargées lors de l’ouverture de la boite de dialogue des " "émoticônes. Même dans le cas où la condition est remplie, les données " "Unicode sont toujours chargées après les données des émoticônes." #: 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:209 msgid "Other" msgstr "Autre" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Sélectionner la langue" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "A_nnuler" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_Valider" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Plus…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "À propos" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "_Fermer" #: 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" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Ajouter" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Méthode d’entrée" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "Préférences de IBus" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "" "Utiliser le raccourci clavier avec Maj pour revenir à la méthode d’entrée " "précédente" #: setup/main.py:515 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:536 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:550 #, 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:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Sélection du raccourci clavier pour %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "Changement de méthode d’entrée" #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horizontale" #: setup/setup.ui:14 msgid "Vertical" msgstr "Verticale" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Coin supérieur gauche" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Coin supérieur droit" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Coin inférieur gauche" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Coin inférieur droit" #: setup/setup.ui:37 msgid "Custom" msgstr "Personnalisée" #: setup/setup.ui:48 msgid "Do not show" msgstr "Ne pas afficher" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Cacher automatiquement" #: setup/setup.ui:54 msgid "Always" msgstr "Toujours afficher" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Méthode d’entrée suivante :" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Méthode d’entrée précédente :" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "…" #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Activer / désactiver :" #: setup/setup.ui:238 msgid "Enable:" msgstr "Activer :" #: setup/setup.ui:291 msgid "Disable:" msgstr "Désactiver :" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Raccourcis clavier" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Permet de choisir l’orientation de la liste des candidats" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Orientation de la liste des candidats :" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "Permet de choisir l’affichage de la barre de langues d’ibus" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "Afficher le panneau de propriétés :" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Afficher la barre de langues :" #: setup/setup.ui:494 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:508 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:513 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:527 msgid "Use custom font:" msgstr "Utiliser une police personnalisée :" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Police et Style" #: setup/setup.ui:579 msgid "General" msgstr "Paramètres généraux" #: setup/setup.ui:671 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:682 msgid "_Remove" msgstr "_Enlever" #: setup/setup.ui:689 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:700 msgid "_Up" msgstr "_Monter" #: setup/setup.ui:707 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:718 msgid "_Down" msgstr "_Descendre" #: setup/setup.ui:725 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:736 msgid "_About" msgstr "À _propos" #: setup/setup.ui:743 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:754 msgid "_Preferences" msgstr "_Préférences" #: setup/setup.ui:761 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:812 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." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" "Les touches de raccourcis pour activer les conversions des annotations " "d’émoticônes ou des noms Unicode" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Annotation des émoticônes :" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "" "Les touches de raccourcis pour activer les conversions en point de code " "Unicode" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Point de code Unicode :" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "Défini la police des émoticônes candidates dans la boite de dialogue" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Police de caractère Unicode :" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" "Défini la langue pour les annotations d’émoticônes dans la boite de dialogue" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Langue d’annotations des émoticônes :" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Correspondances partielles d’annotations des émoticônes ayant les conditions " "suivantes et plus que le nombre de caractères :" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Si les annotations peuvent correspondre à une chaîne partielle plutôt qu’une " "correspondance exacte" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Correspondance de préfixe" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Correspondance de suffixe" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Correspondance de contenu" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Émoticône" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Disposition du clavier" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Configuration de la méthode d’éntrée globale" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Avancé" #: setup/setup.ui:1317 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:1341 msgid "Start ibus on login" msgstr "Démarrer IBus lors de la connexion" #: setup/setup.ui:1358 msgid "Startup" msgstr "Démarrage" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Activités" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Animaux & nature" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Composant" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Drapeaux" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Nourriture & boisson" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Objets" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "Personnes & parties du corps" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "Frimousses & émotion" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Symboles" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Voyages & lieux" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Latin de base" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Supplément Latin-1" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Latin étendu-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Latin étendu-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "Extensions à l’API" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Diacritiques sans chasse combinés avec une espace" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Marques diacritiques combinantes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Grec et copte" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Cyrillique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Supplément cyrillique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Arménien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Hébreu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Arabe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Syriaque" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Supplément arabe" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "N’Ko" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Samaritain" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandéen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Supplément Syriaque" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Arable étendu-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Devanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengali" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmukhi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Gujarati" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Oriya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tamil" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Télougou" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Kannada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malayalam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Sinhala" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Thaïlandais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Lao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tibétain" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Myanmar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Géorgien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Hangeul Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Éthiopien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Supplément éthiopien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Cherokee" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Syllabaire autochtone canadien unifié" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Runique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Runique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunoo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buhid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Buhid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Khmer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Mongol" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Syllabaires canadiens autochtones unifiés étendus" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai Le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Nouveau Tai Lue" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Symboles khmers" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Bouguinais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Tai Tham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Marques diacritiques combinantes étendues" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Balinais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Sundanais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepcha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ol Chiki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Cyrillique étendu-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "Géorgien étendu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Supplément sundanais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Extensions védiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Extensions phonétiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Supplément d’extensions phonétiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Supplément marques diacritiques combinantes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Latin étendu additionnel" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Grec étendu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Ponctuation générale" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Exposants et indices" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Symboles monétaires" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Marques diacritiques combinantes pour symboles" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Symboles Letterlike" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Formes numérales" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Flèches" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Opérateurs mathématiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Divers techniques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Contrôler des photos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Reconnaissance optique de caractères" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Alphanumériques cerclés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Dessiner des boîtes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Éléments blocs" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Formes géométriques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Symboles divers" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Casseaux" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Divers symboles mathématiques-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Flèches-A supplémentaires" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Motifs en braille" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Flèches-B supplémentaires" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Symboles mathématiques-B divers" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Supplément opérateurs mathématiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Symboles et flèches divers" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Glagolitique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Latin étendu-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Copte" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Supplément géorgien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Éthiopien étendu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Cyrillique étendu-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Ponctuation complémentaire" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "Supplément Radicaux CJC" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Radicaux Kangxi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Caractères de description idéographique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "Symboles et ponctuation CJC" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Compatibilité Hangeul Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Bopomofo étendu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "Traits CJC" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Extensions Katakana phonétiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Lettres et mois CJC cerclés" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "Compatibilité CJC" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "Idéographes unifiés CJC Extension A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Symboles hexagrammes Yì Jīng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "Idéographes unifiés CJC" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Syllables Yi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Radicaux Yi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Vai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Cyrillique étendu-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Bamoun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Lettres modificatives de ton" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Latin étendu-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Sylotî nâgrî" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Formes numériques communes indiennes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Phags-pa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurachtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Devanagari étendu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Hangeul Jamo étendu-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Javanais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Myanmar étendu-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Cham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Myanmar étendu-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tai Viet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Extensions meetei mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Éthiopien étendu-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Latin étendu-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Supplément cherokee" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Syllabes hangeul" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Hangeul Jamo étendu-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Substituts hauts" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Substituts d’utilisation privé hauts" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Substituts bas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Zone à usage privé" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "Idéographes de compatibilité CJC" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Formes de présentation alphabétique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Formes A de présentation arabes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Sélecteurs de variante" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Formes verticales" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Demi-signes combinatoires" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "Formes de compatibilité CJC" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Petites variantes de forme" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Formes B de présentation arabes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Formes de demi et pleine chasse" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Caractères spéciaux" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Syllabaire linéaire B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Idéogrammes du linéaire B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Nombres égéens" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Nombres grecs anciens" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Symboles anciens" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Disque de Phaistos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Lycien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Carien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Nombres epact coptes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Vieux italique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gothique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Permien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ougqritique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Vieux perse" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Deseret" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Shavien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmanya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Elbasan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Albanais du Caucase" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Linéaire A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Syllabaire Chypriote" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "Araméen impérial" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Palmyrène" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nabatéen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Hatran" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Phénicien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lydien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Hiéroglyphes Méroïtique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Cursive Méroïtique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Kharoshthi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Arabe ancien du Sud" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Arabe ancien du Nord" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Manichéen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Avestique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Parthe des inscriptions" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Pehelevi des inscriptions" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Pehelevi des psautiers" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Turc Ancien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Hongrois Ancien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "Hanifi Rohingya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Symboles numériques Rûmî" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "Sogdiane ancien" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "Sogdiane" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "Élymaïque" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Brahmî" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaïthî" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Sora Sompeng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Chakma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Mahajani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Sharada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Nombre archaïque Cingalais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Khojkï" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Multani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Khudawadi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Grantha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Newa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Tirhuta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Siddham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Modi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Supplément Mongol" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takrî" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Dogri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Warang Citi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "Nandinagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Zanabazar carré" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Soyombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Gondi de Masaram" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Gong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Maka" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "Supplément Tamoul" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Cunéiforme" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Nombres cunéiformes et ponctuation" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Cunéiforme dynastique archaïque" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Hiéroglyphes égyptiens" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "Réglages du format hiéroglyphes égyptiens" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Hiéroglyphes hittites" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Supplément Bamoun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mro" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Bassa Vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Pahawh Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Medf" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Miao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Symboles et ponctuation idéographiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Tangoute" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Composants tangoute" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Supplément Kana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Kana étendu A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "Extension de petits Kana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Nushu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Duployan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Réglages du format abrégé" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Symboles musicaux byzantins" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Symboles musicaux" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Notation musicale grecque ancienne" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "Chiffres mayas" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Symboles Tai Xuan Jing" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Chiffres-bâtonnets chinois" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Symboles mathématiques alphanumériques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "SignWriting de Sutton" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Supplément Glagolitique" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "Nyiakeng Puachue Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "Wantcho" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Écriture mendé Kikakui" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "Nombres hindous Siyaq" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "Nombres ottomans Siyaq" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Symboles mathématiques alphanumériques arabes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Tuiles de mahjong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Dominos" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Cartes à jouer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Supplément alphanumérique cerclé" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Supplément idéographique cerclé" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Symboles et pictogrammes divers" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Émoticônes" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Casseaux ornementaux" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Symboles du transport et cartographiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Symboles alchimiques" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Formes géométriques étendues" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Flèches-C supplémentaires" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Symboles et pictogrammes supplémentaires" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "Symboles d’échecs" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "Symboles et pictogrammes étendus-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "Idéographes unifiés CJC Extension B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "Idéographes unifiés CJC Extension C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "Idéographes unifiés CJC Extension D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "Idéographes unifiés CJC Extension E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "Idéographes unifiés CJC Extension F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "Idéographes de compatibilité CJK supplémentaires" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Balises" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Suppléments de sélecteurs de variante" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Area-A Zone à usage privé supplémentaire" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Area-B Zone à usage privé supplémentaire" #: tools/main.vala:51 msgid "List engine name only" msgstr "Ne lister que les noms des moteurs" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Connexion à IBus impossible.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "langue : %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Aucun moteur n’est configuré.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Échec de la configuration du moteur global.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Échec de la récupération du moteur global.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Lire le cache du registre système." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Lire le fichier FILE du cache du registre système." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "Le cache du registre est invalide.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Enregistrer le cache du registre système." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Enregistrer le fichier FILE du cache du registre." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "Utilisez les chemins de schéma du processeur au lieu du noyau ibus, qui " "peuvent être des valeurs séparées par des virgules." #: tools/main.vala:381 msgid "Resetting…" msgstr "Réinitialisation…" #: tools/main.vala:399 msgid "Done" msgstr "Effectuée" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Définir ou obtenir le moteur" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Quitter ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "Afficher les moteurs disponibles" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Non implémenté)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Redémarrer ibus-daemon" #: tools/main.vala:449 msgid "Show version" msgstr "Afficher la version" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Afficher le contenu du cache du registre" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Créer le cache du registre" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Afficher l’adresse D-Bus de ibus-daemon" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Afficher les valeurs de configuration" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Réinitialiser les valeurs de configuration" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Copie l’émoticône dans la boite de dialogue vers le presse-papier " #: tools/main.vala:458 msgid "Show this information" msgstr "Afficher cette information" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Utilisation : %s COMMANDE [OPTION…]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Commandes :\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s n’est pas une commande connue !\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Favoris" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Autres" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Ouvrir un choix Unicode" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Rétablir le choix emoji" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Page suivante" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Page précédente" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Montrer les variantes d’émoticônes" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Fermer" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Menu" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Cliquez pour voir le message d’avertissement" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Chargement d’un dictionnaire Unicode :" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Point de code : %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "A des variantes d’émoticônes" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Description : %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Aucune" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Annotations : %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Nom : %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Alias : %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Choix d’émoticônes" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Choix Unicode" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "Impossible d’obtenir l’application texte actuelle. Veuillez sélectionner à " "nouveau votre application. Par exemple, appuyez plusieurs fois sur la touche " "Échap pour relâcher le mode de saisie emoji, cliquez sur votre bureau et " "cliquez à nouveau sur votre application texte." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Abandon du choix d’émoticône." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Une émoticône a été copiée dans le presse-papier." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "« POLICE » des émoticônes dans la boite de dialogue" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "POLICE" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" "« LANGUE » des annotations dans la boite de dialogue des émoticône. Par ex : " "« fr »" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "LANGUE" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Les annotations d’émoticônes peuvent correspondre partiellement" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Faire correspondre avec la longueur de l’entier indiqué" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Faire correspondre avec la condition de l’entier indiqué" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "Panneau IBUS" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus est un IME intelligent pour Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Julien Humbert " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Préférences" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Redémarrer" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/kn.gmo0000644000000000000000000006454413623751603011207 000000000000004L     # 1Hboq<  ": RH] # 4 =IN(a(@DXk 9 ".3b02c  '? X!f @C6Pcv9)^0[ .%&.UZq? #J7( '991s2-6&M@t'"3 IV8jO'Qm@D\D<.#-R4/C `  '   > !A! \!h!q! !!######## ### # #$$+$F%, &:&E>&g&2&E'e'y''))***.+#5+#Y+l}+5+ ,H8,Q,,.,p--.]/."...{.^/n 0x011?2Z2(3(H31q33s4w4=5 ?5 I5wj55y7&8(9:":0@:>q:;:*:;);^;<4<P<M=XJ><>_>h@?? K@X@@ BBB7kCbCXD<_DMD D. EQ:EgEESF-6G!dGAGGH>IaDI~IK%J}qJYJIKLLV0MlMMWxNNTOI,PvPJQxLQ8Q7QO6RRSST^gUwU>WWXrY ZZB[#[#[^"\t\\&]J]C^K^W_k_i/`c`$` "aQ,ag~aaggg!ggh%h@h Oh$phh hhYh;(icp{C~fB}*X /ntZ7TbQ%@ SFOgV)`w=?6jsd_Au 3+h\$ imI]M&Dk"zlErx:1N8-J(^|HGRW;[L4y!K Yqa5eP0,2vU9<>#'o.%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutAdd the selected input method into the enabled input methodsAdvancedAlwaysAuthor: %s Auto hideBottom left cornerBottom right cornerCan't connect to IBus. Candidates orientation:Commands: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Create registry cacheCustomCustom fontCustom font name for language panelDConf preserve name prefixesDescription: Disable shortcut keysDisable:Do not showDoneEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Engines orderExit ibus-daemonFollow the input cursor in case the panel is always shownGeneralGet global engine failed. Hide automaticallyHorizontalIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.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.Input MethodKbdKey code:Keyboard layout: %s Keyboard shortcutsLanguage panel positionLanguage panel position:Language: %s Latin layouts which have no ASCIIList engine name onlyModifiers:More…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listNext engine shortcut keysNext input method:No engine is set. Orientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOtherPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.Remove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.Saved engines order in input method listSaved version numberSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet global engine failed. Set or get engineSet the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableShare the same input method among all applicationsShow available enginesShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionStart ibus on loginThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offTop left cornerTop right cornerTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.Usage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVerticalWrite the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha._About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRlanguage: %s switching input methodstranslator-creditsProject-Id-Version: IBus Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2018-02-20 04:22-0500 Last-Translator: Copied by Zanata Language-Team: Kannada Language: kn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: Zanata 3.9.6 %s ಎನ್ನುವುದು ಗೊತ್ತಿರದ ಆದೇಶ! (ಅನ್ವಯಿಸಲಾಗಿಲ್ಲ)...ಅಕ್ಷರಶೈಲಿ ಹಾಗು ವಿನ್ಯಾಸಜಾಗತಿಕ ಇನ್‌ಪುಟ್‌ ವಿಧಾನದ ಸಿದ್ಧತೆಗಳುಕೀಲಿಮಣೆ ವಿನ್ಯಾಸಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ಗಳುಆರಂಭIBus ಚತುರ ಇನ್‌ಪುಟ್ ಬಸ್ Homepage: https://github.com/ibus/ibus/wiki ಸಕ್ರಿಯ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿರುವುದರಿಂದ ಮೇಲಿನ ಪಟ್ಟಿಯಲ್ಲಿನ ಬೇರೆಯೊಂದಕ್ಕೆ ಬದಲಾಯಿಸಲು ಕೀಲಿಮಣೆ ಸಮೀಪಮಾರ್ಗಗಳನ್ನು ಬಳಸಬಹುದು ಅಥವ ಪ್ಯಾನಲ್‌ ಚಿಹ್ನೆಯನ್ನು ಕ್ಲಿಕ್ ಮಾಡಬಹುದು.ಇದರ ಬಗ್ಗೆಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳಿಗೆ ಸೇರಿಸಿಸುಧಾರಿತಯಾವಾಗಲೂಕತೃ: %s ಸ್ವಯಂ ಅಡಗಿಸುವಿಕೆಕೆಳಗಿನ ಎಡ ಮೂಲಕೆಳಗಿನ ಬಲ ಮೂಲIBus ನೊಂದಿಗೆ ಸಂಪರ್ಕಕಲ್ಪಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ. ಅಭ್ಯರ್ಥಿಗಳ ಹೊಂದಿಕೆ:ಆದೇಶಗಳು: Copyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯನ್ನು ರಚಿಸು.ಇಚ್ಛೆಯಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಭಾಷೆಯ ಫಲಕಕ್ಕಾಗಿನ ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯ ಹೆಸರುDConf ಹೆಸರುಗಳು ಪ್ರಿಫಿಕ್ಸುಗಳನ್ನು ಹಾಗೆಯೆ ಇರಿಸಿಕೊಳ್ಳುತ್ತದೆವಿವರಣೆ: ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಅಶಕ್ತಗೊಳಿಸುಅಶಕ್ತಗೊಳಿಸು:ತೋರಿಸಬೇಡಮುಗಿಯಿತುಪೂರ್ವ-ಸಂಪಾದನಾ(ಪ್ರಿ-ಎಡಿಟ್) ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸುಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ ಪೂರ್ವ-ಸಂಪಾದನಾ(ಪ್ರಿ-ಎಡಿಟ್) ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸುಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ Preedit ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸಿಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ ಇನ್‌ಪುಟ್ ವಿಧಾನದ Preedit ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸಿಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಶಕ್ತಗೊಳಿಸುಅನ್ವಯವು ಇನ್‌ಪುಟ್ ಗಮನವನ್ನು ಪಡೆದುಕೊಂಡಾಗ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಶಕ್ತಗೊಳಿಸುಶಕ್ತಗೊಂಡ ಅಥವ ಅಶಕ್ತಗೊಂಡ:ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಶಕ್ತಗೊಳಿಸುಶಕ್ತಗೊಳಿಸು:ಎಂಜಿನ್‌ಗಳ ಕ್ರಮibus-daemon ಇಂದ ನಿರ್ಗಮಿಸುಪ್ಯಾನಲ್‌ ಅನ್ನು ಯಾವಾಗಲೂ ತೋರಿಸಲಾಗುತ್ತಿದ್ದರೆ ಇನ್‌ಪುಟ್ ತೆರೆಸೂಚಕವನ್ನು ಅನುಸರಿಸುಸಾಮಾನ್ಯಸಾರ್ವತ್ರಿಕ ಎಂಜಿನ್ ಪಡೆಯುವಿಕೆಯು ವಿಫಲಗೊಂಡಿದೆ. ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಡಗಿಸುಲಂಬIBus ಆದ್ಯತೆಗಳುIBus ಡೀಮನ್ ಅನ್ನು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಆರಂಭಿಸಲಾಗಿಲ್ಲIBus ಅನ್ನು ಆರಂಭಿಸಲಾಗಿದೆ! ನಿಮಗೆ IBus ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗದೆ ಇದ್ದಲ್ಲಿ, ನಿಮ್ಮ $HOME/.bashrc ಯಲ್ಲಿ ಈ ಕೆಳಗಿನ ಸಾಲನ್ನು ಸೇರಿಸಿ, ನಂತರ ನಿಮ್ಮ ಗಣಕತೆರೆಗೆ ಮರಳಿ ದಾಖಲಾಗಿ. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus ಎನ್ನುವುದು Linux/Unix ಗಾಗಿನ ಒಂದು ಚತುರ ಇನ್‌ಪುಟ್ ಬಸ್.ಟ್ರೂ ಆದಲ್ಲಿ, ಪ್ಯಾನಲ್‌ ಅನ್ನು ಯಾವಾಗಲೂ ತೋರಿಸಲಾಗುತ್ತಿದ್ದಲ್ಲಿ, ಇನ್‌ಪುಟ್ ತೆರೆಸೂಚಕವನ್ನು ಪ್ಯಾನಲ್‌ ಅನುಸರಿಸುತ್ತದೆ. ಫಾಲ್ಸ್ ಆದಲ್ಲಿ, ಪ್ಯಾನಲ್‌ ಅನ್ನು ನಿಶ್ಚಿತ ಸ್ಥಳದಲ್ಲಿ ತೋರಿಸಲಾಗುತ್ತದೆ.ಇನ್‌ಪುಟ್ ವಿಧಾನKbdಕೀಲಿ ಸಂಕೇತ:ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸ: %s ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ಗಳುಭಾಷೆಯ ಫಲಕವನ್ನು ತೋರಿಸುಭಾಷೆಯ ಫಲಕದ ಸ್ಥಳ:ಭಾಷೆ: %s ಯಾವುದೆ ASCII ಅನ್ನು ಹೊಂದಿರದ ಲ್ಯಾಟಿನ್ ವಿನ್ಯಾಸಗಳು (ಲೇಔಟ್‌)ಎಂಜಿನ್‌ನ ಹೆಸರನ್ನು ಮಾತ್ರ ಪಟ್ಟಿ ಮಾಡುಮಾರ್ಪಡಕಗಳು:ಇನ್ನಷ್ಟು...ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಕೆಳಕ್ಕೆ ಜರುಗಿಸಿಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಮೇಲಕ್ಕೆ ಜರುಗಿಸಿಮುಂದಿನ ಎಂಜಿನ್ ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳುಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನ:ಯಾವುದೆ ಎಂಜಿನ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ. ನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ಹೊಂದಿಕೆನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ಹೊಂದಿಕೆ. 0 = ಅಡ್ಡಲಾಗಿ, 1 = ಲಂಬವಾಗಿಇತರೆದಯವಿಟ್ಟು ಒಂದು ಕೀಲಿಯನ್ನು (ಅಥವ ಒಂದು ಕೀಲಿ ಸಂಯೋಜನೆಯನ್ನು) ಒತ್ತಿದಯವಿಟ್ಟು ಒಂದು ಕೀಲಿಯನ್ನು (ಅಥವ ಒಂದು ಕೀಲಿ ಸಂಯೋಜನೆಯನ್ನು) ಒತ್ತಿ. ಕೀಲಿಯನ್ನು ಬಿಟ್ಟಾಗ ಸಂವಾದವು ಮುಚ್ಚಲ್ಪಡುತ್ತದೆ.IME ಬದಲಾವಣೆಗಾರ ಕಿಟಕಿಗಾಗಿ ಪುಟಿಕೆ (ಪಾಪ್ಅಪ್) ವಿಳಂಬ, ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿಆದ್ಯತೆಗಳು ಹೆಸರಿನ ಪರಿವರ್ತನೆಯನ್ನು ಬದಲಿಸುವ DConf ಕೀಲಿಗಳ ಪ್ರಿಫಿಕ್ಸುಗಳುಪ್ರಿಲೋಡ್ ಎಂಜಿನ್‌ಗಳುibus ಆರಂಭಗೊಂಡಾಗ ಲೋಡ್ ಮಾಡಲಾದ ಎಂಜಿನ್‌ಗಳುಹಿಂದಿನ ಎಂಜಿನ್ ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳುಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನ:ibus-daemon ನ D-Bus ವಿಳಾಸವನ್ನು ಮುದ್ರಿಸುಬಿಟ್ಟು ಬಿಡು XKB ಚಿಹ್ನೆಯ RGBA ಮೌಲ್ಯರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆ FILE ಅನ್ನು ಓದು.ವ್ಯವಸ್ಥೆಯ ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯನ್ನು ಓದು.ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಿಂದ ತೆಗೆದು ಹಾಕಿಸಂರಚನಾ ಮೌಲ್ಯಗಳನ್ನು ಮರುಹೊಂದಿಸುಮರುಹೊಂದಿಸುವಿಕೆ...ಪುನರಾರಂಭಿಸುibus-daemon ಅನ್ನು ಮರಳಿ ಸ್ಥಾಪಿಸುibus ಅನ್ನು ಬದಲಾಯಿಸಿದಾಗ, .xmodmap ಅಥವ .Xmodmap ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ xmodmap ಅನ್ನು ಚಲಾಯಿಸಿ.ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಪಟ್ಟಿಯಲ್ಲಿನ ಉಳಿಸಲಾದ ಎಂಜಿನ್‌ಗಳುಉಳಿಸಲಾದ ಆವೃತ್ತಿ ಸಂಖ್ಯೆಒಂದು ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ%s ಗಾಗಿ ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿIBus ಆದ್ಯತೆಗಳನ್ನು ಸಿದ್ಧಗೊಳಿಸುಸಾರ್ವತ್ರಿಕ ಎಂಜಿನ್ ಹೊಂದಿಸುವಿಕೆಯು ವಿಫಲಗೊಂಡಿದೆ. ಎಂಜಿನ್ ಅನ್ನು ಹೊಂದಿಸು ಅಥವ ಪಡೆದುಕೊಭಾಷಾ ಪಟ್ಟಿಕೆಯನ್ನು ಹೇಗೆ ತೋರಿಸಬೇಕು ಅಥವ ಅಡಗಿಸಬೇಕು ಎನ್ನುವ ibus ನ ವರ್ತನೆಯನ್ನು ಹೊಂದಿಸಿನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ವಾಲಿಕೆಯನ್ನು ಹೊಂದಿಸಿಒಂದೇ ಇನ್‌ಪುಟ್‌ ವಿಧಾನವನ್ನು ಎಲ್ಲಾ ಅನ್ವಯಗಳಲ್ಲೂ ಬಳಸುಲಭ್ಯವಿರುವ ಎಂಜಿನ್‌ಗಳನ್ನು ತೋರಿಸುವ್ಯವಸ್ಥೆಯ ಟ್ರೇಯಲ್ಲಿ ಚಿಹ್ನೆಯನ್ನು ತೋರಿಸುಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸುಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು ತೋರಿಸುಭಾಷೆಯ ಫಲಕದಲ್ಲಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು ತೋರಿಸುಗುರುತುಚೌಕದಲ್ಲಿ ಗುರುತು ಹಾಕಿದಾಗ ಭಾಷಾ ಪಟ್ಟಿಯಲ್ಲಿ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು ತೋರಿಸುಗುಣದ ಪ್ಯಾನಲ್‌ ಅನ್ನು ತೋರಿಸು:ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಸೆಟ್ಅಪ್‌ ಅನ್ನು ತೋರಿಸುಸಂರಚನೆಯ ಮೌಲ್ಯಗಳನ್ನು ತೋರಿಸುರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯಲ್ಲಿರುವ ವಿಷಯವನ್ನು ತೋರಿಸುಈ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸುಆವೃತ್ತಿಯನ್ನು ತೋರಿಸುಪ್ರವೇಶಿಸಿದಾಗ ibus ಅನ್ನು ಆರಂಭಿಸುIBus ಡೀಮನ್ ಚಾಲನೆಯಲ್ಲಿಲ್ಲ. ನೀವದನ್ನು ಆರಂಭಿಸಲು ಬಯಸುತ್ತೀರೆ?ಗುಣದ ಪ್ಯಾನಲ್‌ನ ವರ್ತನೆ. 0 = ಮೆನುವಿನಲ್ಲಿ ಅಡಕಗೊಳಿಸಲಾಗಿದೆ, 1 = ಸ್ವಯಂ ಅಡಗಿಸು, 2 = ಯಾವಾಗಲೂ ತೋರಿಸುಗುಣದ ಪ್ಯಾನಲ್‌ ಅನ್ನು ತೋರಿಸಬೇಕಿರುವ ಮಿಲಿಸೆಕೆಂಡ್‌ಗಳು:ಗಮನವು ಅಥವ ಗುಣಗಳನ್ನು ಬದಲಾಯಿಸಿದ ನಂತರ ಗುಣದ ಪ್ಯಾನಲ್ ಅನ್ನು ತೋರಿಸಬೇಕಿರುವ ಮಿಲಿಸೆಕೆಂಡುಗಳು.ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯು ಅಮಾನ್ಯವಾಗಿದೆ. ಉಳಿಸಲಾದ ಆವೃತ್ತಿ ಸಂಖ್ಯೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಈ ಹಿಂದೆ ಅನುಸ್ಥಾಪಿಸಲಾದ ibus ಮತ್ತು ಪ್ರಸಕ್ತ ಲಭ್ಯವಿರುವ ibus ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಿರುತ್ತದೆ.ಪಟ್ಟಿಯಲ್ಲಿನ ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳುಪಟ್ಟಿಯಲ್ಲಿನ ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳುಪಟ್ಟಿಯಲ್ಲಿನ ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳುಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳುಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಫ್ ಮಾಡಲು ಬಳಸಬಹುದಾದ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆನ್ ಮಾಡಲು ಬಳಸಬಹುದಾದ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳನ್ನು ಆಫ್ ಹಾಗು ಆನ್ ಮಾಡಲು ಶಾರ್ಟ್-ಕೀಲಿಗಳುಮೇಲಿನ ಎಡ ಮೂಲೆಮೇಲಿನ ಬಲ ಮೂಲೆಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಟ್ರಿಗರ್ ಮಾಡುgtk_accelerator_parse ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಟ್ರಿಗರ್ ಮಾಡುUS ವಿನ್ಯಾಸವನ್ನು ಲ್ಯಾಟಿನ್‌ ವಿನ್ಯಾಸಗಳಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ. ವೇರಿಯಂಟ್‌ ಅನ್ನು ಬಿಡಬಹುದು.ಬಳಕೆ: %s COMMAND [OPTION...] ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸುಭಾಷೆಯ ಫಲಕಕ್ಕಾಗಿ ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯ ಹೆಸರನ್ನು ಬಳಸಿಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸಿ:ಜಾಗತಿಕ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಬಳಸಿಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಿಫ್ಟಿನೊಂದಿಗೆ ಸಮೀಪಮಾರ್ಗವನ್ನು ಬಳಸಿವ್ಯವಸ್ಥೆಯ ಕೀಲಿಮಣೆ (XKB) ವಿನ್ಯಾಸವನ್ನು ಬಳಸಿವ್ಯವಸ್ಥೆಯ ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸವನ್ನು ಬಳಸಿxmodmap ಅನ್ನು ಬಳಸುಲಂಬರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆ FILE ಅನ್ನು ಬರೆ.ವ್ಯವಸ್ಥೆಯ ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯನ್ನು ಬರೆ.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 ರ ಒಳಗಿನ ಒಂದು ತೇಲುವ ಬಿಂದುವಾಗಿರುತ್ತದೆ.ಕುರಿತು (_A)ಸೇರಿಸು (_A)ಅನ್ವಯಿಸು (_A)ರದ್ದು ಮಾಡು (_C)ಮುಚ್ಚು (_C)ಅಳಿಸು (_D)ಕೆಳಕ್ಕೆ (_D)ಸರಿ (_O)ಆದ್ಯತೆಗಳು (_P)ತೆಗೆದು ಹಾಕು (_R)ಮೇಲಕ್ಕೆ (_U)default:LTRಭಾಷೆ: %s ಇನ್‌ಪುಟ್ ವಿಧಾನಗಳನ್ನು ಬದಲಿಸುವಿಕೆಶಂಕರ್ ಪ್ರಸಾದ್ ibus-1.5.22/po/nl.po0000644000000000000000000031045113623751601011031 00000000000000# Dutch translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2019 Takao Fujiwara # This file is distributed under the same license as the ibus package. # # Translators: # Geert Warrink , 2011-2014 # Geert Warrink , 2015. #zanata # fujiwara , 2015. #zanata # Geert Warrink , 2017. #zanata # fujiwara , 2017. #zanata # Geert Warrink , 2018. #zanata # fujiwara , 2018. #zanata # Geert Warrink , 2019. #zanata msgid "" msgstr "" "Project-Id-Version: ibus 1.5.20\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2019-04-16 04:49+0000\n" "Last-Translator: Geert Warrink \n" "Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Zanata 4.6.2\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "Engines voor-laden" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "Engines voor-laden tijdens opstarten van ibus" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "Machine volgorde" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "Opgeslagen machine volgorde in invoermethode lijst" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "Pop-up vertraging milliseconden voor IME omschakelvenster" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 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 in op milliseconden 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "Versienummer opgeslagen" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "Latin indelingen hebben geen ASCII" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 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/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "Gebruik xmodmap" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 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/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "Gebruik systeem toetsenbordindeling" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "Gebruik systeem toetsenbord (XKB) indeling" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "Voeg pre-edit tekst in" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "Voeg pre-edit tekst in in toepassingsvenster" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "Gebruik globale invoermethode" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "Deel dezelfde input-methode voor alle toepassingen" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "Zet invoer-methode standaard aan" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 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/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf behoud van naam voorvoegsels" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "Voorvoegsels van DConf sleutels voor het stoppen van naamconversie" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "Trigger sneltoetsen" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "De sneltoetsen om invoermethode aan of uit te zetten" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "Activeer snelkoppeltoetsen voor gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "Zet sneltoetsen aan" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "De sneltoetsen om invoermethode aan te zetten" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "Zet sneltoetsen uit" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "De sneltoetsen om invoermethode uit te zetten" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "Volgende engine sneltoetsen" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 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/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "Vorige engine sneltoetsen" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "De sneltoetsen voor het omschakelen naar de vorige invoermethode" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "Automatisch verbergen" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 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/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "Taal-paneel positie" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "Volg de input cursor als het paneel altijd getoond wordt" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "Het aanral milliseconden om het eigenschapspaneel te tonen " #: data/dconf/org.freedesktop.ibus.gschema.xml:131 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/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "Oriëntatie van opzoektabel" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "Oriëntatie van opzoektabel. 0 = horizontaal, 1 = verticaal" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "Toon icoon op systeemvak" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "Toon naam van invoermethode" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "Toon naam van invoermethode op taalbalk" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "RGBA waarde van XKB icoon" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" "Het aantal milliseconden om het paneelicoon van een eigenschap te tonen" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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 "" "Het aantal milliseconden om het paneelicoon van een engine icoon aan een " "eigenschapicoon te tonen wanneer de engines omgeschakeld worden, wordt " "gespecificeerd door de waarde van icon-prop-key in IBusEngineDesc. Als de " "waarde 0 is, is er geen delay en wordt de eigenschapicoon onmiddellijk " "getoond." #: data/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "Gebruik aangepast lettertype" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "Gebruik aangepaste lettertype naam voor taal-paneel" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "Aangepaste lettertype" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "Aangepaste lettertype naam voor taal-paneel" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "Unicode sneltoetsen voor gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 msgid "The shortcut keys for turning Unicode typing on or off" msgstr "De sneltoetsen voor het aan of uit zetten van Unicode typen" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "Emoji sneltoetsen voor gtk_accelerator_parse" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "De sneltoetsen om emoji typen aan of uit te zetten" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "Aangepaste lettertype naam voor emoji karakters op de emoji dialoog" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "Standaard taal voor emoji woordenboek" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" "Kies een standaard taal met emoji woordenboeken op de emoji dialoog. De " "waarde $lang wordt toepast in /usr/share/ibus/dicts/emoji-$lang.dict" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "favoriete emoji lijst op de emoji dialoog" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" "Je kunt de favoritee emojis op emoji lijst tonen als deze lijst karakters " "heeft." #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "favoriete emoji annotatielijst op de emoji dialoog" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "Je kunt in deze lijst een annotatie toekennen aan een favoriete emoji." #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "Worden emoji annotaties wel of niet gedeeltelijk gematched" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" "Worden emoji annotaties wel of niet gematched met een gedeeltelijke string " "in plaats van de exacte match." #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "Match emoji annotaties met de gespecificeerde lengte" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" "Match emoji annotaties gedeeltelijk met meer dan het gespecificeerde aantal " "karakters in plaats van de exacte match." #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "Kies een conditie om emoji annotaties gedeeltelijk te matchen" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" "Kies een van de volgende condities om emoji annotaties gedeeltelijk te " "matchen: 0 == Voorvoegsel match, 1 == Achtervoegel match, 2 == Inhoudelijke " "match" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "Laad de emoji data tijdens het opstarten" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" "Laad de emoji data tijden het opstarten indien waar. Er is ongeveer 10MB " "geheugen nodig om de data te laden. Laad de emoji data bij het openen van " "het begin van de emoji dialoog indien onwaar." #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "Laad de Unicode data tijdens het opstarten" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." msgstr "" "Laad de Unicode data tijden het opstarten indien waar. Er is ongeveer 15MB " "geheugen nodig om de data te laden. Laad de Unicode data bij het openen van " "het begin van de emoji dialoog indien onwaar. De Unicode data wordt altijd " "geladen na het laden van de emoji data zelfs bij waar. " #: 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:209 msgid "Other" msgstr "Andere" #: setup/emojilang.py:67 msgid "Select a language" msgstr "Selecteer een taal" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "_Annuleren" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "_Ok" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "Meer…" #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "Over" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "Sl_uiten" #: setup/engineabout.py:72 #, python-format msgid "Language: %s\n" msgstr "Taal: %s\n" #: setup/engineabout.py:75 #, python-format msgid "Keyboard layout: %s\n" msgstr "Toetsenbordindeling: %s\n" #: setup/engineabout.py:78 #, python-format msgid "Author: %s\n" msgstr "Auteur: %s\n" #: setup/engineabout.py:81 msgid "Description:\n" msgstr "Beschrijving:\n" #: setup/enginecombobox.py:139 setup/enginedialog.py:57 msgid "Select an input method" msgstr "Selecteer een invoermethode" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "_Toevoegen" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "Invoermethode" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Toetsenbord" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus voorkeuren" #: setup/ibus-setup.desktop:4 msgid "Set IBus Preferences" msgstr "Stel IBus voorkeuren in" #: setup/keyboardshortcut.py:55 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:130 msgid "_Apply" msgstr "Toe_passen" #. delete button #: setup/keyboardshortcut.py:136 msgid "_Delete" msgstr "_Verwijderen" #: 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 "" "Druk op een toets (of een toetsencombinatie).\n" "De dialoog wordt afgesloten als de toets losgelaten wordt." #: setup/keyboardshortcut.py:255 msgid "Please press a key (or a key combination)" msgstr "Druk op een toets (of een toetsencombinatie)" #: setup/main.py:121 setup/main.py:588 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:515 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:536 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:550 #, 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:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "Selecteer sneltoets voor %s" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "bezig met omschakelen van invoermethodes " #: setup/setup.ui:11 msgid "Horizontal" msgstr "Horizontaal" #: setup/setup.ui:14 msgid "Vertical" msgstr "Verticaal" #: setup/setup.ui:25 msgid "Top left corner" msgstr "Linksboven" #: setup/setup.ui:28 msgid "Top right corner" msgstr "Rechtsboven" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "Linksonder" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "Rechtsonder" #: setup/setup.ui:37 msgid "Custom" msgstr "Aangepast" #: setup/setup.ui:48 msgid "Do not show" msgstr "Toon dit niet" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "Automatisch verbergen" #: setup/setup.ui:54 msgid "Always" msgstr "Altijd" #: setup/setup.ui:113 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:115 msgid "Next input method:" msgstr "Volgende invoermethode:" #: setup/setup.ui:127 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:129 msgid "Previous input method:" msgstr "Vorige invoermethode:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "Aan- of uitzetten:" #: setup/setup.ui:238 msgid "Enable:" msgstr "Aanzetten:" #: setup/setup.ui:291 msgid "Disable:" msgstr "Uitzetten:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "Sneltoetsen" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "Stel de oriëntatie in van de kandidaten in de opzoektabel" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "Kandidaten oriëntatie:" #: setup/setup.ui:407 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:409 msgid "Show property panel:" msgstr "Toon eigenschapspaneel" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "Taal panel positie:" #: setup/setup.ui:494 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:508 msgid "Embed preedit text in application window" msgstr "Insluiten van pre-edit tekst in toepassingsvenster" #: setup/setup.ui:513 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:527 msgid "Use custom font:" msgstr "Gebruik aangepast lettertype:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "Lettertype en stijl" #: setup/setup.ui:579 msgid "General" msgstr "Algemeen" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "" "Voeg de geselecteerde invoermethode toe aan de ingeschakelde invoermethoden" #: setup/setup.ui:682 msgid "_Remove" msgstr "_Verwijderen" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" "Verwijder de geselecteerde invoermethode uit de aangezette invoermethoden" #: setup/setup.ui:700 msgid "_Up" msgstr "_Omhoog" #: setup/setup.ui:707 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:718 msgid "_Down" msgstr "O_mlaag" #: setup/setup.ui:725 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:736 msgid "_About" msgstr "I_nfo" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "Toon informatie over de geselecteerde invoermethode" #: setup/setup.ui:754 msgid "_Preferences" msgstr "_Voorkeuren" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "Toon instelling van de geselecteerde invoermethode" #: setup/setup.ui:812 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." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" "De sneltoetsen voor het aanzetten van conversies van emoji annotaties of " "Unicode" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "Emoji annotatie:" #: setup/setup.ui:927 msgid "The shortcut keys to enable Unicode code point conversions" msgstr "De sneltoetsen voor het aanzetten van Unicode code punt conversies" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "Unicode code punt:" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "Stel een lettertype van Unicode kandidaten in op de emoji dialoog" #: setup/setup.ui:1015 msgid "Unicode font:" msgstr "Unicode lettertype:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "Zet een taal met emoji annotaties op de emoji dialoog" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "Emoji annotatietaal:" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" "Match emoji annotaties gedeeltelijk met de volgende conditie en meer dan het " "aantal karakters:" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" "Als emoji annotaties gematched kunnen worden met een gedeeltelijke string in " "plaats van de exacte match" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "Voorvoegsel match" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "Achtervoegsel match" #: setup/setup.ui:1130 msgid "Containing match" msgstr "Inhoudelijke match" #: setup/setup.ui:1176 msgid "Emoji" msgstr "Emoji" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "Toetsenbordindeling" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "Globale invoermethode instellingen" #: setup/setup.ui:1298 msgid "Advanced" msgstr "Geavanceerd" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "De intelligente invoer bus\n" "Homepagina: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "Start ibus bij inloggen" #: setup/setup.ui:1358 msgid "Startup" msgstr "Opstarten" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "Activiteiten" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "Dieren & Natuur" #: src/ibusemojigen.h:32 msgid "Component" msgstr "Onderdeel" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "Vlaggen" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "Voedsel & Drank" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "Objecten" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "Mensen & Lichaam" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "Smileys & Emotie" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "Symbolen" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "Reizen & Plaatsen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "Basis Latijn" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "Latijns-1 supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "Latijns uitgebreid-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "Latijns uitgebreid-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "IPA-uitbreidingen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "Letterafstand veranderen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "Diakritische kenmerken combineren" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "Grieks en Koptisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "Cyrillisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "Cyrillisch supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "Armeens" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "Hebreeuws" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "Arabisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "Syrisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "Arabisch supllement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "Thaana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "NKo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "Samaritaans" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "Mandaic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "Syrisch supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "Arabisch uitgebreid-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "Devanagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "Bengalees" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "Gurmukhi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "Gujarati" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "Oriya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "Tamil" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "Telugu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "Kannada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "Malayalam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "Singalees" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "Thais" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "Laotiaans" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "Tibetaans" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "Myanmar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "Georgisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "Hangul Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "Ethiopisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "Ethiopisch supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "Cherokee" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "Verenigde Canadese Aboriginal syllabics" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "Ogam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "Runen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "Tagalog" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "Hanunoo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "Buhid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "Tagbanwa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "Khmer" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "Mongools" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "Verenigde Canadese Aboriginal syllabisch uitgebreid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "Limbu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "Tai Le" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "Nieuw Tai Lue" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "Khmer symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "Buginese" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "Tai Tham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "Diakritische tekens voor symbolen combineren uitgebreid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "Balinees" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "Sundanese" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "Batak" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "Lepcha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "Ol Chiki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "Cyrillisch uitgebreid-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "Georgisch uitgebreid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "Soendanees supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "Vedic uitbreidingen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "Fonetische uitbreidingen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "Fonetische uitbreidingen supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "Diakritische tekens voor symbolen combineren" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "Latijns uitbreidingen extra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "Griekse uitbreidingen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "Aalgemene interpunctie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "Superscripts en subscripts" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "Valutasymbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "Diakritische tekens voor symbolen combineren" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "Letterachtige symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "Nummerformulieren" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "Pijlen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "Wiskundige operators" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "Diversen technisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "Controle afbeeldingen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "Optische tekenherkenning" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "Ingesloten alfanumeriek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "Vak tekening" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "Vak elementen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "Geometrische vormen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "Diverse symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "Dingbats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "Diverse wiskundige symbolen-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "Aanvullende pijlen-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "Braille patronen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "Aanvullende pijlen-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "Diverse wiskundige symbolen-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "Aanvullende wiskundige operators" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "Diverse symbolen en pijlen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "Glagolitisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "Latijns uitgebreid-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "Koptisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "Gregoriaans supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "Tifinagh" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "Ethiopische uitgebreid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "Cyrillisch uitgebreid-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "Aanvullende interpunctie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "CJK radicalen supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "Kangxi radicalen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "Ideografische beschrijvingkarakters" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "CJK symbolen en interpumctie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "Hiragana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "Katakana" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "Bopomofo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "Hangul-compatibiliteit Jamo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "Kanbun" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "Bopomofo uitgebreid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "CJK-slagen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "Katakana fonetische extensies" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "Ingesloten CJK letters en maanden" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "CJK compatibiliteit" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "CJK uniforme ideografen extensie A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "Yijing Hexagram-symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "CJK uniforme ideografen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "Yi lettergrepen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "Yi radicalen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "Lisu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "Vai" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "Cyrillisch uitgebreid-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "Bamum" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "Modificatie toon letters" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "Latijns uitgebreid-D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "Syloti Nagri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "Gemeenschappelijke Indic nummerformaten" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "Phags-pa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "Saurashtra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "Devanagari uitgebreid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "Kayah Li" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "Rejang" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "Hangul Jamo uitgebreid-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "Javaans" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "Myanmar uitgebreid-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "Cham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "Myanmar uitgebreid-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "Tai Viet" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "Meetei Mayek uitbreidingen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "Ethiopische uitgebreid-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "Latijns uitgebreid-E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "Cherokee-supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "Meetei Mayek" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "Hangul lettergrepen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "Hangul Jamo uitgebreid-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "Hoge surrogaten" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "Surrogaten met een hoog privégebruik" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "Lage surrogaten" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "Privé-gebruik" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "CJK compatibiliteit ideografen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "Alfabetische presentatievormen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "Arabische presentatievormen-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "Variatie selectoren" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "Verticale vormen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "Combinatie van halve cijfers" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "CJK compatibiliteit vormen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "Kleine vormvarianten" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "Arabische presentatievormen-B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "Halfbreedte en volledige breedte vormen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "Bijzonderheden" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "Lineaire B syllabarie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "Lineaire B ideogrammen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "Egeïsche getallen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "Oud Griekse getallen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "Oude symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "Phaistos schijf" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "Lycian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "Carian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "Koptische Epact-getallen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "Oud Italiaans" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "Gotisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "Oud Permisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "Ugaritisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "Oud Perzisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "Deseret" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "Shavian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "Osmanya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "Osage" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "Elbasan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "Kaukasische Albanees" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "Lineaire A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "Cypriotisch syllabary" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "Imperiaal Aramees" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "Palmyrene" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "Nabatees" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "Hatran" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "Fenicisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "Lydian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "Meroïtische hiërogliefen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "Meroïtisch cursief" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "Kharoshthi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "Oud Zuid-Arabisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "Oud Noord-Arabisch" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "Manichaean" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "Avestan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "Inscriptioneel Parthian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "Inscriptioneel Pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "Psalter Pahlavi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "Oud-Turks" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "Oud-Hongaars" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "Hanifi Rohingya" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "Rumi numerieke symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "Old Sogdian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "Sogdian" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "Elymaic" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "Brahmi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "Kaithi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "Sora Sompeng" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "Chakma" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "Mahajani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "Sharada" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "Archaïsche getallen van Sinhala" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "Khojki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "Multani" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "Khudawadi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "Grantha" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "Newa" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "Tirhuta" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "Siddham" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "Modi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "Mongools supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "Takri" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "Ahom" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "Dogra" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "Warang Citi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "Nandinagari" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "Zanabazar Square" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "Soyombo" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "Pau Cin Hau" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "Bhaiksuki" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "Marchen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "Masaram Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "Gunjala Gondi" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "Makasar" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "Tamil supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "Cuneiform" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "Cuneiform getallen en interpunctie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "Vroeg-dynastic Cuneiform" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "Egyptische hiërogliefen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "Egyptische hiëroglief formaat controles" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "Anatolische hiërogliefen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "Bamum supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "Mro" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "Bassa Vah" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "Pahawh Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "Medefaidrin" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "Miao" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "Ideografische symbolen en interpunktie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "Tangut" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "Tangut onderdelen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "Kana supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "Kana uitgebreid-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "Small Kana uitbreiding" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "Nushu" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "Duployan" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "Steno formaatcontrole" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "Byzantijnse muzikale symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "Muzikale symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "Oude Griekse muzieknotatie" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "Mayan Numerals" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "Tai Xuan Jing symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "Telpaal cijfers" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "Wiskundige alfanumerieke symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "Sutton tekenschrift" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "Glagolitisch supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "Nyiakeng Puachue Hmong" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "Wancho" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "Mende Kikakui" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "Adlam" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "Indic Siyaq Nummers" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "Ottoman Siyaq getallen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "Arabische wiskundige alfabetische symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "Mahjong stenen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "Domino stenen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "Speelkaarten" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "Ingesloten alfanumeriek supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "Ingesloten ideografisch supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "Diverse symbolen en pictogrammen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "Emoticons" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "Ornamentele dingbats" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "Transport- en kaartsymbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "Alchemistische symbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "Geometrische vormen uitgebreid" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "Supplementaire pijlen-C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "Supplementaire symbolen en pictogrammen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "Schaaksymbolen" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "Symbolen en Pictogrammen Uitgebreid-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "CJK uniforme ideografen extensie B" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "CJK uniforme ideografen extensie C" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "CJK uniforme ideografen extensie D" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "CJK uniforme ideografen extensie E" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "CJK uniforme ideografen extensie F" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "CJK compatibiliteit ideografen supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "Tags" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "Variatie selectoren supplement" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "Supplementair privé gebruiksgebied-A" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "Supplementair privé gebruiksgebied-B" #: tools/main.vala:51 msgid "List engine name only" msgstr "Toon alleen machinenamen" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "Kan niet met IBus verbinden.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "taal:%s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "Er is geen machine ingesteld.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "Instellen van globale machine is mislukt.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "Verkrijgen van globale machine is mislukt.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "Lees de systeem registry cache." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "Lees het registry cache BESTAND." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "De registry cache is ongeldig.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "Schrijf de systeem registry cache." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "Schrijf het registry cache BESTAND." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" "Gebruik engine schemapaden in plaats van ibus core, welde door komma's " "gescheiden waardes kunnen zijn." #: tools/main.vala:381 msgid "Resetting…" msgstr "Herstellen…" #: tools/main.vala:399 msgid "Done" msgstr "Klaar" #: tools/main.vala:444 msgid "Set or get engine" msgstr "Stel engine in of haal deze op" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "Verlaat ibus-daemon" #: tools/main.vala:446 msgid "Show available engines" msgstr "Toon beschikbare engines" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(Niet geimplementeerd)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "Start ibus-daemon opnieuw op" #: tools/main.vala:449 msgid "Show version" msgstr "Toon versie" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "Toon de inhoud van registry cache" #: tools/main.vala:451 msgid "Create registry cache" msgstr "Maak registry cache aan" #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "Print het D-Bus adres van ibus-daemon" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "Toon de configuratiewaarden" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "Herstel de configuratiewaarden" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "Sla emoji op dialoog op naar clipboard " #: tools/main.vala:458 msgid "Show this information" msgstr "Toon deze informatie" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "Gebruik: %s COMMANDO [OPTIE...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "Commando's:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s is een onbekend commando!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "Favorieten" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "Andere" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "Open Unicode keuze" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "Bring de emoji keuze terug" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "Pagina naar beneden" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "Pagina omhoog" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "Toon emoji varianten" #: ui/gtk3/emojier.vala:1112 msgid "Close" msgstr "Sluiten" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "Menu" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "Klik om een waarschuwingsboodschap te bekijken" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "Een Unicode woordenboek wordt geladen:" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "Code punt: %s" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "Heeft emoji varianten" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "Beschrijving: %s" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "Geen" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "Annotaties: %s" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "Naam: %s" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "Alias: %s" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "Emoji keuze" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "Unicode keuze" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" "Het verkrijgen van de huidige teksttoepassing mislukte. Stel de focus op je " "toepassing opnieuw in. Bijvoorbeeld, druk meerdere keren op de Esc toets " "voor het vrijgeven van de emoji type modus, klik op je bureaublad en klik " "opnieuw op de teksttoepassing." #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "Annuleer het kiezen van een emoji." #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "Een emoji naar je clipboard gecopieerd." #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "\"FONT\" voor emoji karakters op emoji dialoog" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "FONT" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "\"TAAL\" voor annotaties op emoji dialoog. B.v. \"en\"" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "TAAL" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "Emoji annotaties kunnen gedeeltelijk gematched worden" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "Match met de lengte van het gespecificeerde geheel getal" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "Match met de conditie van het gespecificeerde geheel getal" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "IBus Paneel" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus is een intelligente invoer bus voor Linux/Unix." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "Geert Warrink" #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "Voorkeuren" #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "Opnieuw starten" #: ui/gtk3/panel.vala:1148 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:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" ibus-1.5.22/po/kn.po0000644000000000000000000031662513623751601011041 00000000000000# Kannada translation of ibus. # Copyright (C) 2008-2015 Peng Huang # Copyright (C) 2015-2018 Takao Fujiwara # 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 # fujiwara , 2015. #zanata # fujiwara , 2018. #zanata msgid "" msgstr "" "Project-Id-Version: IBus\n" "Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues\n" "POT-Creation-Date: 2020-02-21 21:56+0900\n" "PO-Revision-Date: 2018-02-20 04:22-0500\n" "Last-Translator: Copied by Zanata \n" "Language-Team: Kannada \n" "Language: kn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Zanata 3.9.6\n" #. Translators: Here “Preload” is a verb #: data/dconf/org.freedesktop.ibus.gschema.xml:11 msgid "Preload engines" msgstr "ಪ್ರಿಲೋಡ್ ಎಂಜಿನ್‌ಗಳು" #. Translators: Tooltip for the button “Preload Engines” #: data/dconf/org.freedesktop.ibus.gschema.xml:13 msgid "Preload engines during ibus starts up" msgstr "ibus ಆರಂಭಗೊಂಡಾಗ ಲೋಡ್ ಮಾಡಲಾದ ಎಂಜಿನ್‌ಗಳು" #: data/dconf/org.freedesktop.ibus.gschema.xml:17 msgid "Engines order" msgstr "ಎಂಜಿನ್‌ಗಳ ಕ್ರಮ" #: data/dconf/org.freedesktop.ibus.gschema.xml:18 msgid "Saved engines order in input method list" msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಪಟ್ಟಿಯಲ್ಲಿನ ಉಳಿಸಲಾದ ಎಂಜಿನ್‌ಗಳು" #: data/dconf/org.freedesktop.ibus.gschema.xml:22 msgid "Popup delay milliseconds for IME switcher window" msgstr "IME ಬದಲಾವಣೆಗಾರ ಕಿಟಕಿಗಾಗಿ ಪುಟಿಕೆ (ಪಾಪ್ಅಪ್) ವಿಳಂಬ, ಮಿಲಿಸೆಕೆಂಡುಗಳಲ್ಲಿ" #: data/dconf/org.freedesktop.ibus.gschema.xml:23 #, fuzzy 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/dconf/org.freedesktop.ibus.gschema.xml:27 msgid "Saved version number" msgstr "ಉಳಿಸಲಾದ ಆವೃತ್ತಿ ಸಂಖ್ಯೆ" #: data/dconf/org.freedesktop.ibus.gschema.xml:28 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/dconf/org.freedesktop.ibus.gschema.xml:32 msgid "Latin layouts which have no ASCII" msgstr "ಯಾವುದೆ ASCII ಅನ್ನು ಹೊಂದಿರದ ಲ್ಯಾಟಿನ್ ವಿನ್ಯಾಸಗಳು (ಲೇಔಟ್‌)" #: data/dconf/org.freedesktop.ibus.gschema.xml:33 msgid "US layout is appended to the Latin layouts. variant can be omitted." msgstr "US ವಿನ್ಯಾಸವನ್ನು ಲ್ಯಾಟಿನ್‌ ವಿನ್ಯಾಸಗಳಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ. ವೇರಿಯಂಟ್‌ ಅನ್ನು ಬಿಡಬಹುದು." #: data/dconf/org.freedesktop.ibus.gschema.xml:37 msgid "Use xmodmap" msgstr "xmodmap ಅನ್ನು ಬಳಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:38 msgid "" "Run xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched." msgstr "" "ibus ಅನ್ನು ಬದಲಾಯಿಸಿದಾಗ, .xmodmap ಅಥವ .Xmodmap ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ xmodmap ಅನ್ನು " "ಚಲಾಯಿಸಿ." #: data/dconf/org.freedesktop.ibus.gschema.xml:42 setup/setup.ui:1208 msgid "Use system keyboard layout" msgstr "ವ್ಯವಸ್ಥೆಯ ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸವನ್ನು ಬಳಸಿ" #: data/dconf/org.freedesktop.ibus.gschema.xml:43 setup/setup.ui:1213 msgid "Use system keyboard (XKB) layout" msgstr "ವ್ಯವಸ್ಥೆಯ ಕೀಲಿಮಣೆ (XKB) ವಿನ್ಯಾಸವನ್ನು ಬಳಸಿ" #: data/dconf/org.freedesktop.ibus.gschema.xml:47 msgid "Embed Preedit Text" msgstr "ಪೂರ್ವ-ಸಂಪಾದನಾ(ಪ್ರಿ-ಎಡಿಟ್) ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:48 msgid "Embed Preedit Text in Application Window" msgstr "ಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ ಪೂರ್ವ-ಸಂಪಾದನಾ(ಪ್ರಿ-ಎಡಿಟ್) ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:52 msgid "Use global input method" msgstr "ಜಾಗತಿಕ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಬಳಸಿ" #: data/dconf/org.freedesktop.ibus.gschema.xml:53 setup/setup.ui:1257 msgid "Share the same input method among all applications" msgstr "ಒಂದೇ ಇನ್‌ಪುಟ್‌ ವಿಧಾನವನ್ನು ಎಲ್ಲಾ ಅನ್ವಯಗಳಲ್ಲೂ ಬಳಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:57 msgid "Enable input method by default" msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಶಕ್ತಗೊಳಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:58 msgid "Enable input method by default when the application gets input focus" msgstr "" "ಅನ್ವಯವು ಇನ್‌ಪುಟ್ ಗಮನವನ್ನು ಪಡೆದುಕೊಂಡಾಗ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಶಕ್ತಗೊಳಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:62 msgid "DConf preserve name prefixes" msgstr "DConf ಹೆಸರುಗಳು ಪ್ರಿಫಿಕ್ಸುಗಳನ್ನು ಹಾಗೆಯೆ ಇರಿಸಿಕೊಳ್ಳುತ್ತದೆ" #: data/dconf/org.freedesktop.ibus.gschema.xml:63 msgid "Prefixes of DConf keys to stop name conversion" msgstr "ಹೆಸರಿನ ಪರಿವರ್ತನೆಯನ್ನು ಬದಲಿಸುವ DConf ಕೀಲಿಗಳ ಪ್ರಿಫಿಕ್ಸುಗಳು" #: data/dconf/org.freedesktop.ibus.gschema.xml:70 msgid "Trigger shortcut keys" msgstr "ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಟ್ರಿಗರ್ ಮಾಡು" #: data/dconf/org.freedesktop.ibus.gschema.xml:71 #: data/dconf/org.freedesktop.ibus.gschema.xml:76 setup/setup.ui:224 msgid "The shortcut keys for turning input method on or off" msgstr "ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳನ್ನು ಆಫ್ ಹಾಗು ಆನ್ ಮಾಡಲು ಶಾರ್ಟ್-ಕೀಲಿಗಳು" #: data/dconf/org.freedesktop.ibus.gschema.xml:75 msgid "Trigger shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಟ್ರಿಗರ್ ಮಾಡು" #: data/dconf/org.freedesktop.ibus.gschema.xml:80 msgid "Enable shortcut keys" msgstr "ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಶಕ್ತಗೊಳಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:81 msgid "The shortcut keys for turning input method on" msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆನ್ ಮಾಡಲು ಬಳಸಬಹುದಾದ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿ" #: data/dconf/org.freedesktop.ibus.gschema.xml:85 msgid "Disable shortcut keys" msgstr "ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಅಶಕ್ತಗೊಳಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:86 msgid "The shortcut keys for turning input method off" msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಫ್ ಮಾಡಲು ಬಳಸಬಹುದಾದ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿ" #: data/dconf/org.freedesktop.ibus.gschema.xml:90 #: data/dconf/org.freedesktop.ibus.gschema.xml:95 msgid "Next engine shortcut keys" msgstr "ಮುಂದಿನ ಎಂಜಿನ್ ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳು" #: data/dconf/org.freedesktop.ibus.gschema.xml:91 #: data/dconf/org.freedesktop.ibus.gschema.xml:96 msgid "The shortcut keys for switching to the next input method in the list" msgstr "ಪಟ್ಟಿಯಲ್ಲಿನ ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" #: data/dconf/org.freedesktop.ibus.gschema.xml:100 #: data/dconf/org.freedesktop.ibus.gschema.xml:105 msgid "Prev engine shortcut keys" msgstr "ಹಿಂದಿನ ಎಂಜಿನ್ ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳು" #: data/dconf/org.freedesktop.ibus.gschema.xml:101 #: data/dconf/org.freedesktop.ibus.gschema.xml:106 msgid "The shortcut keys for switching to the previous input method" msgstr "ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" #: data/dconf/org.freedesktop.ibus.gschema.xml:112 msgid "Auto hide" msgstr "ಸ್ವಯಂ ಅಡಗಿಸುವಿಕೆ" #: data/dconf/org.freedesktop.ibus.gschema.xml:113 msgid "" "The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always " "show" msgstr "" "ಗುಣದ ಪ್ಯಾನಲ್‌ನ ವರ್ತನೆ. 0 = ಮೆನುವಿನಲ್ಲಿ ಅಡಕಗೊಳಿಸಲಾಗಿದೆ, 1 = ಸ್ವಯಂ ಅಡಗಿಸು, 2 = " "ಯಾವಾಗಲೂ ತೋರಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:117 #: data/dconf/org.freedesktop.ibus.gschema.xml:121 msgid "Language panel position" msgstr "ಭಾಷೆಯ ಫಲಕವನ್ನು ತೋರಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:125 msgid "Follow the input cursor in case the panel is always shown" msgstr "ಪ್ಯಾನಲ್‌ ಅನ್ನು ಯಾವಾಗಲೂ ತೋರಿಸಲಾಗುತ್ತಿದ್ದರೆ ಇನ್‌ಪುಟ್ ತೆರೆಸೂಚಕವನ್ನು ಅನುಸರಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:126 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/dconf/org.freedesktop.ibus.gschema.xml:130 msgid "The milliseconds to show property panel" msgstr "ಗುಣದ ಪ್ಯಾನಲ್‌ ಅನ್ನು ತೋರಿಸಬೇಕಿರುವ ಮಿಲಿಸೆಕೆಂಡ್‌ಗಳು:" #: data/dconf/org.freedesktop.ibus.gschema.xml:131 msgid "" "The milliseconds to show property panel after focus-in or properties are " "changed." msgstr "" "ಗಮನವು ಅಥವ ಗುಣಗಳನ್ನು ಬದಲಾಯಿಸಿದ ನಂತರ ಗುಣದ ಪ್ಯಾನಲ್ ಅನ್ನು ತೋರಿಸಬೇಕಿರುವ " "ಮಿಲಿಸೆಕೆಂಡುಗಳು." #: data/dconf/org.freedesktop.ibus.gschema.xml:135 msgid "Orientation of lookup table" msgstr "ನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ಹೊಂದಿಕೆ" #: data/dconf/org.freedesktop.ibus.gschema.xml:136 msgid "Orientation of lookup table. 0 = Horizontal, 1 = Vertical" msgstr "ನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ಹೊಂದಿಕೆ. 0 = ಅಡ್ಡಲಾಗಿ, 1 = ಲಂಬವಾಗಿ" #: data/dconf/org.freedesktop.ibus.gschema.xml:140 #: data/dconf/org.freedesktop.ibus.gschema.xml:141 setup/setup.ui:470 #: setup/setup.ui:475 msgid "Show icon on system tray" msgstr "ವ್ಯವಸ್ಥೆಯ ಟ್ರೇಯಲ್ಲಿ ಚಿಹ್ನೆಯನ್ನು ತೋರಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:145 msgid "Show input method name" msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು ತೋರಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:146 setup/setup.ui:489 msgid "Show input method name on language bar" msgstr "ಭಾಷೆಯ ಫಲಕದಲ್ಲಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು ತೋರಿಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:150 msgid "RGBA value of XKB icon" msgstr "XKB ಚಿಹ್ನೆಯ RGBA ಮೌಲ್ಯ" #: data/dconf/org.freedesktop.ibus.gschema.xml:151 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 " "percentage 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/dconf/org.freedesktop.ibus.gschema.xml:155 msgid "The milliseconds to show the panel icon for a property" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:156 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/dconf/org.freedesktop.ibus.gschema.xml:160 msgid "Use custom font" msgstr "ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸು" #: data/dconf/org.freedesktop.ibus.gschema.xml:161 msgid "Use custom font name for language panel" msgstr "ಭಾಷೆಯ ಫಲಕಕ್ಕಾಗಿ ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯ ಹೆಸರನ್ನು ಬಳಸಿ" #: data/dconf/org.freedesktop.ibus.gschema.xml:165 #: data/dconf/org.freedesktop.ibus.gschema.xml:183 msgid "Custom font" msgstr "ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿ" #: data/dconf/org.freedesktop.ibus.gschema.xml:166 msgid "Custom font name for language panel" msgstr "ಭಾಷೆಯ ಫಲಕಕ್ಕಾಗಿನ ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯ ಹೆಸರು" #: data/dconf/org.freedesktop.ibus.gschema.xml:173 #, fuzzy msgid "Unicode shortcut keys for gtk_accelerator_parse" msgstr "gtk_accelerator_parse ಶಾರ್ಟ್-ಕಟ್ ಕೀಲಿಗಳನ್ನು ಟ್ರಿಗರ್ ಮಾಡು" #: data/dconf/org.freedesktop.ibus.gschema.xml:174 #, fuzzy msgid "The shortcut keys for turning Unicode typing on or off" msgstr "ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳನ್ನು ಆಫ್ ಹಾಗು ಆನ್ ಮಾಡಲು ಶಾರ್ಟ್-ಕೀಲಿಗಳು" #: data/dconf/org.freedesktop.ibus.gschema.xml:178 msgid "Emoji shortcut keys for gtk_accelerator_parse" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:179 msgid "The shortcut keys for turning emoji typing on or off" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:184 msgid "Custom font name for emoji characters on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:188 msgid "Default language for emoji dictionary" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:189 msgid "" "Choose a default language of emoji dictionaries on the emoji dialog. The " "value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dict" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:193 msgid "favorite emoji list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:194 msgid "" "You can show the favorite emojis on emoji list if this list has any " "characters." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:198 msgid "favorite emoji annotation list on emoji dialog" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:199 msgid "You can assign an annotation for a favorite emoji in this list." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:203 msgid "Whether emoji annotations can be match partially or not" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:204 msgid "" "Whether emoji annotations can be matched with a partial string instead of " "the exact match or not." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:208 msgid "Match emoji annotations with the specified length" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:209 msgid "" "Match emoji annotations partially with more than the specified number of " "characters instead of the exact match." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:213 msgid "Choose a condition to match emoji annotations partially" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:214 msgid "" "Choose one of the following conditions to match emoji annotations partially: " "0 == Prefix match, 1 == Suffix match, 2 == Containing match" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:218 msgid "Load the emoji data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:219 msgid "" "Load the emoji data at the time of startup if true. About 10MB memory is " "needed to load the data. Load the emoji data when open the emoji dialog at " "the beginning if false." msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:223 msgid "Load the Unicode data at the time of startup" msgstr "" #: data/dconf/org.freedesktop.ibus.gschema.xml:224 msgid "" "Load the Unicode data at the time of startup if true. About 15MB memory is " "needed to load the data. Load the Unicode data when open the emoji dialog at " "the beginning if false. The Unicode data is always loaded after the emoji " "data is loaded even if true." 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\n" "Copyright (c) 2007-2010 Red Hat, Inc." #: ibus/lang.py:41 src/ibusutil.c:209 msgid "Other" msgstr "ಇತರೆ" #: setup/emojilang.py:67 msgid "Select a language" msgstr "" #: setup/emojilang.py:70 setup/enginedialog.py:60 setup/keyboardshortcut.py:339 #: setup/main.py:560 msgid "_Cancel" msgstr "ರದ್ದು ಮಾಡು (_C)" #: setup/emojilang.py:71 setup/keyboardshortcut.py:340 setup/main.py:561 msgid "_OK" msgstr "ಸರಿ (_O)" #: setup/emojilang.py:235 setup/enginedialog.py:205 msgid "More…" msgstr "ಇನ್ನಷ್ಟು..." #: setup/engineabout.py:37 setup/setup.ui:1378 ui/gtk3/panel.vala:1138 msgid "About" msgstr "ಇದರ ಬಗ್ಗೆ" #: setup/engineabout.py:40 setup/setup.ui:1401 msgid "_Close" msgstr "ಮುಚ್ಚು (_C)" #: 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 "ಒಂದು ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" #. add button #: setup/enginedialog.py:61 setup/keyboardshortcut.py:124 setup/setup.ui:664 msgid "_Add" msgstr "ಸೇರಿಸು (_A)" #. create im name & icon column #: setup/enginetreeview.py:69 setup/setup.ui:838 msgid "Input Method" msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನ" #: setup/enginetreeview.py:96 msgid "Kbd" msgstr "Kbd" #: setup/ibus-setup.desktop:3 setup/setup.ui:69 msgid "IBus Preferences" msgstr "IBus ಆದ್ಯತೆಗಳು" #: setup/ibus-setup.desktop:4 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/main.py:121 setup/main.py:588 msgid "Use shortcut with shift to switch to the previous input method" msgstr "ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಿಫ್ಟಿನೊಂದಿಗೆ ಸಮೀಪಮಾರ್ಗವನ್ನು ಬಳಸಿ" #: setup/main.py:515 msgid "The IBus daemon is not running. Do you wish to start it?" msgstr "IBus ಡೀಮನ್ ಚಾಲನೆಯಲ್ಲಿಲ್ಲ. ನೀವದನ್ನು ಆರಂಭಿಸಲು ಬಯಸುತ್ತೀರೆ?" #: setup/main.py:536 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:550 #, python-format msgid "IBus daemon could not be started in %d seconds" msgstr "IBus ಡೀಮನ್ ಅನ್ನು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಆರಂಭಿಸಲಾಗಿಲ್ಲ" #: setup/main.py:562 #, python-format msgid "Select keyboard shortcut for %s" msgstr "%s ಗಾಗಿ ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿ" #. Translators: Title of the window #: setup/main.py:564 msgid "switching input methods" msgstr "ಇನ್‌ಪುಟ್ ವಿಧಾನಗಳನ್ನು ಬದಲಿಸುವಿಕೆ" #: setup/setup.ui:11 msgid "Horizontal" msgstr "ಲಂಬ" #: setup/setup.ui:14 msgid "Vertical" msgstr "ಲಂಬ" #: setup/setup.ui:25 msgid "Top left corner" msgstr "ಮೇಲಿನ ಎಡ ಮೂಲೆ" #: setup/setup.ui:28 msgid "Top right corner" msgstr "ಮೇಲಿನ ಬಲ ಮೂಲೆ" #: setup/setup.ui:31 msgid "Bottom left corner" msgstr "ಕೆಳಗಿನ ಎಡ ಮೂಲ" #: setup/setup.ui:34 msgid "Bottom right corner" msgstr "ಕೆಳಗಿನ ಬಲ ಮೂಲ" #: setup/setup.ui:37 msgid "Custom" msgstr "ಇಚ್ಛೆಯ" #: setup/setup.ui:48 msgid "Do not show" msgstr "ತೋರಿಸಬೇಡ" #: setup/setup.ui:51 msgid "Hide automatically" msgstr "ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಡಗಿಸು" #: setup/setup.ui:54 msgid "Always" msgstr "ಯಾವಾಗಲೂ" #: setup/setup.ui:113 msgid "The shortcut keys for switching to next input method in the list" msgstr "ಪಟ್ಟಿಯಲ್ಲಿನ ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" #: setup/setup.ui:115 msgid "Next input method:" msgstr "ಮುಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನ:" #: setup/setup.ui:127 msgid "The shortcut keys for switching to previous input method in the list" msgstr "ಪಟ್ಟಿಯಲ್ಲಿನ ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನಕ್ಕೆ ಬದಲಾಯಿಸಲು ಶಾರ್ಟ್-ಕಟ್‌ ಕೀಲಿಗಳು" #: setup/setup.ui:129 msgid "Previous input method:" msgstr "ಹಿಂದಿನ ಇನ್‌ಪುಟ್ ವಿಧಾನ:" #: setup/setup.ui:157 setup/setup.ui:199 setup/setup.ui:266 setup/setup.ui:319 #: setup/setup.ui:903 setup/setup.ui:957 msgid "..." msgstr "..." #: setup/setup.ui:226 msgid "Enable or disable:" msgstr "ಶಕ್ತಗೊಂಡ ಅಥವ ಅಶಕ್ತಗೊಂಡ:" #: setup/setup.ui:238 msgid "Enable:" msgstr "ಶಕ್ತಗೊಳಿಸು:" #: setup/setup.ui:291 msgid "Disable:" msgstr "ಅಶಕ್ತಗೊಳಿಸು:" #: setup/setup.ui:345 setup/setup.ui:983 msgid "Keyboard Shortcuts" msgstr "ಕೀಲಿಮಣೆ ಶಾರ್ಟ್-ಕಟ್‌ಗಳು" #: setup/setup.ui:374 msgid "Set the orientation of candidates in lookup table" msgstr "ನೋಡಬೇಕಿರುವ (ಲುಕ್‌ಅಪ್‌) ಕೋಷ್ಟಕದ ವಾಲಿಕೆಯನ್ನು ಹೊಂದಿಸಿ" #: setup/setup.ui:376 msgid "Candidates orientation:" msgstr "ಅಭ್ಯರ್ಥಿಗಳ ಹೊಂದಿಕೆ:" #: setup/setup.ui:407 msgid "Set the behavior of ibus how to show or hide language bar" msgstr "" "ಭಾಷಾ ಪಟ್ಟಿಕೆಯನ್ನು ಹೇಗೆ ತೋರಿಸಬೇಕು ಅಥವ ಅಡಗಿಸಬೇಕು ಎನ್ನುವ ibus ನ ವರ್ತನೆಯನ್ನು ಹೊಂದಿಸಿ" #: setup/setup.ui:409 msgid "Show property panel:" msgstr "ಗುಣದ ಪ್ಯಾನಲ್‌ ಅನ್ನು ತೋರಿಸು:" #: setup/setup.ui:423 msgid "Language panel position:" msgstr "ಭಾಷೆಯ ಫಲಕದ ಸ್ಥಳ:" #: setup/setup.ui:494 msgid "Show input method's name on language bar when check the checkbox" msgstr "ಗುರುತುಚೌಕದಲ್ಲಿ ಗುರುತು ಹಾಕಿದಾಗ ಭಾಷಾ ಪಟ್ಟಿಯಲ್ಲಿ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಹೆಸರನ್ನು ತೋರಿಸು" #: setup/setup.ui:508 msgid "Embed preedit text in application window" msgstr "ಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ Preedit ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸಿ" #: setup/setup.ui:513 msgid "Embed the preedit text of input method in the application window" msgstr "ಅನ್ವಯ ವಿಂಡೊದಲ್ಲಿ ಇನ್‌ಪುಟ್ ವಿಧಾನದ Preedit ಪಠ್ಯವನ್ನು ಅಡಕಗೊಳಿಸಿ" #: setup/setup.ui:527 msgid "Use custom font:" msgstr "ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸಿ:" #: setup/setup.ui:562 setup/setup.ui:1156 msgid "Font and Style" msgstr "ಅಕ್ಷರಶೈಲಿ ಹಾಗು ವಿನ್ಯಾಸ" #: setup/setup.ui:579 msgid "General" msgstr "ಸಾಮಾನ್ಯ" #: setup/setup.ui:671 msgid "Add the selected input method into the enabled input methods" msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳಿಗೆ ಸೇರಿಸಿ" #: setup/setup.ui:682 msgid "_Remove" msgstr "ತೆಗೆದು ಹಾಕು (_R)" #: setup/setup.ui:689 msgid "Remove the selected input method from the enabled input methods" msgstr "" "ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಿಂದ ತೆಗೆದು ಹಾಕಿ" #: setup/setup.ui:700 msgid "_Up" msgstr "ಮೇಲಕ್ಕೆ (_U)" #: setup/setup.ui:707 msgid "Move up the selected input method in the enabled input methods list" msgstr "" "ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಮೇಲಕ್ಕೆ ಜರುಗಿಸಿ" #: setup/setup.ui:718 msgid "_Down" msgstr "ಕೆಳಕ್ಕೆ (_D)" #: setup/setup.ui:725 msgid "Move down the selected input method in the enabled input methods" msgstr "" "ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಶಕ್ತಗೊಂಡಿರುವ ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಕೆಳಕ್ಕೆ ಜರುಗಿಸಿ" #: setup/setup.ui:736 msgid "_About" msgstr "ಕುರಿತು (_A)" #: setup/setup.ui:743 msgid "Show information of the selected input method" msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸು" #: setup/setup.ui:754 msgid "_Preferences" msgstr "ಆದ್ಯತೆಗಳು (_P)" #: setup/setup.ui:761 msgid "Show setup of the selected input method" msgstr "ಆಯ್ಕೆ ಮಾಡಲಾದ ಇನ್‌ಪುಟ್ ವಿಧಾನದ ಸೆಟ್ಅಪ್‌ ಅನ್ನು ತೋರಿಸು" #: setup/setup.ui:812 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 "" "ಸಕ್ರಿಯ ಇನ್‌ಪುಟ್ ವಿಧಾನವನ್ನು ಆಯ್ಕೆ ಮಾಡಲಾಗಿರುವುದರಿಂದ ಮೇಲಿನ ಪಟ್ಟಿಯಲ್ಲಿನ " "ಬೇರೆಯೊಂದಕ್ಕೆ ಬದಲಾಯಿಸಲು ಕೀಲಿಮಣೆ ಸಮೀಪಮಾರ್ಗಗಳನ್ನು ಬಳಸಬಹುದು ಅಥವ ಪ್ಯಾನಲ್‌ ಚಿಹ್ನೆಯನ್ನು " "ಕ್ಲಿಕ್ ಮಾಡಬಹುದು." #: setup/setup.ui:873 msgid "" "The shortcut keys to enable conversions of emoji annotations or Unicode names" msgstr "" #: setup/setup.ui:875 msgid "Emoji annotation:" msgstr "" #: setup/setup.ui:927 #, fuzzy msgid "The shortcut keys to enable Unicode code point conversions" msgstr "ಇನ್‌ಪುಟ್‌ ವಿಧಾನಗಳನ್ನು ಆಫ್ ಹಾಗು ಆನ್ ಮಾಡಲು ಶಾರ್ಟ್-ಕೀಲಿಗಳು" #: setup/setup.ui:929 msgid "Unicode code point:" msgstr "" #: setup/setup.ui:1013 msgid "Set a font of Unicode candidates on the emoji dialog" msgstr "" #: setup/setup.ui:1015 #, fuzzy msgid "Unicode font:" msgstr "ಇಚ್ಛೆಯ ಅಕ್ಷರಶೈಲಿಯನ್ನು ಬಳಸಿ:" #: setup/setup.ui:1038 msgid "Set a language of emoji annotations on the emoji dialog" msgstr "" #: setup/setup.ui:1040 msgid "Emoji annotation language:" msgstr "" #: setup/setup.ui:1062 msgid "" "Match emoji annotations partially with the following condition and more than " "the number of characters:" msgstr "" #: setup/setup.ui:1067 msgid "" "If emoji annotations can be matched with a partial string instead of the " "exact match" msgstr "" #: setup/setup.ui:1101 msgid "Prefix match" msgstr "" #: setup/setup.ui:1115 msgid "Suffix match" msgstr "" #: setup/setup.ui:1130 msgid "Containing match" msgstr "" #: setup/setup.ui:1176 msgid "Emoji" msgstr "" #: setup/setup.ui:1230 msgid "Keyboard Layout" msgstr "ಕೀಲಿಮಣೆ ವಿನ್ಯಾಸ" #: setup/setup.ui:1278 msgid "Global input method settings" msgstr "ಜಾಗತಿಕ ಇನ್‌ಪುಟ್‌ ವಿಧಾನದ ಸಿದ್ಧತೆಗಳು" #: setup/setup.ui:1298 msgid "Advanced" msgstr "ಸುಧಾರಿತ" #: setup/setup.ui:1317 msgid "" "IBus\n" "The intelligent input bus\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" msgstr "" "IBus\n" "ಚತುರ ಇನ್‌ಪುಟ್ ಬಸ್\n" "Homepage: https://github.com/ibus/ibus/wiki\n" "\n" "\n" "\n" #: setup/setup.ui:1341 msgid "Start ibus on login" msgstr "ಪ್ರವೇಶಿಸಿದಾಗ ibus ಅನ್ನು ಆರಂಭಿಸು" #: setup/setup.ui:1358 msgid "Startup" msgstr "ಆರಂಭ" #: src/ibusemojigen.h:30 msgid "Activities" msgstr "" #: src/ibusemojigen.h:31 msgid "Animals & Nature" msgstr "" #: src/ibusemojigen.h:32 msgid "Component" msgstr "" #: src/ibusemojigen.h:33 msgid "Flags" msgstr "" #: src/ibusemojigen.h:34 msgid "Food & Drink" msgstr "" #: src/ibusemojigen.h:35 msgid "Objects" msgstr "" #: src/ibusemojigen.h:36 msgid "People & Body" msgstr "" #: src/ibusemojigen.h:37 msgid "Smileys & Emotion" msgstr "" #: src/ibusemojigen.h:38 msgid "Symbols" msgstr "" #: src/ibusemojigen.h:39 msgid "Travel & Places" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:33 msgid "Basic Latin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:37 msgid "Latin-1 Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:41 msgid "Latin Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:45 msgid "Latin Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:49 msgid "IPA Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:53 msgid "Spacing Modifier Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:57 msgid "Combining Diacritical Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:61 msgid "Greek and Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:65 msgid "Cyrillic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:69 msgid "Cyrillic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:73 msgid "Armenian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:77 msgid "Hebrew" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:81 msgid "Arabic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:85 msgid "Syriac" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:89 msgid "Arabic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:93 msgid "Thaana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:97 msgid "NKo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:101 msgid "Samaritan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:105 msgid "Mandaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:109 msgid "Syriac Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:113 msgid "Arabic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:117 msgid "Devanagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:121 msgid "Bengali" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:125 msgid "Gurmukhi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:129 msgid "Gujarati" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:133 msgid "Oriya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:137 msgid "Tamil" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:141 msgid "Telugu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:145 msgid "Kannada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:149 msgid "Malayalam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:153 msgid "Sinhala" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:157 msgid "Thai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:161 msgid "Lao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:165 msgid "Tibetan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:169 msgid "Myanmar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:173 msgid "Georgian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:177 msgid "Hangul Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:181 msgid "Ethiopic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:185 msgid "Ethiopic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:189 msgid "Cherokee" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:193 msgid "Unified Canadian Aboriginal Syllabics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:197 msgid "Ogham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:201 msgid "Runic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:205 msgid "Tagalog" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:209 msgid "Hanunoo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:213 msgid "Buhid" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:217 msgid "Tagbanwa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:221 msgid "Khmer" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:225 msgid "Mongolian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:229 msgid "Unified Canadian Aboriginal Syllabics Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:233 msgid "Limbu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:237 msgid "Tai Le" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:241 msgid "New Tai Lue" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:245 msgid "Khmer Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:249 msgid "Buginese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:253 msgid "Tai Tham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:257 msgid "Combining Diacritical Marks Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:261 msgid "Balinese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:265 msgid "Sundanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:269 msgid "Batak" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:273 msgid "Lepcha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:277 msgid "Ol Chiki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:281 msgid "Cyrillic Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:285 msgid "Georgian Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:289 msgid "Sundanese Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:293 msgid "Vedic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:297 msgid "Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:301 msgid "Phonetic Extensions Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:305 msgid "Combining Diacritical Marks Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:309 msgid "Latin Extended Additional" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:313 msgid "Greek Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:317 msgid "General Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:321 msgid "Superscripts and Subscripts" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:325 msgid "Currency Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:329 msgid "Combining Diacritical Marks for Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:333 msgid "Letterlike Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:337 msgid "Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:341 msgid "Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:345 msgid "Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:349 msgid "Miscellaneous Technical" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:353 msgid "Control Pictures" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:357 msgid "Optical Character Recognition" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:361 msgid "Enclosed Alphanumerics" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:365 msgid "Box Drawing" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:369 msgid "Block Elements" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:373 msgid "Geometric Shapes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:377 msgid "Miscellaneous Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:381 msgid "Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:385 msgid "Miscellaneous Mathematical Symbols-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:389 msgid "Supplemental Arrows-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:393 msgid "Braille Patterns" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:397 msgid "Supplemental Arrows-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:401 msgid "Miscellaneous Mathematical Symbols-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:405 msgid "Supplemental Mathematical Operators" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:409 msgid "Miscellaneous Symbols and Arrows" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:413 msgid "Glagolitic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:417 msgid "Latin Extended-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:421 msgid "Coptic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:425 msgid "Georgian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:429 msgid "Tifinagh" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:433 msgid "Ethiopic Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:437 msgid "Cyrillic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:441 msgid "Supplemental Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:445 msgid "CJK Radicals Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:449 msgid "Kangxi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:453 msgid "Ideographic Description Characters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:457 msgid "CJK Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:461 msgid "Hiragana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:465 msgid "Katakana" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:469 msgid "Bopomofo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:473 msgid "Hangul Compatibility Jamo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:477 msgid "Kanbun" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:481 msgid "Bopomofo Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:485 msgid "CJK Strokes" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:489 msgid "Katakana Phonetic Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:493 msgid "Enclosed CJK Letters and Months" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:497 msgid "CJK Compatibility" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:501 msgid "CJK Unified Ideographs Extension A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:505 msgid "Yijing Hexagram Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:509 msgid "CJK Unified Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:513 msgid "Yi Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:517 msgid "Yi Radicals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:521 msgid "Lisu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:525 msgid "Vai" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:529 msgid "Cyrillic Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:533 msgid "Bamum" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:537 msgid "Modifier Tone Letters" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:541 msgid "Latin Extended-D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:545 msgid "Syloti Nagri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:549 msgid "Common Indic Number Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:553 msgid "Phags-pa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:557 msgid "Saurashtra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:561 msgid "Devanagari Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:565 msgid "Kayah Li" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:569 msgid "Rejang" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:573 msgid "Hangul Jamo Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:577 msgid "Javanese" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:581 msgid "Myanmar Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:585 msgid "Cham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:589 msgid "Myanmar Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:593 msgid "Tai Viet" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:597 msgid "Meetei Mayek Extensions" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:601 msgid "Ethiopic Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:605 msgid "Latin Extended-E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:609 msgid "Cherokee Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:613 msgid "Meetei Mayek" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:617 msgid "Hangul Syllables" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:621 msgid "Hangul Jamo Extended-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:625 msgid "High Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:629 msgid "High Private Use Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:633 msgid "Low Surrogates" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:637 msgid "Private Use Area" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:641 msgid "CJK Compatibility Ideographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:645 msgid "Alphabetic Presentation Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:649 msgid "Arabic Presentation Forms-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:653 msgid "Variation Selectors" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:657 msgid "Vertical Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:661 msgid "Combining Half Marks" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:665 msgid "CJK Compatibility Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:669 msgid "Small Form Variants" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:673 msgid "Arabic Presentation Forms-B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:677 msgid "Halfwidth and Fullwidth Forms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:681 msgid "Specials" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:685 msgid "Linear B Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:689 msgid "Linear B Ideograms" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:693 msgid "Aegean Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:697 msgid "Ancient Greek Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:701 msgid "Ancient Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:705 msgid "Phaistos Disc" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:709 msgid "Lycian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:713 msgid "Carian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:717 msgid "Coptic Epact Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:721 msgid "Old Italic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:725 msgid "Gothic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:729 msgid "Old Permic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:733 msgid "Ugaritic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:737 msgid "Old Persian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:741 msgid "Deseret" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:745 msgid "Shavian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:749 msgid "Osmanya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:753 msgid "Osage" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:757 msgid "Elbasan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:761 msgid "Caucasian Albanian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:765 msgid "Linear A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:769 msgid "Cypriot Syllabary" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:773 msgid "Imperial Aramaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:777 msgid "Palmyrene" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:781 msgid "Nabataean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:785 msgid "Hatran" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:789 msgid "Phoenician" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:793 msgid "Lydian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:797 msgid "Meroitic Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:801 msgid "Meroitic Cursive" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:805 msgid "Kharoshthi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:809 msgid "Old South Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:813 msgid "Old North Arabian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:817 msgid "Manichaean" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:821 msgid "Avestan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:825 msgid "Inscriptional Parthian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:829 msgid "Inscriptional Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:833 msgid "Psalter Pahlavi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:837 msgid "Old Turkic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:841 msgid "Old Hungarian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:845 msgid "Hanifi Rohingya" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:849 msgid "Rumi Numeral Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:853 msgid "Old Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:857 msgid "Sogdian" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:861 msgid "Elymaic" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:865 msgid "Brahmi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:869 msgid "Kaithi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:873 msgid "Sora Sompeng" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:877 msgid "Chakma" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:881 msgid "Mahajani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:885 msgid "Sharada" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:889 msgid "Sinhala Archaic Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:893 msgid "Khojki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:897 msgid "Multani" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:901 msgid "Khudawadi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:905 msgid "Grantha" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:909 msgid "Newa" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:913 msgid "Tirhuta" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:917 msgid "Siddham" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:921 msgid "Modi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:925 msgid "Mongolian Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:929 msgid "Takri" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:933 msgid "Ahom" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:937 msgid "Dogra" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:941 msgid "Warang Citi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:945 msgid "Nandinagari" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:949 msgid "Zanabazar Square" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:953 msgid "Soyombo" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:957 msgid "Pau Cin Hau" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:961 msgid "Bhaiksuki" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:965 msgid "Marchen" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:969 msgid "Masaram Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:973 msgid "Gunjala Gondi" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:977 msgid "Makasar" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:981 msgid "Tamil Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:985 msgid "Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:989 msgid "Cuneiform Numbers and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:993 msgid "Early Dynastic Cuneiform" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:997 msgid "Egyptian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1001 msgid "Egyptian Hieroglyph Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1005 msgid "Anatolian Hieroglyphs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1009 msgid "Bamum Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1013 msgid "Mro" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1017 msgid "Bassa Vah" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1021 msgid "Pahawh Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1025 msgid "Medefaidrin" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1029 msgid "Miao" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1033 msgid "Ideographic Symbols and Punctuation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1037 msgid "Tangut" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1041 msgid "Tangut Components" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1045 msgid "Kana Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1049 msgid "Kana Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1053 msgid "Small Kana Extension" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1057 msgid "Nushu" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1061 msgid "Duployan" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1065 msgid "Shorthand Format Controls" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1069 msgid "Byzantine Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1073 msgid "Musical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1077 msgid "Ancient Greek Musical Notation" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1081 msgid "Mayan Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1085 msgid "Tai Xuan Jing Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1089 msgid "Counting Rod Numerals" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1093 msgid "Mathematical Alphanumeric Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1097 msgid "Sutton SignWriting" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1101 msgid "Glagolitic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1105 msgid "Nyiakeng Puachue Hmong" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1109 msgid "Wancho" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1113 msgid "Mende Kikakui" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1117 msgid "Adlam" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1121 msgid "Indic Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1125 msgid "Ottoman Siyaq Numbers" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1129 msgid "Arabic Mathematical Alphabetic Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1133 msgid "Mahjong Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1137 msgid "Domino Tiles" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1141 msgid "Playing Cards" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1145 msgid "Enclosed Alphanumeric Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1149 msgid "Enclosed Ideographic Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1153 msgid "Miscellaneous Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1157 msgid "Emoticons" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1161 msgid "Ornamental Dingbats" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1165 msgid "Transport and Map Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1169 msgid "Alchemical Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1173 msgid "Geometric Shapes Extended" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1177 msgid "Supplemental Arrows-C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1181 msgid "Supplemental Symbols and Pictographs" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1185 msgid "Chess Symbols" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1189 msgid "Symbols and Pictographs Extended-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1193 msgid "CJK Unified Ideographs Extension B" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1197 msgid "CJK Unified Ideographs Extension C" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1201 msgid "CJK Unified Ideographs Extension D" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1205 msgid "CJK Unified Ideographs Extension E" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1209 msgid "CJK Unified Ideographs Extension F" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1213 msgid "CJK Compatibility Ideographs Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1217 msgid "Tags" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1221 msgid "Variation Selectors Supplement" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1225 msgid "Supplementary Private Use Area-A" msgstr "" #. TRANSLATORS: You might refer the translations from gucharmap with #. the following command: #. msgmerge -C gucharmap.po ibus.po ibus.pot #: src/ibusunicodegen.h:1229 msgid "Supplementary Private Use Area-B" msgstr "" #: tools/main.vala:51 msgid "List engine name only" msgstr "ಎಂಜಿನ್‌ನ ಹೆಸರನ್ನು ಮಾತ್ರ ಪಟ್ಟಿ ಮಾಡು" #: tools/main.vala:67 tools/main.vala:192 tools/main.vala:202 msgid "Can't connect to IBus.\n" msgstr "IBus ನೊಂದಿಗೆ ಸಂಪರ್ಕಕಲ್ಪಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.\n" #: tools/main.vala:93 #, c-format msgid "language: %s\n" msgstr "ಭಾಷೆ: %s\n" #: tools/main.vala:161 msgid "No engine is set.\n" msgstr "ಯಾವುದೆ ಎಂಜಿನ್ ಅನ್ನು ಹೊಂದಿಸಲಾಗಿಲ್ಲ.\n" #: tools/main.vala:169 msgid "Set global engine failed.\n" msgstr "ಸಾರ್ವತ್ರಿಕ ಎಂಜಿನ್ ಹೊಂದಿಸುವಿಕೆಯು ವಿಫಲಗೊಂಡಿದೆ.\n" #: tools/main.vala:174 msgid "Get global engine failed.\n" msgstr "ಸಾರ್ವತ್ರಿಕ ಎಂಜಿನ್ ಪಡೆಯುವಿಕೆಯು ವಿಫಲಗೊಂಡಿದೆ.\n" #: tools/main.vala:217 msgid "Read the system registry cache." msgstr "ವ್ಯವಸ್ಥೆಯ ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯನ್ನು ಓದು." #: tools/main.vala:219 msgid "Read the registry cache FILE." msgstr "ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆ FILE ಅನ್ನು ಓದು." #: tools/main.vala:237 tools/main.vala:242 msgid "The registry cache is invalid.\n" msgstr "ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯು ಅಮಾನ್ಯವಾಗಿದೆ.\n" #: tools/main.vala:257 msgid "Write the system registry cache." msgstr "ವ್ಯವಸ್ಥೆಯ ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯನ್ನು ಬರೆ." #: tools/main.vala:259 msgid "Write the registry cache FILE." msgstr "ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆ FILE ಅನ್ನು ಬರೆ." #: tools/main.vala:295 msgid "" "Use engine schema paths instead of ibus core, which can be comma-separated " "values." msgstr "" #: tools/main.vala:381 msgid "Resetting…" msgstr "ಮರುಹೊಂದಿಸುವಿಕೆ..." #: tools/main.vala:399 msgid "Done" msgstr "ಮುಗಿಯಿತು" #: tools/main.vala:444 msgid "Set or get engine" msgstr "ಎಂಜಿನ್ ಅನ್ನು ಹೊಂದಿಸು ಅಥವ ಪಡೆದುಕೊ" #: tools/main.vala:445 msgid "Exit ibus-daemon" msgstr "ibus-daemon ಇಂದ ನಿರ್ಗಮಿಸು" #: tools/main.vala:446 msgid "Show available engines" msgstr "ಲಭ್ಯವಿರುವ ಎಂಜಿನ್‌ಗಳನ್ನು ತೋರಿಸು" #: tools/main.vala:447 msgid "(Not implemented)" msgstr "(ಅನ್ವಯಿಸಲಾಗಿಲ್ಲ)" #: tools/main.vala:448 msgid "Restart ibus-daemon" msgstr "ibus-daemon ಅನ್ನು ಮರಳಿ ಸ್ಥಾಪಿಸು" #: tools/main.vala:449 msgid "Show version" msgstr "ಆವೃತ್ತಿಯನ್ನು ತೋರಿಸು" #: tools/main.vala:450 msgid "Show the content of registry cache" msgstr "ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯಲ್ಲಿರುವ ವಿಷಯವನ್ನು ತೋರಿಸು" #: tools/main.vala:451 msgid "Create registry cache" msgstr "ರಿಜಿಸ್ಟ್ರಿ ಕ್ಯಾಶೆಯನ್ನು ರಚಿಸು." #: tools/main.vala:452 msgid "Print the D-Bus address of ibus-daemon" msgstr "ibus-daemon ನ D-Bus ವಿಳಾಸವನ್ನು ಮುದ್ರಿಸು" #: tools/main.vala:453 msgid "Show the configuration values" msgstr "ಸಂರಚನೆಯ ಮೌಲ್ಯಗಳನ್ನು ತೋರಿಸು" #: tools/main.vala:454 msgid "Reset the configuration values" msgstr "ಸಂರಚನಾ ಮೌಲ್ಯಗಳನ್ನು ಮರುಹೊಂದಿಸು" #: tools/main.vala:456 msgid "Save emoji on dialog to clipboard " msgstr "" #: tools/main.vala:458 msgid "Show this information" msgstr "ಈ ಮಾಹಿತಿಯನ್ನು ತೋರಿಸು" #: tools/main.vala:464 #, c-format msgid "" "Usage: %s COMMAND [OPTION...]\n" "\n" msgstr "" "ಬಳಕೆ: %s COMMAND [OPTION...]\n" "\n" #: tools/main.vala:465 msgid "Commands:\n" msgstr "ಆದೇಶಗಳು:\n" #: tools/main.vala:494 #, c-format msgid "%s is unknown command!\n" msgstr "%s ಎನ್ನುವುದು ಗೊತ್ತಿರದ ಆದೇಶ!\n" #: ui/gtk3/emojier.vala:233 msgid "Favorites" msgstr "" #: ui/gtk3/emojier.vala:234 msgid "Others" msgstr "" #: ui/gtk3/emojier.vala:235 msgid "Open Unicode choice" msgstr "" #: ui/gtk3/emojier.vala:995 msgid "Bring back emoji choice" msgstr "" #: ui/gtk3/emojier.vala:1097 msgid "Page Down" msgstr "" #: ui/gtk3/emojier.vala:1108 msgid "Page Up" msgstr "" #: ui/gtk3/emojier.vala:1111 msgid "Show emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1112 #, fuzzy msgid "Close" msgstr "ಮುಚ್ಚು (_C)" #: ui/gtk3/emojier.vala:1118 msgid "Menu" msgstr "" #: ui/gtk3/emojier.vala:1129 msgid "Click to view a warning message" msgstr "" #: ui/gtk3/emojier.vala:1173 msgid "Loading a Unicode dictionary:" msgstr "" #: ui/gtk3/emojier.vala:1419 #, c-format msgid "Code point: %s" msgstr "" #: ui/gtk3/emojier.vala:1425 msgid "Has emoji variants" msgstr "" #: ui/gtk3/emojier.vala:1592 ui/gtk3/emojier.vala:1605 #, c-format msgid "Description: %s" msgstr "" #: ui/gtk3/emojier.vala:1592 msgid "None" msgstr "" #: ui/gtk3/emojier.vala:1616 #, c-format msgid "Annotations: %s" msgstr "" #: ui/gtk3/emojier.vala:1642 #, c-format msgid "Name: %s" msgstr "" #: ui/gtk3/emojier.vala:1650 #, c-format msgid "Alias: %s" msgstr "" #: ui/gtk3/emojier.vala:2140 ui/gtk3/ibus-extension-gtk3.desktop.in:3 #: ui/gtk3/ibus-ui-emojier.desktop.in:3 ui/gtk3/panel.vala:1123 msgid "Emoji Choice" msgstr "" #: ui/gtk3/emojier.vala:2142 msgid "Unicode Choice" msgstr "" #: ui/gtk3/emojier.vala:2432 msgid "" "Failed to get the current text application. Please re-focus your " "application. E.g. Press Esc key several times to release the emoji typing " "mode, click your desktop and click your text application again." msgstr "" #: ui/gtk3/emojierapp.vala:47 msgid "Canceled to choose an emoji." msgstr "" #: ui/gtk3/emojierapp.vala:67 msgid "Copied an emoji to your clipboard." msgstr "" #. TRANSLATORS: "FONT" should be capital and translatable. #. * It's used for an argument command --font=FONT #. #: ui/gtk3/emojierapp.vala:126 msgid "\"FONT\" for emoji characters on emoji dialog" msgstr "" #: ui/gtk3/emojierapp.vala:127 msgid "FONT" msgstr "" #. TRANSLATORS: "LANG" should be capital and translatable. #. * It's used for an argument command --lang=LANG #. #: ui/gtk3/emojierapp.vala:132 msgid "\"LANG\" for annotations on emoji dialog. E.g. \"en\"" msgstr "" #: ui/gtk3/emojierapp.vala:133 msgid "LANG" msgstr "" #: ui/gtk3/emojierapp.vala:135 msgid "Emoji annotations can be match partially" msgstr "" #: ui/gtk3/emojierapp.vala:139 msgid "Match with the length of the specified integer" msgstr "" #: ui/gtk3/emojierapp.vala:143 msgid "Match with the condition of the specified integer" msgstr "" #: ui/gtk3/panel.vala:282 ui/gtk3/panel.vala:313 msgid "IBus Panel" msgstr "" #: ui/gtk3/panel.vala:1095 msgid "IBus is an intelligent input bus for Linux/Unix." msgstr "IBus ಎನ್ನುವುದು Linux/Unix ಗಾಗಿನ ಒಂದು ಚತುರ ಇನ್‌ಪುಟ್ ಬಸ್." #: ui/gtk3/panel.vala:1099 msgid "translator-credits" msgstr "ಶಂಕರ್ ಪ್ರಸಾದ್ " #: ui/gtk3/panel.vala:1118 msgid "Preferences" msgstr "ಆದ್ಯತೆಗಳು " #: ui/gtk3/panel.vala:1144 msgid "Restart" msgstr "ಪುನರಾರಂಭಿಸು" #: ui/gtk3/panel.vala:1148 msgid "Quit" msgstr "ಬಿಟ್ಟು ಬಿಡು " #. Translators: If your locale is RTL, the msgstr is "default:RTL". #. * Otherwise the msgstr is "default:LTR". #: ui/gtk3/propertypanel.vala:368 ui/gtk3/propertypanel.vala:376 msgid "default:LTR" msgstr "default:LTR" #~ 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 = ಇಚ್ಛೆಯ" #~ msgid "IBus Update" #~ msgstr "IBus ಅಪ್‌ಡೇಟ್‌" #~ msgid "Super+space is now the default hotkey." #~ msgstr "Super+space ಎನ್ನುವುದು ಈಗ ಪೂರ್ವನಿಯೋಜಿತ ಹಾಟ್‌ಕೀಲ್ ಆಗಿರುತ್ತದೆ." ibus-1.5.22/po/nl.gmo0000644000000000000000000012335213623751604011202 00000000000000!$,"-+-1---..#+.O.f..o../ /<//0 00!0 40>0\0c0y0000000&01;1W1i1r1 y1 11111 1 111 11112"2 62B2I2Z2r2{22222'2 3 "3.3J3"a3"3"3"3"3"434K4h4444444 474 556<6B6Q6$m6&6'66 67 7%767"G7j7q7H777 7!8'888 ?85K8#88888889%-9 S9a9q9 y99999 99 9999#:*:?:G:O:(b:(:@:: :;#;(5;-^; ;;D;; <"< *<K<b<< <<<<<<= = ==9= >+>3>G>X>r>{>>> >>>>>> ? ?#?,?J? d?p??????????@'@ 0@ ;@F@.W@@0VAA"A#ATA2BBB BBBCC"C2CBCICYCaCjCCC CCC CC CC CCCD ,D:D>DXDiDzDDD!DDDDDE EE1EGE,LEyE*xFFOGmG|GGG GG GG GG GoGfLH1H1H.I!FIhII I II IIIII$I$"JGJ ]J%~JJJJ J JJK@ KCJKKKKKKKK KK K KL L&L9LLL QL^LdL{LLL L LL L L LL LLM/M9KMMMMMMMM MM M M M NN N *N5NIN hN)vN^N0N 0O ` a6a Qa]aaauaaaaa a7aabjb bb d dd?dOeSedekepeweeeee eee e.e#e ff6fIf,g2hIhgh~hh)hhhhriyiGj LjKYjj jjjj jjkk1kLk akokkkk*kkkl(l0l 7lClYlaljlpl l ll l l lll l l lmmm4m=mCmamumm)mm mmn"2n"Un"xn"n"n"no""oEo]odoyooooo=oo|p.qDq Lq!Zq7|q,q,qr +r'8r `rjr}r'rrrHr&s6s Ns"Xs{s ssCs+st 0t;tStktt"t%tttu uu+u4u Hu Suau guuu{uu(uuuuu,v23vFfvv vvv5v,w Hw RwEswww w"wx!&x"Hxkx |xxxxxxx yy8y0z@zIz`ztz zzz+z z{{"{*{@{S{ \{j{'s{{ {{{{ ||!|7| >|H|%^||| | ||6||4}~#&~&J~gq~~y  %-6T ] it  ʀπ  '<Qf{"ȁρ $=*Bm(&q΄ ք  t ^~4݅:8M! ̆ ؆ (CHf ч3U;U "7;D M Yglĉ։܉ % 8 E R^ pz;Š'.5L ` n {  ŋ#ދ ,h<9 ߌB?-R%֍  :ZIa ʎ؎Wu { (25QAi5* +G:b2ؒ$3=q'R2R!n  Ô! )6>Wf~ ͕ 0'I%q% іޖ% (09>ENWntz/c;LgG*8cL&JsN@ ;N2--4BNP  0B5VQ ޞ  .'M3u!˟3f:Q*#<`pt š֡ ݡ:i$#"!բ F-Ptť֥ ܥ    +8 @2L)) ܦJWLZ^%8 uoAze:xy].vVP$ywt"#_E-U'  27 N} 3QXl*x @Eb TQ+<!=Z/ 89d2Bc^P:)`~]L pkM|AYFGHIJK40RN~!&jOF?_!;tSX&$h-CD n 1\{ql  0(Us`Tao5;R|1C5 ),9c=I.{}Vg@iwYi>?\(azrhsHe3jWmgSMd7+%/pr> <,Kb"#[6G4quvfn'f D m[ 6B*kO"FONT" for emoji characters on emoji dialog"LANG" for annotations on emoji dialog. E.g. "en"%s is unknown command! (Not implemented)...Font and StyleGlobal input method settingsKeyboard LayoutKeyboard ShortcutsStartupIBus The intelligent input bus Homepage: https://github.com/ibus/ibus/wiki 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.AboutActivitiesAdd the selected input method into the enabled input methodsAdlamAdvancedAegean NumbersAhomAlchemical SymbolsAlias: %sAlphabetic Presentation FormsAlwaysAnatolian HieroglyphsAncient Greek Musical NotationAncient Greek NumbersAncient SymbolsAnimals & NatureAnnotations: %sArabicArabic Extended-AArabic Mathematical Alphabetic SymbolsArabic Presentation Forms-AArabic Presentation Forms-BArabic SupplementArmenianArrowsAuthor: %s Auto hideAvestanBalineseBamumBamum SupplementBasic LatinBassa VahBatakBengaliBhaiksukiBlock ElementsBopomofoBopomofo ExtendedBottom left cornerBottom right cornerBox DrawingBrahmiBraille PatternsBring back emoji choiceBugineseBuhidByzantine Musical SymbolsCJK CompatibilityCJK Compatibility FormsCJK Compatibility IdeographsCJK Compatibility Ideographs SupplementCJK Radicals SupplementCJK StrokesCJK Symbols and PunctuationCJK Unified IdeographsCJK Unified Ideographs Extension ACJK Unified Ideographs Extension BCJK Unified Ideographs Extension CCJK Unified Ideographs Extension DCJK Unified Ideographs Extension ECJK Unified Ideographs Extension FCan't connect to IBus. Canceled to choose an emoji.Candidates orientation:CarianCaucasian AlbanianChakmaChamCherokeeCherokee SupplementChess SymbolsChoose a condition to match emoji annotations partiallyChoose a default language of emoji dictionaries on the emoji dialog. The value $lang is applied to /usr/share/ibus/dicts/emoji-$lang.dictChoose one of the following conditions to match emoji annotations partially: 0 == Prefix match, 1 == Suffix match, 2 == Containing matchClick to view a warning messageCloseCode point: %sCombining Diacritical MarksCombining Diacritical Marks ExtendedCombining Diacritical Marks SupplementCombining Diacritical Marks for SymbolsCombining Half MarksCommands: Common Indic Number FormsComponentContaining matchControl PicturesCopied an emoji to your clipboard.CopticCoptic Epact NumbersCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Counting Rod NumeralsCreate registry cacheCuneiformCuneiform Numbers and PunctuationCurrency SymbolsCustomCustom fontCustom font name for emoji characters on emoji dialogCustom font name for language panelCypriot SyllabaryCyrillicCyrillic Extended-ACyrillic Extended-BCyrillic Extended-CCyrillic SupplementDConf preserve name prefixesDefault language for emoji dictionaryDescription: Description: %sDeseretDevanagariDevanagari ExtendedDingbatsDisable shortcut keysDisable:Do not showDograDomino TilesDoneDuployanEarly Dynastic CuneiformEgyptian Hieroglyph Format ControlsEgyptian HieroglyphsElbasanElymaicEmbed Preedit TextEmbed Preedit Text in Application WindowEmbed preedit text in application windowEmbed the preedit text of input method in the application windowEmojiEmoji ChoiceEmoji annotation language:Emoji annotation:Emoji annotations can be match partiallyEmoji shortcut keys for gtk_accelerator_parseEmoticonsEnable input method by defaultEnable input method by default when the application gets input focusEnable or disable:Enable shortcut keysEnable:Enclosed Alphanumeric SupplementEnclosed AlphanumericsEnclosed CJK Letters and MonthsEnclosed Ideographic SupplementEngines orderEthiopicEthiopic ExtendedEthiopic Extended-AEthiopic SupplementExit ibus-daemonFONTFailed to get the current text application. Please re-focus your application. E.g. Press Esc key several times to release the emoji typing mode, click your desktop and click your text application again.FavoritesFlagsFollow the input cursor in case the panel is always shownFood & DrinkGeneralGeneral PunctuationGeometric ShapesGeometric Shapes ExtendedGeorgianGeorgian ExtendedGeorgian SupplementGet global engine failed. GlagoliticGlagolitic SupplementGothicGranthaGreek ExtendedGreek and CopticGujaratiGunjala GondiGurmukhiHalfwidth and Fullwidth FormsHangul Compatibility JamoHangul JamoHangul Jamo Extended-AHangul Jamo Extended-BHangul SyllablesHanifi RohingyaHanunooHas emoji variantsHatranHebrewHide automaticallyHigh Private Use SurrogatesHigh SurrogatesHiraganaHorizontalIBus PanelIBus PreferencesIBus daemon could not be started in %d secondsIBus has been started! If you cannot use IBus, add the following lines to your $HOME/.bashrc; then relog into your desktop. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is an intelligent input bus for Linux/Unix.IPA ExtensionsIdeographic Description CharactersIdeographic Symbols and PunctuationIf emoji annotations can be matched with a partial string instead of the exact matchIf true, the panel follows the input cursor in case the panel is always shown. If false, the panel is shown at a fixed location.Imperial AramaicIndic Siyaq NumbersInput MethodInscriptional PahlaviInscriptional ParthianJavaneseKaithiKana Extended-AKana SupplementKanbunKangxi RadicalsKannadaKatakanaKatakana Phonetic ExtensionsKayah LiKbdKey code:Keyboard layout: %s Keyboard shortcutsKharoshthiKhmerKhmer SymbolsKhojkiKhudawadiLANGLanguage panel positionLanguage panel position:Language: %s LaoLatin Extended AdditionalLatin Extended-ALatin Extended-BLatin Extended-CLatin Extended-DLatin Extended-ELatin layouts which have no ASCIILatin-1 SupplementLepchaLetterlike SymbolsLimbuLinear ALinear B IdeogramsLinear B SyllabaryList engine name onlyLisuLoad the Unicode data at the time of startupLoad the Unicode data at the time of startup if true. About 15MB memory is needed to load the data. Load the Unicode data when open the emoji dialog at the beginning if false. The Unicode data is always loaded after the emoji data is loaded even if true.Load the emoji data at the time of startupLoad the emoji data at the time of startup if true. About 10MB memory is needed to load the data. Load the emoji data when open the emoji dialog at the beginning if false.Loading a Unicode dictionary:Low SurrogatesLycianLydianMahajaniMahjong TilesMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotations partially with more than the specified number of characters instead of the exact match.Match emoji annotations partially with the following condition and more than the number of characters:Match emoji annotations with the specified lengthMatch with the condition of the specified integerMatch with the length of the specified integerMathematical Alphanumeric SymbolsMathematical OperatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek ExtensionsMende KikakuiMenuMeroitic CursiveMeroitic HieroglyphsMiaoMiscellaneous Mathematical Symbols-AMiscellaneous Mathematical Symbols-BMiscellaneous SymbolsMiscellaneous Symbols and ArrowsMiscellaneous Symbols and PictographsMiscellaneous TechnicalModiModifier Tone LettersModifiers:MongolianMongolian SupplementMore…Move down the selected input method in the enabled input methodsMove up the selected input method in the enabled input methods listMroMultaniMusical SymbolsMyanmarMyanmar Extended-AMyanmar Extended-BNKoNabataeanName: %sNandinagariNew Tai LueNewaNext engine shortcut keysNext input method:No engine is set. NoneNumber FormsNushuNyiakeng Puachue HmongObjectsOghamOl ChikiOld HungarianOld ItalicOld North ArabianOld PermicOld PersianOld SogdianOld South ArabianOld TurkicOpen Unicode choiceOptical Character RecognitionOrientation of lookup tableOrientation of lookup table. 0 = Horizontal, 1 = VerticalOriyaOrnamental DingbatsOsageOsmanyaOtherOthersOttoman Siyaq NumbersPage DownPage UpPahawh HmongPalmyrenePau Cin HauPeople & BodyPhags-paPhaistos DiscPhoenicianPhonetic ExtensionsPhonetic Extensions SupplementPlaying CardsPlease press a key (or a key combination)Please press a key (or a key combination). The dialog will be closed when the key is released.Popup delay milliseconds for IME switcher windowPreferencesPrefix matchPrefixes of DConf keys to stop name conversionPreload enginesPreload engines during ibus starts upPrev engine shortcut keysPrevious input method:Print the D-Bus address of ibus-daemonPrivate Use AreaPsalter PahlaviQuitRGBA value of XKB iconRead the registry cache FILE.Read the system registry cache.RejangRemove the selected input method from the enabled input methodsReset the configuration valuesResetting…RestartRestart ibus-daemonRumi Numeral SymbolsRun xmodmap if .xmodmap or .Xmodmap exists when ibus engines are switched.RunicSamaritanSaurashtraSave emoji on dialog to clipboard Saved engines order in input method listSaved version numberSelect a languageSelect an input methodSelect keyboard shortcut for %sSet IBus PreferencesSet a font of Unicode candidates on the emoji dialogSet a language of emoji annotations on the emoji dialogSet global engine failed. Set or get engineSet 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.Set the behavior of ibus how to show or hide language barSet the orientation of candidates in lookup tableSharadaShare the same input method among all applicationsShavianShorthand Format ControlsShow available enginesShow emoji variantsShow icon on system trayShow information of the selected input methodShow input method nameShow input method name on language barShow input method's name on language bar when check the checkboxShow property panel:Show setup of the selected input methodShow the configuration valuesShow the content of registry cacheShow this informationShow versionSiddhamSinhalaSinhala Archaic NumbersSmall Form VariantsSmall Kana ExtensionSmileys & EmotionSogdianSora SompengSoyomboSpacing Modifier LettersSpecialsStart ibus on loginSuffix matchSundaneseSundanese SupplementSuperscripts and SubscriptsSupplemental Arrows-ASupplemental Arrows-BSupplemental Arrows-CSupplemental Mathematical OperatorsSupplemental PunctuationSupplemental Symbols and PictographsSupplementary Private Use Area-ASupplementary Private Use Area-BSutton SignWritingSyloti NagriSymbolsSymbols and Pictographs Extended-ASyriacSyriac SupplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing SymbolsTakriTamilTamil SupplementTangutTangut ComponentsTeluguThaanaThaiThe IBus daemon is not running. Do you wish to start it?The behavior of property panel. 0 = Do not show, 1 = Auto hide, 2 = Always showThe milliseconds to show property panelThe milliseconds to show property panel after focus-in or properties are changed.The 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.The registry cache is invalid. 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.The shortcut keys for switching to next input method in the listThe shortcut keys for switching to previous input method in the listThe shortcut keys for switching to the next input method in the listThe shortcut keys for switching to the previous input methodThe shortcut keys for turning Unicode typing on or offThe shortcut keys for turning emoji typing on or offThe shortcut keys for turning input method offThe shortcut keys for turning input method onThe shortcut keys for turning input method on or offThe shortcut keys to enable Unicode code point conversionsThe shortcut keys to enable conversions of emoji annotations or Unicode namesTibetanTifinaghTirhutaTop left cornerTop right cornerTransport and Map SymbolsTravel & PlacesTrigger shortcut keysTrigger shortcut keys for gtk_accelerator_parseUS layout is appended to the Latin layouts. variant can be omitted.UgariticUnicode ChoiceUnicode code point:Unicode font:Unicode shortcut keys for gtk_accelerator_parseUnified Canadian Aboriginal SyllabicsUnified Canadian Aboriginal Syllabics ExtendedUsage: %s COMMAND [OPTION...] Use custom fontUse custom font name for language panelUse custom font:Use engine schema paths instead of ibus core, which can be comma-separated values.Use global input methodUse shortcut with shift to switch to the previous input methodUse system keyboard (XKB) layoutUse system keyboard layoutUse xmodmapVaiVariation SelectorsVariation Selectors SupplementVedic ExtensionsVerticalVertical FormsWanchoWarang CitiWhether emoji annotations can be match partially or notWhether emoji annotations can be matched with a partial string instead of the exact match or not.Write the registry cache FILE.Write the system registry cache.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 percentage values in the range 0% to 100%, and 'a' is a floating point value in the range 0 to 1 of the alpha.Yi RadicalsYi SyllablesYijing Hexagram SymbolsYou can assign an annotation for a favorite emoji in this list.You can show the favorite emojis on emoji list if this list has any characters.Zanabazar Square_About_Add_Apply_Cancel_Close_Delete_Down_OK_Preferences_Remove_Updefault:LTRfavorite emoji annotation list on emoji dialogfavorite emoji list on emoji dialoglanguage: %s switching input methodstranslator-creditsProject-Id-Version: ibus 1.5.20 Report-Msgid-Bugs-To: https://github.com/ibus/ibus/issues PO-Revision-Date: 2019-04-16 04:49+0000 Last-Translator: Geert Warrink Language-Team: Dutch Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); X-Generator: Zanata 4.6.2 "FONT" voor emoji karakters op emoji dialoog"TAAL" voor annotaties op emoji dialoog. B.v. "en"%s is een onbekend commando! (Niet geimplementeerd)...Lettertype en stijlGlobale invoermethode instellingenToetsenbordindelingSneltoetsenOpstartenIBus De intelligente invoer bus Homepagina: https://github.com/ibus/ibus/wiki 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.OverActiviteitenVoeg de geselecteerde invoermethode toe aan de ingeschakelde invoermethodenAdlamGeavanceerdEgeïsche getallenAhomAlchemistische symbolenAlias: %sAlfabetische presentatievormenAltijdAnatolische hiërogliefenOude Griekse muzieknotatieOud Griekse getallenOude symbolenDieren & NatuurAnnotaties: %sArabischArabisch uitgebreid-AArabische wiskundige alfabetische symbolenArabische presentatievormen-AArabische presentatievormen-BArabisch supllementArmeensPijlenAuteur: %s Automatisch verbergenAvestanBalineesBamumBamum supplementBasis LatijnBassa VahBatakBengaleesBhaiksukiVak elementenBopomofoBopomofo uitgebreidLinksonderRechtsonderVak tekeningBrahmiBraille patronenBring de emoji keuze terugBugineseBuhidByzantijnse muzikale symbolenCJK compatibiliteitCJK compatibiliteit vormenCJK compatibiliteit ideografenCJK compatibiliteit ideografen supplementCJK radicalen supplementCJK-slagenCJK symbolen en interpumctieCJK uniforme ideografenCJK uniforme ideografen extensie ACJK uniforme ideografen extensie BCJK uniforme ideografen extensie CCJK uniforme ideografen extensie DCJK uniforme ideografen extensie ECJK uniforme ideografen extensie FKan niet met IBus verbinden. Annuleer het kiezen van een emoji.Kandidaten oriëntatie:CarianKaukasische AlbaneesChakmaChamCherokeeCherokee-supplementSchaaksymbolenKies een conditie om emoji annotaties gedeeltelijk te matchenKies een standaard taal met emoji woordenboeken op de emoji dialoog. De waarde $lang wordt toepast in /usr/share/ibus/dicts/emoji-$lang.dictKies een van de volgende condities om emoji annotaties gedeeltelijk te matchen: 0 == Voorvoegsel match, 1 == Achtervoegel match, 2 == Inhoudelijke matchKlik om een waarschuwingsboodschap te bekijkenSluitenCode punt: %sDiakritische kenmerken combinerenDiakritische tekens voor symbolen combineren uitgebreidDiakritische tekens voor symbolen combinerenDiakritische tekens voor symbolen combinerenCombinatie van halve cijfersCommando's: Gemeenschappelijke Indic nummerformatenOnderdeelInhoudelijke matchControle afbeeldingenEen emoji naar je clipboard gecopieerd.KoptischKoptische Epact-getallenCopyright (c) 2007-2010 Peng Huang Copyright (c) 2007-2010 Red Hat, Inc.Telpaal cijfersMaak registry cache aanCuneiformCuneiform getallen en interpunctieValutasymbolenAangepastAangepaste lettertypeAangepaste lettertype naam voor emoji karakters op de emoji dialoogAangepaste lettertype naam voor taal-paneelCypriotisch syllabaryCyrillischCyrillisch uitgebreid-ACyrillisch uitgebreid-BCyrillisch uitgebreid-CCyrillisch supplementDConf behoud van naam voorvoegselsStandaard taal voor emoji woordenboekBeschrijving: Beschrijving: %sDeseretDevanagariDevanagari uitgebreidDingbatsZet sneltoetsen uitUitzetten:Toon dit nietDograDomino stenenKlaarDuployanVroeg-dynastic CuneiformEgyptische hiëroglief formaat controlesEgyptische hiërogliefenElbasanElymaicVoeg pre-edit tekst inVoeg pre-edit tekst in in toepassingsvensterInsluiten van pre-edit tekst in toepassingsvensterSluit de pre-edit tekst van invoermethode in in het toepassingsvensterEmojiEmoji keuzeEmoji annotatietaal:Emoji annotatie:Emoji annotaties kunnen gedeeltelijk gematched wordenEmoji sneltoetsen voor gtk_accelerator_parseEmoticonsZet invoer-methode standaard aanZet invoer-methode standaard aan als de toepassing input focus krijgtAan- of uitzetten:Zet sneltoetsen aanAanzetten:Ingesloten alfanumeriek supplementIngesloten alfanumeriekIngesloten CJK letters en maandenIngesloten ideografisch supplementMachine volgordeEthiopischEthiopische uitgebreidEthiopische uitgebreid-AEthiopisch supplementVerlaat ibus-daemonFONTHet verkrijgen van de huidige teksttoepassing mislukte. Stel de focus op je toepassing opnieuw in. Bijvoorbeeld, druk meerdere keren op de Esc toets voor het vrijgeven van de emoji type modus, klik op je bureaublad en klik opnieuw op de teksttoepassing.FavorietenVlaggenVolg de input cursor als het paneel altijd getoond wordtVoedsel & DrankAlgemeenAalgemene interpunctieGeometrische vormenGeometrische vormen uitgebreidGeorgischGeorgisch uitgebreidGregoriaans supplementVerkrijgen van globale machine is mislukt. GlagolitischGlagolitisch supplementGotischGranthaGriekse uitbreidingenGrieks en KoptischGujaratiGunjala GondiGurmukhiHalfbreedte en volledige breedte vormenHangul-compatibiliteit JamoHangul JamoHangul Jamo uitgebreid-AHangul Jamo uitgebreid-BHangul lettergrepenHanifi RohingyaHanunooHeeft emoji variantenHatranHebreeuwsAutomatisch verbergenSurrogaten met een hoog privégebruikHoge surrogatenHiraganaHorizontaalIBus PaneelIBus voorkeurenIBus daemon kon niet binnen %d seconden gestart wordenIBus 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. export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibusIBus is een intelligente invoer bus voor Linux/Unix.IPA-uitbreidingenIdeografische beschrijvingkaraktersIdeografische symbolen en interpunktieAls emoji annotaties gematched kunnen worden met een gedeeltelijke string in plaats van de exacte matchAls 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.Imperiaal ArameesIndic Siyaq NummersInvoermethodeInscriptioneel PahlaviInscriptioneel ParthianJavaansKaithiKana uitgebreid-AKana supplementKanbunKangxi radicalenKannadaKatakanaKatakana fonetische extensiesKayah LiToetsenbordToetscode:Toetsenbordindeling: %s SneltoetsenKharoshthiKhmerKhmer symbolenKhojkiKhudawadiTAALTaal-paneel positieTaal panel positie:Taal: %s LaotiaansLatijns uitbreidingen extraLatijns uitgebreid-ALatijns uitgebreid-BLatijns uitgebreid-CLatijns uitgebreid-DLatijns uitgebreid-ELatin indelingen hebben geen ASCIILatijns-1 supplementLepchaLetterachtige symbolenLimbuLineaire ALineaire B ideogrammenLineaire B syllabarieToon alleen machinenamenLisuLaad de Unicode data tijdens het opstartenLaad de Unicode data tijden het opstarten indien waar. Er is ongeveer 15MB geheugen nodig om de data te laden. Laad de Unicode data bij het openen van het begin van de emoji dialoog indien onwaar. De Unicode data wordt altijd geladen na het laden van de emoji data zelfs bij waar. Laad de emoji data tijdens het opstartenLaad de emoji data tijden het opstarten indien waar. Er is ongeveer 10MB geheugen nodig om de data te laden. Laad de emoji data bij het openen van het begin van de emoji dialoog indien onwaar.Een Unicode woordenboek wordt geladen:Lage surrogatenLycianLydianMahajaniMahjong stenenMakasarMalayalamMandaicManichaeanMarchenMasaram GondiMatch emoji annotaties gedeeltelijk met meer dan het gespecificeerde aantal karakters in plaats van de exacte match.Match emoji annotaties gedeeltelijk met de volgende conditie en meer dan het aantal karakters:Match emoji annotaties met de gespecificeerde lengteMatch met de conditie van het gespecificeerde geheel getalMatch met de lengte van het gespecificeerde geheel getalWiskundige alfanumerieke symbolenWiskundige operatorsMayan NumeralsMedefaidrinMeetei MayekMeetei Mayek uitbreidingenMende KikakuiMenuMeroïtisch cursiefMeroïtische hiërogliefenMiaoDiverse wiskundige symbolen-ADiverse wiskundige symbolen-BDiverse symbolenDiverse symbolen en pijlenDiverse symbolen en pictogrammenDiversen technischModiModificatie toon lettersModificatietoetsen:MongoolsMongools supplementMeer…Verplaats de geselecteerde invoermethode omlaag in de aangezette invoermethoden lijstVerplaats de geselecteerde invoermethode omhoog in de aangezette invoermethoden lijstMroMultaniMuzikale symbolenMyanmarMyanmar uitgebreid-AMyanmar uitgebreid-BNKoNabateesNaam: %sNandinagariNieuw Tai LueNewaVolgende engine sneltoetsenVolgende invoermethode:Er is geen machine ingesteld. GeenNummerformulierenNushuNyiakeng Puachue HmongObjectenOgamOl ChikiOud-HongaarsOud ItaliaansOud Noord-ArabischOud PermischOud PerzischOld SogdianOud Zuid-ArabischOud-TurksOpen Unicode keuzeOptische tekenherkenningOriëntatie van opzoektabelOriëntatie van opzoektabel. 0 = horizontaal, 1 = verticaalOriyaOrnamentele dingbatsOsageOsmanyaAndereAndereOttoman Siyaq getallenPagina naar benedenPagina omhoogPahawh HmongPalmyrenePau Cin HauMensen & LichaamPhags-paPhaistos schijfFenicischFonetische uitbreidingenFonetische uitbreidingen supplementSpeelkaartenDruk op een toets (of een toetsencombinatie)Druk op een toets (of een toetsencombinatie). De dialoog wordt afgesloten als de toets losgelaten wordt.Pop-up vertraging milliseconden voor IME omschakelvensterVoorkeurenVoorvoegsel matchVoorvoegsels van DConf sleutels voor het stoppen van naamconversieEngines voor-ladenEngines voor-laden tijdens opstarten van ibusVorige engine sneltoetsenVorige invoermethode:Print het D-Bus adres van ibus-daemonPrivé-gebruikPsalter PahlaviAfsluitenRGBA waarde van XKB icoonLees het registry cache BESTAND.Lees de systeem registry cache.RejangVerwijder de geselecteerde invoermethode uit de aangezette invoermethodenHerstel de configuratiewaardenHerstellen…Opnieuw startenStart ibus-daemon opnieuw opRumi numerieke symbolenVoer xmodmap uit als .xmodmap of .Xmodmap bestaat als ibus engines worden omgeschakeld.RunenSamaritaansSaurashtraSla emoji op dialoog op naar clipboard Opgeslagen machine volgorde in invoermethode lijstVersienummer opgeslagenSelecteer een taalSelecteer een invoermethodeSelecteer sneltoets voor %sStel IBus voorkeuren inStel een lettertype van Unicode kandidaten in op de emoji dialoogZet een taal met emoji annotaties op de emoji dialoogInstellen van globale machine is mislukt. Stel engine in of haal deze opStel pop-up vertraging in op milliseconden 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.Stel het gedrag van ibus in voor het tonen of verbergen van de taalbalkStel de oriëntatie in van de kandidaten in de opzoektabelSharadaDeel dezelfde input-methode voor alle toepassingenShavianSteno formaatcontroleToon beschikbare enginesToon emoji variantenToon icoon op systeemvakToon informatie over de geselecteerde invoermethodeToon naam van invoermethodeToon naam van invoermethode op taalbalkToon de naam van de invoermethode op de taalbalk als je het selectievakje aanvinktToon eigenschapspaneelToon instelling van de geselecteerde invoermethodeToon de configuratiewaardenToon de inhoud van registry cacheToon deze informatieToon versieSiddhamSingaleesArchaïsche getallen van SinhalaKleine vormvariantenSmall Kana uitbreidingSmileys & EmotieSogdianSora SompengSoyomboLetterafstand veranderenBijzonderhedenStart ibus bij inloggenAchtervoegsel matchSundaneseSoendanees supplementSuperscripts en subscriptsAanvullende pijlen-AAanvullende pijlen-BSupplementaire pijlen-CAanvullende wiskundige operatorsAanvullende interpunctieSupplementaire symbolen en pictogrammenSupplementair privé gebruiksgebied-ASupplementair privé gebruiksgebied-BSutton tekenschriftSyloti NagriSymbolenSymbolen en Pictogrammen Uitgebreid-ASyrischSyrisch supplementTagalogTagbanwaTagsTai LeTai ThamTai VietTai Xuan Jing symbolenTakriTamilTamil supplementTangutTangut onderdelenTeluguThaanaThaisDe IBus daemon draait niet. Wil je het starten?Het gedrag van eigenschapspaneel. 0 = Toon dit niet, 1 = Automatisch verbergen, 2 = Toon het altijdHet aanral milliseconden om het eigenschapspaneel te tonen Het aantal milliseconden om het eigenschapspaneel te tonen nadat focus of eigenschappen veranderd zijn.Het aantal milliseconden om het paneelicoon van een eigenschap te tonenHet aantal milliseconden om het paneelicoon van een engine icoon aan een eigenschapicoon te tonen wanneer de engines omgeschakeld worden, wordt gespecificeerd door de waarde van icon-prop-key in IBusEngineDesc. Als de waarde 0 is, is er geen delay en wordt de eigenschapicoon onmiddellijk getoond.De registry cache is ongeldig. 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. De sneltoetsen voor het schakelen naar de volgende invoermethode in de lijstDe sneltoetsen voor het schakelen naar de vorige invoermethode in de lijstDe sneltoetsen voor het omschakelen naar de volgende invoermethode in de lijstDe sneltoetsen voor het omschakelen naar de vorige invoermethodeDe sneltoetsen voor het aan of uit zetten van Unicode typenDe sneltoetsen om emoji typen aan of uit te zettenDe sneltoetsen om invoermethode uit te zettenDe sneltoetsen om invoermethode aan te zettenDe sneltoetsen om invoermethode aan of uit te zettenDe sneltoetsen voor het aanzetten van Unicode code punt conversiesDe sneltoetsen voor het aanzetten van conversies van emoji annotaties of UnicodeTibetaansTifinaghTirhutaLinksbovenRechtsbovenTransport- en kaartsymbolenReizen & PlaatsenTrigger sneltoetsenActiveer snelkoppeltoetsen voor gtk_accelerator_parseUS indeling is toegevoegd aan de Latin indelingen. variant kan weggelaten worden.UgaritischUnicode keuzeUnicode code punt:Unicode lettertype:Unicode sneltoetsen voor gtk_accelerator_parseVerenigde Canadese Aboriginal syllabicsVerenigde Canadese Aboriginal syllabisch uitgebreidGebruik: %s COMMANDO [OPTIE...] Gebruik aangepast lettertypeGebruik aangepaste lettertype naam voor taal-paneelGebruik aangepast lettertype:Gebruik engine schemapaden in plaats van ibus core, welde door komma's gescheiden waardes kunnen zijn.Gebruik globale invoermethodeGebruik snelkoppeling met Shift voor het omschakelen naar de vorige invoermethodeGebruik systeem toetsenbord (XKB) indelingGebruik systeem toetsenbordindelingGebruik xmodmapVaiVariatie selectorenVariatie selectoren supplementVedic uitbreidingenVerticaalVerticale vormenWanchoWarang CitiWorden emoji annotaties wel of niet gedeeltelijk gematchedWorden emoji annotaties wel of niet gematched met een gedeeltelijke string in plaats van de exacte match.Schrijf het registry cache BESTAND.Schrijf de systeem registry cache.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.Yi radicalenYi lettergrepenYijing Hexagram-symbolenJe kunt in deze lijst een annotatie toekennen aan een favoriete emoji.Je kunt de favoritee emojis op emoji lijst tonen als deze lijst karakters heeft.Zanabazar SquareI_nfo_ToevoegenToe_passen_AnnulerenSl_uiten_VerwijderenO_mlaag_Ok_Voorkeuren_Verwijderen_Omhoogdefault:LTRfavoriete emoji annotatielijst op de emoji dialoogfavoriete emoji lijst op de emoji dialoogtaal:%s bezig met omschakelen van invoermethodes Geert Warrinkibus-1.5.22/depcomp0000755000000000000000000005602013623751265011024 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2018 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 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: ibus-1.5.22/py-compile0000755000000000000000000001110013623751264011440 00000000000000#!/bin/sh # py-compile - Compile a Python program scriptversion=2018-03-07.03; # UTC # Copyright (C) 2000-2018 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 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: ibus-1.5.22/src/0000755000000000000000000000000013623751564010315 500000000000000ibus-1.5.22/src/ibusserializable.c0000644000000000000000000002373313623750431013732 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) 2018-2019 Takao Fujiwara * Copyright (C) 2008-2019 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) \ ((IBusSerializablePrivate *)ibus_serializable_get_instance_private (o)) 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; static gint ibus_serializable_private_offset; G_GNUC_UNUSED static inline gpointer ibus_serializable_get_instance_private (IBusSerializable *self) { return (G_STRUCT_MEMBER_P (self, ibus_serializable_private_offset)); } 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 finalize */ 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); ibus_serializable_private_offset = g_type_add_instance_private (type, sizeof (IBusSerializablePrivate)); } 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); if (ibus_serializable_private_offset) { g_type_class_adjust_private_offset (class, &ibus_serializable_private_offset); } 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 (IBUS_SERIALIZABLE (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_object (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_object (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.22/src/ibusenginesimple.c0000644000000000000000000017552013623750431013745 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-2019 Takao Fujiwara * Copyright (C) 2014-2017 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 "ibuscomposetable.h" #include "ibusemoji.h" #include "ibusenginesimple.h" #include "ibusenginesimpleprivate.h" #include "ibuskeys.h" #include "ibuskeysyms.h" #include "ibusutil.h" /* This file contains the table of the compose sequences, * static const guint16 gtk_compose_seqs_compact[] = {} * It is generated from the compose-parse.py script. */ #include "gtkimcontextsimpleseqs.h" #include #include #define X11_DATADIR X11_DATA_PREFIX "/share/X11/locale" #define IBUS_ENGINE_SIMPLE_GET_PRIVATE(o) \ ((IBusEngineSimplePrivate *)ibus_engine_simple_get_instance_private (o)) #define SET_COMPOSE_BUFFER_ELEMENT_NEXT(buffer, index, value) { \ if ((index) >= COMPOSE_BUFFER_SIZE && \ COMPOSE_BUFFER_SIZE < IBUS_MAX_COMPOSE_LEN) { \ COMPOSE_BUFFER_SIZE = ((index) + 10) < IBUS_MAX_COMPOSE_LEN \ ? ((index) + 10) : IBUS_MAX_COMPOSE_LEN; \ (buffer) = g_renew (guint16, (buffer), COMPOSE_BUFFER_SIZE + 1);\ } \ if ((index) < COMPOSE_BUFFER_SIZE) { \ (buffer)[(index)] = (value); \ (index) += 1; \ } \ } #define SET_COMPOSE_BUFFER_ELEMENT_END(buffer, index, value) { \ if ((index) > COMPOSE_BUFFER_SIZE) \ (index) = COMPOSE_BUFFER_SIZE; \ (buffer)[(index)] = (value); \ } #define CHECK_COMPOSE_BUFFER_LENGTH(index) { \ if ((index) > COMPOSE_BUFFER_SIZE) \ (index) = COMPOSE_BUFFER_SIZE; \ } typedef struct { GHashTable *dict; int max_seq_len; } IBusEngineDict; struct _IBusEngineSimplePrivate { guint16 *compose_buffer; gunichar tentative_match; gchar *tentative_emoji; gint tentative_match_len; guint hex_mode_enabled : 1; guint in_hex_sequence : 1; guint in_emoji_sequence : 1; guint modifiers_dropped : 1; IBusEngineDict *emoji_dict; IBusLookupTable *lookup_table; gboolean lookup_table_visible; }; struct _IBusComposeTableCompactPrivate { const guint32 *data2; }; /* 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). * Assign the value of "Number of different first items" of compose-parse.py * to n_seqs in IBusComposeTableCompact */ IBusComposeTableCompactPrivate ibus_compose_table_compact_32bit_priv = { gtk_compose_seqs_compact_32bit_second }; const IBusComposeTableCompactEx ibus_compose_table_compact = { NULL, gtk_compose_seqs_compact, 5, 30, 6 }; const IBusComposeTableCompactEx ibus_compose_table_compact_32bit = { &ibus_compose_table_compact_32bit_priv, gtk_compose_seqs_compact_32bit_first, 5, 9, 6 }; guint COMPOSE_BUFFER_SIZE = 20; static GSList *global_tables; /* functions prototype */ static void ibus_engine_simple_destroy (IBusEngineSimple *simple); static void ibus_engine_simple_focus_in (IBusEngine *engine); static void ibus_engine_simple_focus_out (IBusEngine *engine); 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_page_down (IBusEngine *engine); static void ibus_engine_simple_page_up (IBusEngine *engine); static void ibus_engine_simple_candidate_clicked (IBusEngine *engine, guint index, guint button, guint state); static void ibus_engine_simple_commit_char (IBusEngineSimple *simple, gunichar ch); static void ibus_engine_simple_commit_str (IBusEngineSimple *simple, const gchar *str); static void ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple); G_DEFINE_TYPE_WITH_PRIVATE (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->focus_in = ibus_engine_simple_focus_in; engine_class->focus_out = ibus_engine_simple_focus_out; engine_class->reset = ibus_engine_simple_reset; engine_class->process_key_event = ibus_engine_simple_process_key_event; engine_class->page_down = ibus_engine_simple_page_down; engine_class->page_up = ibus_engine_simple_page_up; engine_class->candidate_clicked = ibus_engine_simple_candidate_clicked; } static void ibus_engine_simple_init (IBusEngineSimple *simple) { simple->priv = IBUS_ENGINE_SIMPLE_GET_PRIVATE (simple); simple->priv->compose_buffer = g_new0(guint16, COMPOSE_BUFFER_SIZE + 1); simple->priv->hex_mode_enabled = g_getenv("IBUS_ENABLE_CTRL_SHIFT_U") != NULL || g_getenv("IBUS_ENABLE_CONTROL_SHIFT_U") != NULL; } static void ibus_engine_simple_destroy (IBusEngineSimple *simple) { IBusEngineSimplePrivate *priv = simple->priv; if (priv->emoji_dict) { if (priv->emoji_dict->dict) g_clear_pointer (&priv->emoji_dict->dict, g_hash_table_destroy); g_slice_free (IBusEngineDict, priv->emoji_dict); priv->emoji_dict = NULL; } g_clear_object (&priv->lookup_table); g_clear_pointer (&priv->compose_buffer, g_free); g_clear_pointer (&priv->tentative_emoji, g_free); IBUS_OBJECT_CLASS(ibus_engine_simple_parent_class)->destroy ( IBUS_OBJECT (simple)); } static void ibus_engine_simple_focus_in (IBusEngine *engine) { IBUS_ENGINE_CLASS (ibus_engine_simple_parent_class)->focus_in (engine); } static void ibus_engine_simple_focus_out (IBusEngine *engine) { ibus_engine_simple_reset (engine); IBUS_ENGINE_CLASS (ibus_engine_simple_parent_class)->focus_out (engine); } 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; } else if (priv->tentative_emoji || priv->in_emoji_sequence) { priv->in_emoji_sequence = FALSE; g_clear_pointer (&priv->tentative_emoji, g_free); } else if (!priv->in_hex_sequence && !priv->in_emoji_sequence) { 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; } if (priv->tentative_emoji || priv->in_emoji_sequence) { priv->in_emoji_sequence = FALSE; g_clear_pointer (&priv->tentative_emoji, g_free); } ibus_engine_commit_text ((IBusEngine *)simple, ibus_text_new_from_unichar (ch)); } static gunichar ibus_keysym_to_unicode (guint16 keysym, gboolean combining) { #define CASE(keysym_suffix, unicode) \ case IBUS_KEY_dead_##keysym_suffix: return unicode #define CASE_COMBINE(keysym_suffix, combined_unicode, isolated_unicode) \ case IBUS_KEY_dead_##keysym_suffix: \ if (combining) \ return combined_unicode; \ else \ return isolated_unicode switch (keysym) { CASE (a, 0x03041); CASE (A, 0x03042); CASE (i, 0x03043); CASE (I, 0x03044); CASE (u, 0x03045); CASE (U, 0x03046); CASE (e, 0x03047); CASE (E, 0x03048); CASE (o, 0x03049); CASE (O, 0x0304A); CASE (abovecomma, 0x0313); CASE_COMBINE (abovedot, 0x0307, 0x02D9); CASE (abovereversedcomma, 0x0314); CASE_COMBINE (abovering, 0x030A, 0x02DA); CASE_COMBINE (acute, 0x0301, 0x00B4); CASE (belowbreve, 0x032E); CASE_COMBINE (belowcircumflex, 0x032D, 0xA788); CASE_COMBINE (belowcomma, 0x0326, 0x002C); CASE (belowdiaeresis, 0x0324); CASE_COMBINE (belowdot, 0x0323, 0x002E); CASE_COMBINE (belowmacron, 0x0331, 0x02CD); CASE_COMBINE (belowring, 0x030A, 0x02F3); CASE_COMBINE (belowtilde, 0x0330, 0x02F7); CASE_COMBINE (breve, 0x0306, 0x02D8); CASE_COMBINE (capital_schwa, 0x018F, 0x04D8); CASE_COMBINE (caron, 0x030C, 0x02C7); CASE_COMBINE (cedilla, 0x0327, 0x00B8); CASE_COMBINE (circumflex, 0x0302, 0x005E); CASE (currency, 0x00A4); // IBUS_KEY_dead_dasia == IBUS_KEY_dead_abovereversedcomma CASE_COMBINE (diaeresis, 0x0308, 0x00A8); CASE_COMBINE (doubleacute, 0x030B, 0x02DD); CASE_COMBINE (doublegrave, 0x030F, 0x02F5); CASE_COMBINE (grave, 0x0300, 0x0060); CASE (greek, 0x03BC); CASE (hook, 0x0309); CASE (horn, 0x031B); CASE (invertedbreve, 0x032F); CASE_COMBINE (iota, 0x0345, 0x037A); CASE_COMBINE (macron, 0x0304, 0x00AF); CASE_COMBINE (ogonek, 0x0328, 0x02DB); // IBUS_KEY_dead_perispomeni == IBUS_KEY_dead_tilde // IBUS_KEY_dead_psili == IBUS_KEY_dead_abovecomma CASE_COMBINE (semivoiced_sound, 0x309A, 0x309C); CASE_COMBINE (small_schwa, 0x1D4A, 0x04D9); CASE (stroke, 0x002F); CASE_COMBINE (tilde, 0x0303, 0x007E); CASE_COMBINE (voiced_sound, 0x3099, 0x309B); case IBUS_KEY_Multi_key: return 0x2384; default:; } return 0x0; #undef CASE #undef CASE_COMBINE } static void ibus_engine_simple_commit_str (IBusEngineSimple *simple, const gchar *str) { IBusEngineSimplePrivate *priv = simple->priv; gchar *backup_str; g_return_if_fail (str && *str); backup_str = g_strdup (str); if (priv->tentative_match || priv->in_hex_sequence) { priv->in_hex_sequence = FALSE; priv->tentative_match = 0; priv->tentative_match_len = 0; } if (priv->tentative_emoji || priv->in_emoji_sequence) { priv->in_emoji_sequence = FALSE; g_clear_pointer (&priv->tentative_emoji, g_free); } ibus_engine_commit_text ((IBusEngine *)simple, ibus_text_new_from_string (backup_str)); g_free (backup_str); } static void ibus_engine_simple_update_preedit_text (IBusEngineSimple *simple) { IBusEngineSimplePrivate *priv = simple->priv; gunichar outbuf[COMPOSE_BUFFER_SIZE + 1]; int len = 0; if (priv->in_hex_sequence || priv->in_emoji_sequence) { int hexchars = 0; if (priv->in_hex_sequence) outbuf[0] = L'u'; else outbuf[0] = L'@'; len = 1; while (priv->compose_buffer[hexchars] != 0) { outbuf[len] = ibus_keyval_to_unicode ( priv->compose_buffer[hexchars]); ++len; ++hexchars; } g_assert (len <= COMPOSE_BUFFER_SIZE); } else if (priv->tentative_match) { outbuf[len++] = priv->tentative_match; } else if (priv->tentative_emoji && *priv->tentative_emoji) { IBusText *text = ibus_text_new_from_string (priv->tentative_emoji); len = strlen (priv->tentative_emoji); 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); return; } else { int hexchars = 0; while (priv->compose_buffer[hexchars] != 0) { guint16 keysym = priv->compose_buffer[hexchars]; gunichar unichar = ibus_keysym_to_unicode (keysym, FALSE); if (unichar > 0) outbuf[len] = unichar; else outbuf[len] = ibus_keyval_to_unicode (keysym); if (!outbuf[len]) { g_warning ( "Not found alternative character of compose key 0x%X", priv->compose_buffer[hexchars]); } ++len; ++hexchars; } g_assert (len <= IBUS_MAX_COMPOSE_LEN); } 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]; CHECK_COMPOSE_BUFFER_LENGTH (n_compose); 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 IBusEngineDict * load_emoji_dict () { IBusEngineDict *emoji_dict; GList *keys; int max_length = 0; emoji_dict = g_slice_new0 (IBusEngineDict); emoji_dict->dict = ibus_emoji_dict_load (IBUS_DATA_DIR "/dicts/emoji.dict"); if (!emoji_dict->dict) return emoji_dict; keys = g_hash_table_get_keys (emoji_dict->dict); for (; keys; keys = keys->next) { int length = strlen (keys->data); if (max_length < length) max_length = length; } emoji_dict->max_seq_len = max_length; return emoji_dict; } static gboolean check_emoji_table (IBusEngineSimple *simple, gint n_compose, gint index) { IBusEngineSimplePrivate *priv = simple->priv; IBusEngineDict *emoji_dict = priv->emoji_dict; GString *str = NULL; gint i; gchar buf[7]; GSList *words = NULL; g_assert (IBUS_IS_ENGINE_SIMPLE (simple)); CHECK_COMPOSE_BUFFER_LENGTH (n_compose); if (priv->lookup_table == NULL) { priv->lookup_table = ibus_lookup_table_new (10, 0, TRUE, TRUE); g_object_ref_sink (priv->lookup_table); } if (emoji_dict == NULL) emoji_dict = priv->emoji_dict = load_emoji_dict (simple); if (emoji_dict == NULL || emoji_dict->dict == NULL) return FALSE; if (n_compose > emoji_dict->max_seq_len) return FALSE; str = g_string_new (NULL); priv->lookup_table_visible = FALSE; 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_isprint (ch)) return FALSE; buf[g_unichar_to_utf8 (ch, buf)] = '\0'; g_string_append (str, buf); ++i; } if (str->str) { words = g_hash_table_lookup (emoji_dict->dict, str->str); } g_string_free (str, TRUE); if (words != NULL) { int i = 0; ibus_lookup_table_clear (priv->lookup_table); priv->lookup_table_visible = TRUE; while (words) { if (i == index) { g_clear_pointer (&priv->tentative_emoji, g_free); priv->tentative_emoji = g_strdup (words->data); } IBusText *text = ibus_text_new_from_string (words->data); ibus_lookup_table_append_candidate (priv->lookup_table, text); words = words->next; i++; } return TRUE; } return FALSE; } 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; } static gboolean check_table (IBusEngineSimple *simple, const IBusComposeTableEx *table, gint n_compose, gboolean is_32bit) { IBusEngineSimplePrivate *priv = simple->priv; gint row_stride = table->max_seq_len + 2; guint16 *data_first; int n_seqs; guint16 *seq; g_assert (IBUS_IS_ENGINE_SIMPLE (simple)); CHECK_COMPOSE_BUFFER_LENGTH (n_compose); if (n_compose > table->max_seq_len) return FALSE; if (is_32bit) { if (!table->priv) return FALSE; data_first = table->priv->data_first; n_seqs = table->priv->first_n_seqs; } else { data_first = table->data; n_seqs = table->n_seqs; } seq = bsearch (priv->compose_buffer, data_first, n_seqs, sizeof (guint16) * row_stride, compare_seq); if (seq == NULL) return FALSE; guint16 *prev_seq; priv->tentative_match = 0; priv->tentative_match_len = 0; /* Back up to the first sequence that matches to make sure * we find the exact match if their is one. */ while (seq > data_first) { 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 = 0; int num = 0; int index = 0; gchar *output_str = NULL; GError *error = NULL; if (is_32bit) { num = seq[table->max_seq_len]; index = seq[table->max_seq_len + 1]; value = table->priv->data_second[index]; } else { value = seq[table->max_seq_len]; } /* We found a tentative match. See if there are any longer * sequences containing this subsequence */ next_seq = seq + row_stride; if (next_seq < data_first + row_stride * 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; } } if (is_32bit) { output_str = g_ucs4_to_utf8 (table->priv->data_second + index, num, NULL, NULL, &error); if (output_str) { ibus_engine_simple_commit_str(simple, output_str); g_free (output_str); } else { g_warning ("Failed to output multiple characters: %s", error->message); g_error_free (error); } } else { ibus_engine_simple_commit_char (simple, value); } priv->compose_buffer[0] = 0; } ibus_engine_simple_update_preedit_text (simple); return TRUE; } gboolean ibus_check_compact_table (const IBusComposeTableCompactEx *table, guint16 *compose_buffer, gint n_compose, gboolean *compose_finish, gunichar **output_chars) { gint row_stride; guint16 *seq_index; guint16 *seq; gint i; if (compose_finish) *compose_finish = FALSE; if (output_chars) *output_chars = NULL; CHECK_COMPOSE_BUFFER_LENGTH (n_compose); /* 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, // compose_buffer[0], // compose_buffer[1], // compose_buffer[2], // compose_buffer[3]); 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; } if (n_compose == 1) { // g_debug ("compact: yes\n"); return TRUE; } // g_debug ("compact: %04x ", *seq_index); seq = NULL; if (table->priv) { for (i = n_compose - 1; i < table->max_seq_len; i++) { row_stride = i + 2; if (seq_index[i + 1] - seq_index[i] > 0) { 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); if (seq) { if (i == n_compose - 1) break; else return TRUE; } } } if (!seq) { return FALSE; } else { int index = seq[row_stride - 2]; int length = seq[row_stride - 1]; int j; if (compose_finish) *compose_finish = TRUE; if (output_chars) { *output_chars = g_new (gunichar, length + 1); for (j = 0; j < length; j++) (*output_chars)[j] = table->priv->data2[index + j]; (*output_chars)[length] = 0; } // g_debug ("U+%04X\n", value); return TRUE; } } else { 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 (compose_buffer + 1, table->data + seq_index[i], (seq_index[i + 1] - seq_index[i]) / row_stride, sizeof (guint16) * row_stride, compare_seq); if (seq) { if (i == n_compose - 1) break; else return TRUE; } } } if (!seq) { return FALSE; } else { if (compose_finish) *compose_finish = TRUE; if (output_chars) { *output_chars = g_new (gunichar, 2); (*output_chars)[0] = seq[row_stride - 1]; (*output_chars)[1] = 0; } // g_debug ("U+%04X\n", value); return TRUE; } } g_assert_not_reached (); } /* 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; CHECK_COMPOSE_BUFFER_LENGTH (n_compose); 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) { gint j = i % (n_compose - 1) + 1; gint k = (i+1) % (n_compose - 1) + 1; if (j >= IBUS_MAX_COMPOSE_LEN) { g_warning ("j >= IBUS_MAX_COMPOSE_LEN for " \ "combination_buffer_temp"); break; } if (k >= IBUS_MAX_COMPOSE_LEN) { g_warning ("k >= IBUS_MAX_COMPOSE_LEN for " \ "combination_buffer_temp"); break; } temp_swap = combination_buffer_temp[j]; combination_buffer_temp[j] = combination_buffer_temp[k]; combination_buffer_temp[k] = temp_swap; } else break; } return FALSE; } gboolean ibus_check_algorithmically (const guint16 *compose_buffer, gint n_compose, gunichar *output_char) { gint i; gunichar combination_buffer[IBUS_MAX_COMPOSE_LEN]; gchar *combination_utf8, *nfc; if (output_char) *output_char = 0; CHECK_COMPOSE_BUFFER_LENGTH (n_compose); 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 TRUE; if (i > 0 && i == n_compose - 1) { combination_buffer[0] = ibus_keyval_to_unicode (compose_buffer[i]); combination_buffer[n_compose] = 0; i--; while (i >= 0) { combination_buffer[i+1] = ibus_keysym_to_unicode (compose_buffer[i], TRUE); if (!combination_buffer[i+1]) { combination_buffer[i+1] = ibus_keyval_to_unicode (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)) { combination_utf8 = g_ucs4_to_utf8 (combination_buffer, -1, NULL, NULL, NULL); nfc = g_utf8_normalize (combination_utf8, -1, G_NORMALIZE_NFC); if (output_char) *output_char = g_utf8_get_char (nfc); 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; CHECK_COMPOSE_BUFFER_LENGTH (n_compose); /* 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; ibus_engine_simple_update_preedit_text (simple); 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 if (priv->tentative_emoji && *priv->tentative_emoji) { ibus_engine_simple_commit_str (simple, priv->tentative_emoji); priv->compose_buffer[0] = 0; ibus_engine_simple_update_preedit_text (simple); } else { priv->compose_buffer[0] = 0; if (n_compose > 1) { /* Invalid sequence */ // FIXME beep_window (event->window); ibus_engine_simple_update_preedit_text (simple); return TRUE; } ibus_engine_simple_update_preedit_text (simple); 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) { return TRUE; } else { return FALSE; } } return FALSE; } static gboolean is_hex_keyval (guint keyval) { gunichar ch = ibus_keyval_to_unicode (keyval); return g_unichar_isxdigit (ch); } static gboolean is_graph_keyval (guint keyval) { gunichar ch = ibus_keyval_to_unicode (keyval); return g_unichar_isgraph (ch); } static void ibus_engine_simple_update_lookup_and_aux_table (IBusEngineSimple *simple) { IBusEngineSimplePrivate *priv; guint index, candidates; gchar *aux_label = NULL; IBusText *text = NULL; g_return_if_fail (IBUS_IS_ENGINE_SIMPLE (simple)); priv = simple->priv; index = ibus_lookup_table_get_cursor_pos (priv->lookup_table) + 1; candidates = ibus_lookup_table_get_number_of_candidates(priv->lookup_table); aux_label = g_strdup_printf ("(%u / %u)", index, candidates); text = ibus_text_new_from_string (aux_label); g_free (aux_label); ibus_engine_update_auxiliary_text (IBUS_ENGINE (simple), text, priv->lookup_table_visible); ibus_engine_update_lookup_table (IBUS_ENGINE (simple), priv->lookup_table, priv->lookup_table_visible); } static gboolean ibus_engine_simple_if_in_range_of_lookup_table (IBusEngineSimple *simple, guint keyval) { IBusEngineSimplePrivate *priv; int index, candidates, cursor_pos, cursor_in_page, page_size; priv = simple->priv; if (priv->lookup_table == NULL || !priv->lookup_table_visible) return FALSE; if (keyval < IBUS_KEY_0 || keyval > IBUS_KEY_9) return FALSE; if (keyval == IBUS_KEY_0) keyval = IBUS_KEY_9 + 1; index = keyval - IBUS_KEY_1; candidates = ibus_lookup_table_get_number_of_candidates (priv->lookup_table); cursor_pos = ibus_lookup_table_get_cursor_pos (priv->lookup_table); cursor_in_page = ibus_lookup_table_get_cursor_in_page (priv->lookup_table); page_size = ibus_lookup_table_get_page_size (priv->lookup_table); if (index > ((candidates - (cursor_pos - cursor_in_page)) % page_size)) return FALSE; return TRUE; } static void ibus_engine_simple_set_number_on_lookup_table (IBusEngineSimple *simple, guint keyval, int n_compose) { IBusEngineSimplePrivate *priv; int index, cursor_pos, cursor_in_page, real_index; priv = simple->priv; if (keyval == IBUS_KEY_0) keyval = IBUS_KEY_9 + 1; index = keyval - IBUS_KEY_1; cursor_pos = ibus_lookup_table_get_cursor_pos (priv->lookup_table); cursor_in_page = ibus_lookup_table_get_cursor_in_page (priv->lookup_table); real_index = cursor_pos - cursor_in_page + index; ibus_lookup_table_set_cursor_pos (priv->lookup_table, real_index); check_emoji_table (simple, n_compose, real_index); priv->lookup_table_visible = FALSE; ibus_engine_simple_update_lookup_and_aux_table (simple); if (priv->tentative_emoji && *priv->tentative_emoji) { ibus_engine_simple_commit_str (simple, priv->tentative_emoji); priv->compose_buffer[0] = 0; } else { g_clear_pointer (&priv->tentative_emoji, g_free); priv->in_emoji_sequence = FALSE; priv->compose_buffer[0] = 0; } ibus_engine_simple_update_preedit_text (simple); } static gboolean ibus_engine_simple_check_all_compose_table (IBusEngineSimple *simple, gint n_compose) { IBusEngineSimplePrivate *priv = simple->priv; gboolean compose_finish; gunichar output_char; gunichar *output_chars = NULL; gchar *output_str = NULL; GError *error = NULL; GSList *list = global_tables; while (list) { if (check_table (simple, (IBusComposeTableEx *)list->data, n_compose, FALSE)) { return TRUE; } if (check_table (simple, (IBusComposeTableEx *)list->data, n_compose, TRUE)) { return TRUE; } list = list->next; } if (ibus_check_compact_table (&ibus_compose_table_compact, priv->compose_buffer, n_compose, &compose_finish, &output_chars)) { if (compose_finish) { ibus_engine_simple_commit_char (simple, *output_chars); g_free (output_chars); priv->compose_buffer[0] = 0; } ibus_engine_simple_update_preedit_text (simple); return TRUE; } if (ibus_check_compact_table (&ibus_compose_table_compact_32bit, priv->compose_buffer, n_compose, &compose_finish, &output_chars)) { if (compose_finish) { output_str = g_ucs4_to_utf8 (output_chars, -1, NULL, NULL, &error); if (output_str) { ibus_engine_simple_commit_str (simple, output_str); g_free (output_str); } else { g_warning ("Failed to output multiple characters: %s", error->message); g_error_free (error); } g_free (output_chars); priv->compose_buffer[0] = 0; } ibus_engine_simple_update_preedit_text (simple); return TRUE; } if (ibus_check_algorithmically (priv->compose_buffer, n_compose, &output_char)) { if (output_char) { ibus_engine_simple_commit_char (simple, output_char); priv->compose_buffer[0] = 0; } ibus_engine_simple_update_preedit_text (simple); return TRUE; } return FALSE; } 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 = FALSE; gboolean is_emoji_start = FALSE; gboolean is_hex_end; gboolean is_space; gboolean is_backspace; gboolean is_escape; guint hex_keyval; guint printable_keyval; gint i; while (n_compose <= COMPOSE_BUFFER_SIZE && priv->compose_buffer[n_compose] != 0) n_compose++; if (n_compose > COMPOSE_BUFFER_SIZE) { g_warning ("copmose table buffer is full."); n_compose = COMPOSE_BUFFER_SIZE; } 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); ibus_engine_simple_update_preedit_text (simple); } else if (n_compose == 0) { priv->modifiers_dropped = TRUE; } else { /* invalid hex sequence */ /* FIXME beep_window (event->window); */ priv->tentative_match = 0; g_clear_pointer (&priv->tentative_emoji, g_free); priv->in_hex_sequence = FALSE; priv->in_emoji_sequence = FALSE; priv->compose_buffer[0] = 0; ibus_engine_simple_update_preedit_text (simple); } return TRUE; } /* Handle Shift + Space */ else if (priv->in_emoji_sequence && (keyval == IBUS_KEY_Control_L || keyval == IBUS_KEY_Control_R)) { if (priv->tentative_emoji && *priv->tentative_emoji) { ibus_engine_simple_commit_str (simple, priv->tentative_emoji); priv->compose_buffer[0] = 0; ibus_engine_simple_update_preedit_text (simple); } else if (n_compose == 0) { priv->modifiers_dropped = TRUE; } else { /* invalid hex sequence */ /* FIXME beep_window (event->window); */ priv->tentative_match = 0; g_clear_pointer (&priv->tentative_emoji, g_free); priv->in_hex_sequence = FALSE; priv->in_emoji_sequence = FALSE; priv->compose_buffer[0] = 0; ibus_engine_simple_update_preedit_text (simple); } } else return FALSE; } /* Ignore modifier key presses */ for (i = 0; i < G_N_ELEMENTS (IBUS_COMPOSE_IGNORE_KEYLIST); i++) if (keyval == IBUS_COMPOSE_IGNORE_KEYLIST[i]) return FALSE; if ((priv->in_hex_sequence || priv->in_emoji_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) && priv->hex_mode_enabled; 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_space = (keyval == IBUS_KEY_space || keyval == IBUS_KEY_KP_Space); is_backspace = keyval == IBUS_KEY_BackSpace; is_escape = keyval == IBUS_KEY_Escape; hex_keyval = is_hex_keyval (keyval) ? keyval : 0; printable_keyval = is_graph_keyval (keyval) ? keyval : 0; /* gtkimcontextsimple causes a buffer overflow in priv->compose_buffer. * Add the check code here. */ if (n_compose > COMPOSE_BUFFER_SIZE && (priv->in_hex_sequence || priv->in_emoji_sequence)) { 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; g_clear_pointer (&priv->tentative_emoji, g_free); priv->in_hex_sequence = FALSE; priv->in_emoji_sequence = FALSE; priv->compose_buffer[0] = 0; } else if (is_escape) { ibus_engine_simple_reset (engine); if (priv->lookup_table != NULL && priv->lookup_table_visible) { priv->lookup_table_visible = FALSE; ibus_engine_simple_update_lookup_and_aux_table (simple); } 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 && !priv->in_emoji_sequence) || (n_compose == 0 && !priv->in_hex_sequence && !is_hex_start && !priv->in_emoji_sequence && !is_emoji_start) || (priv->in_hex_sequence && !hex_keyval && !is_hex_start && !is_hex_end && !is_escape && !is_backspace) || (priv->in_emoji_sequence && !printable_keyval && !is_emoji_start && !is_hex_end && !is_escape && !is_backspace)) { if (modifiers & (IBUS_MOD1_MASK | IBUS_CONTROL_MASK) || ((priv->in_hex_sequence || priv->in_emoji_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; } if (priv->in_emoji_sequence && have_hex_mods && is_backspace) { if (n_compose > 0) { n_compose--; priv->compose_buffer[n_compose] = 0; check_emoji_table (simple, n_compose, -1); ibus_engine_simple_update_lookup_and_aux_table (simple); } else { priv->in_emoji_sequence = FALSE; } ibus_engine_simple_update_preedit_text (simple); return TRUE; } if (!priv->in_hex_sequence && !priv->in_emoji_sequence && is_backspace) { if (n_compose > 0) { n_compose--; priv->compose_buffer[n_compose] = 0; priv->tentative_match = 0; ibus_engine_simple_check_all_compose_table (simple, n_compose); 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); ibus_engine_simple_update_preedit_text (simple); } 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; } } } if (priv->in_emoji_sequence && have_hex_mods && is_emoji_start) { if (priv->tentative_emoji && *priv->tentative_emoji) { ibus_engine_simple_commit_str (simple, priv->tentative_emoji); priv->compose_buffer[0] = 0; ibus_engine_simple_update_preedit_text (simple); } else { if (n_compose > 0) { g_clear_pointer (&priv->tentative_emoji, g_free); priv->in_emoji_sequence = FALSE; priv->compose_buffer[0] = 0; } } } /* Check for hex sequence start */ if (!priv->in_hex_sequence && !priv->in_emoji_sequence && have_hex_mods && is_hex_start) { priv->compose_buffer[0] = 0; priv->in_hex_sequence = TRUE; priv->in_emoji_sequence = FALSE; priv->modifiers_dropped = FALSE; priv->tentative_match = 0; g_clear_pointer (&priv->tentative_emoji, g_free); // g_debug ("Start HEX MODE"); ibus_engine_simple_update_preedit_text (simple); return TRUE; } else if (!priv->in_hex_sequence && !priv->in_emoji_sequence && have_hex_mods && is_emoji_start) { priv->compose_buffer[0] = 0; priv->in_hex_sequence = FALSE; priv->in_emoji_sequence = TRUE; priv->modifiers_dropped = FALSE; priv->tentative_match = 0; g_clear_pointer (&priv->tentative_emoji, g_free); // 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) { SET_COMPOSE_BUFFER_ELEMENT_NEXT (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 if (priv->in_emoji_sequence) { if (printable_keyval) { if (!ibus_engine_simple_if_in_range_of_lookup_table (simple, printable_keyval)) { /* digit keyval can be an index on the current lookup table * but it also can be a part of an emoji annotation. * E.g. "1" and "2" are indexes of emoji "1". * "100" is an annotation of the emoji "100". */ SET_COMPOSE_BUFFER_ELEMENT_NEXT (priv->compose_buffer, n_compose, printable_keyval); } } else if (is_space && (modifiers & IBUS_SHIFT_MASK)) { SET_COMPOSE_BUFFER_ELEMENT_NEXT (priv->compose_buffer, n_compose, IBUS_KEY_space); } else if (is_escape) { ibus_engine_simple_reset (engine); if (priv->lookup_table != NULL && priv->lookup_table_visible) { priv->lookup_table_visible = FALSE; ibus_engine_simple_update_lookup_and_aux_table (simple); } return TRUE; } } else { if (is_escape) { if (n_compose > 0) { ibus_engine_simple_reset (engine); return TRUE; } } SET_COMPOSE_BUFFER_ELEMENT_NEXT (priv->compose_buffer, n_compose, keyval); } SET_COMPOSE_BUFFER_ELEMENT_END (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; ibus_engine_simple_update_preedit_text (simple); } 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 if (priv->in_emoji_sequence) { if (have_hex_mods && n_compose > 0) { gboolean update_lookup_table = FALSE; if (priv->lookup_table_visible) { switch (keyval) { case IBUS_KEY_space: case IBUS_KEY_KP_Space: if ((modifiers & IBUS_SHIFT_MASK) == 0) { ibus_lookup_table_cursor_down (priv->lookup_table); update_lookup_table = TRUE; } break; case IBUS_KEY_Down: ibus_lookup_table_cursor_down (priv->lookup_table); update_lookup_table = TRUE; break; case IBUS_KEY_Up: ibus_lookup_table_cursor_up (priv->lookup_table); update_lookup_table = TRUE; break; case IBUS_KEY_Page_Down: ibus_lookup_table_page_down (priv->lookup_table); update_lookup_table = TRUE; break; case IBUS_KEY_Page_Up: ibus_lookup_table_page_up (priv->lookup_table); update_lookup_table = TRUE; break; default:; } } if (!update_lookup_table) { if (ibus_engine_simple_if_in_range_of_lookup_table (simple, keyval)) { ibus_engine_simple_set_number_on_lookup_table ( simple, keyval, n_compose); return TRUE; } else if (is_hex_end && !is_space) { if (priv->lookup_table) { int index = (int) ibus_lookup_table_get_cursor_pos ( priv->lookup_table); check_emoji_table (simple, n_compose, index); priv->lookup_table_visible = FALSE; update_lookup_table = TRUE; } } else if (check_emoji_table (simple, n_compose, -1)) { update_lookup_table = TRUE; } else { priv->lookup_table_visible = FALSE; update_lookup_table = TRUE; } } if (update_lookup_table) ibus_engine_simple_update_lookup_and_aux_table (simple); if (is_hex_end && !is_space) { if (priv->tentative_emoji && *priv->tentative_emoji) { ibus_engine_simple_commit_str (simple, priv->tentative_emoji); priv->compose_buffer[0] = 0; ibus_engine_simple_update_preedit_text (simple); } else { g_clear_pointer (&priv->tentative_emoji, g_free); priv->in_emoji_sequence = FALSE; priv->compose_buffer[0] = 0; } } ibus_engine_simple_update_preedit_text (simple); return TRUE; } } else { if (ibus_engine_simple_check_all_compose_table (simple, n_compose)) return TRUE; } /* The current compose_buffer doesn't match anything */ return no_sequence_matches (simple, n_compose, keyval, keycode, modifiers); } static void ibus_engine_simple_page_down (IBusEngine *engine) { IBusEngineSimple *simple = (IBusEngineSimple *)engine; IBusEngineSimplePrivate *priv = simple->priv; if (priv->lookup_table == NULL) return; ibus_lookup_table_page_down (priv->lookup_table); ibus_engine_simple_update_lookup_and_aux_table (simple); } static void ibus_engine_simple_page_up (IBusEngine *engine) { IBusEngineSimple *simple = (IBusEngineSimple *)engine; IBusEngineSimplePrivate *priv = simple->priv; if (priv->lookup_table == NULL) return; ibus_lookup_table_page_up (priv->lookup_table); ibus_engine_simple_update_lookup_and_aux_table (simple); } static void ibus_engine_simple_candidate_clicked (IBusEngine *engine, guint index, guint button, guint state) { IBusEngineSimple *simple = (IBusEngineSimple *)engine; IBusEngineSimplePrivate *priv = simple->priv; guint keyval; gint n_compose = 0; if (priv->lookup_table == NULL || !priv->lookup_table_visible) return; if (index == 9) keyval = IBUS_KEY_0; else keyval = IBUS_KEY_1 + index; while (priv->compose_buffer[n_compose] != 0) n_compose++; CHECK_COMPOSE_BUFFER_LENGTH (n_compose); ibus_engine_simple_set_number_on_lookup_table (simple, keyval, n_compose); } void ibus_engine_simple_add_table (IBusEngineSimple *simple, const guint16 *data, gint max_seq_len, gint n_seqs) { g_return_if_fail (IBUS_IS_ENGINE_SIMPLE (simple)); global_tables = ibus_compose_table_list_add_array (global_tables, data, max_seq_len, n_seqs); } gboolean ibus_engine_simple_add_table_by_locale (IBusEngineSimple *simple, const gchar *locale) { /* Now ibus_engine_simple_add_compose_file() always returns TRUE. */ gboolean retval = TRUE; gchar *path = NULL; const gchar *home; #if GLIB_CHECK_VERSION (2, 58, 0) const gchar * const *langs; const gchar * const *lang = NULL; #else const gchar *_locale; gchar **langs = NULL; gchar **lang = NULL; #endif gchar * const sys_langs[] = { "el_gr", "fi_fi", "pt_br", NULL }; gchar * const *sys_lang = NULL; if (locale == NULL) { path = g_build_filename (g_get_user_config_dir (), "ibus", "Compose", NULL); if (g_file_test (path, G_FILE_TEST_EXISTS)) { ibus_engine_simple_add_compose_file (simple, path); g_free (path); return retval; } g_free (path); path = NULL; path = g_build_filename (g_get_user_config_dir (), "gtk-3.0", "Compose", NULL); if (g_file_test (path, G_FILE_TEST_EXISTS)) { ibus_engine_simple_add_compose_file (simple, path); g_free (path); return retval; } g_free (path); path = NULL; home = g_get_home_dir (); if (home == NULL) return retval; path = g_build_filename (home, ".XCompose", NULL); if (g_file_test (path, G_FILE_TEST_EXISTS)) { ibus_engine_simple_add_compose_file (simple, path); g_free (path); return retval; } g_free (path); path = NULL; #if GLIB_CHECK_VERSION (2, 58, 0) langs = g_get_language_names_with_category ("LC_CTYPE"); #else _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); #endif for (lang = langs; *lang; lang++) { if (g_str_has_prefix (*lang, "en_US")) break; if (**lang == 'C') break; /* Other languages just include en_us compose table. */ for (sys_lang = sys_langs; *sys_lang; sys_lang++) { if (g_ascii_strncasecmp (*lang, *sys_lang, strlen (*sys_lang)) == 0) { path = g_build_filename (X11_DATADIR, *lang, "Compose", NULL); break; } } if (path == NULL) continue; if (g_file_test (path, G_FILE_TEST_EXISTS)) break; g_free (path); path = NULL; } #if !GLIB_CHECK_VERSION (2, 58, 0) g_strfreev (langs); #endif if (path != NULL) ibus_engine_simple_add_compose_file (simple, path); g_free (path); path = NULL; } 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 retval; ibus_engine_simple_add_compose_file (simple, path); } return retval; } gboolean ibus_engine_simple_add_compose_file (IBusEngineSimple *simple, const gchar *compose_file) { g_return_val_if_fail (IBUS_IS_ENGINE_SIMPLE (simple), TRUE); global_tables = ibus_compose_table_list_add_file (global_tables, compose_file); return TRUE; } ibus-1.5.22/src/ibusobservedpath.h0000644000000000000000000001216013623750431013747 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.22/src/ibusproperty.c0000644000000000000000000005470213623750431013150 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-2019 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) \ ((IBusPropertyPrivate *)ibus_property_get_instance_private (o)) /* 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_WITH_PRIVATE (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); 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.22/src/ibusconfigservice.c0000644000000000000000000003740513623750431014113 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.22/src/keyname-table.h0000644000000000000000000043502113623750431013121 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 /* * xgettext extracts strings in '#if 0' against intltool and I deleted * all the translatable strings here. * * 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) */ #endif ibus-1.5.22/src/ibusaccelgroup.c0000644000000000000000000004227513623750431013412 00000000000000/* GTK - The GIMP Toolkit * Copyright (C) 1998, 2001 Tim Janik * * This library is free software; you can redistribute it 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 "config.h" #include #include #include "ibusaccelgroup.h" #include "ibuskeys.h" #include "ibuskeysyms.h" /* for _gtk_get_primary_accel_mod() */ #define _IBUS_GET_PRIMARY_ACCEL_MOD IBUS_CONTROL_MASK /** * SECTION: ibusaccelgroup * @short_description: Groups of global keyboard accelerators for an * entire GtkWindow * @title: Accelerator Groups * @stability: Unstable * * Provides ibus_accelerator_parse() */ /** * ibus_accelerator_valid: * @keyval: a GDK keyval * @modifiers: modifier mask * * Determines whether a given keyval and modifier mask constitute * a valid keyboard accelerator. For example, the #IBUS_KEY_a keyval * plus #IBUS_CONTROL_MASK is valid - this is a “Ctrl+a” accelerator. * But, you can't, for instance, use the #IBUS_KEY_Control_L keyval * as an accelerator. * * Returns: %TRUE if the accelerator is valid */ gboolean ibus_accelerator_valid (guint keyval, IBusModifierType modifiers) { static const guint invalid_accelerator_vals[] = { IBUS_KEY_Shift_L, IBUS_KEY_Shift_R, IBUS_KEY_Shift_Lock, IBUS_KEY_Caps_Lock, IBUS_KEY_ISO_Lock, IBUS_KEY_Control_L, IBUS_KEY_Control_R, 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_ISO_Level3_Shift, IBUS_KEY_ISO_Next_Group, IBUS_KEY_ISO_Prev_Group, IBUS_KEY_ISO_First_Group, IBUS_KEY_ISO_Last_Group, IBUS_KEY_Mode_switch, IBUS_KEY_Num_Lock, IBUS_KEY_Multi_key, IBUS_KEY_Scroll_Lock, IBUS_KEY_Sys_Req, IBUS_KEY_Tab, IBUS_KEY_ISO_Left_Tab, IBUS_KEY_KP_Tab, IBUS_KEY_First_Virtual_Screen, IBUS_KEY_Prev_Virtual_Screen, IBUS_KEY_Next_Virtual_Screen, IBUS_KEY_Last_Virtual_Screen, IBUS_KEY_Terminate_Server, IBUS_KEY_AudibleBell_Enable, 0 }; static const guint invalid_unmodified_vals[] = { IBUS_KEY_Up, IBUS_KEY_Down, IBUS_KEY_Left, IBUS_KEY_Right, IBUS_KEY_KP_Up, IBUS_KEY_KP_Down, IBUS_KEY_KP_Left, IBUS_KEY_KP_Right, 0 }; const guint *ac_val; modifiers &= IBUS_MODIFIER_MASK; if (keyval <= 0xFF) return keyval >= 0x20; ac_val = invalid_accelerator_vals; while (*ac_val) { if (keyval == *ac_val++) return FALSE; } if (!modifiers) { ac_val = invalid_unmodified_vals; while (*ac_val) { if (keyval == *ac_val++) return FALSE; } } return TRUE; } static inline gboolean is_alt (const gchar *string) { return ((string[0] == '<') && (string[1] == 'a' || string[1] == 'A') && (string[2] == 'l' || string[2] == 'L') && (string[3] == 't' || string[3] == 'T') && (string[4] == '>')); } static inline gboolean is_ctl (const gchar *string) { return ((string[0] == '<') && (string[1] == 'c' || string[1] == 'C') && (string[2] == 't' || string[2] == 'T') && (string[3] == 'l' || string[3] == 'L') && (string[4] == '>')); } static inline gboolean is_modx (const gchar *string) { return ((string[0] == '<') && (string[1] == 'm' || string[1] == 'M') && (string[2] == 'o' || string[2] == 'O') && (string[3] == 'd' || string[3] == 'D') && (string[4] >= '1' && string[4] <= '5') && (string[5] == '>')); } static inline gboolean is_ctrl (const gchar *string) { return ((string[0] == '<') && (string[1] == 'c' || string[1] == 'C') && (string[2] == 't' || string[2] == 'T') && (string[3] == 'r' || string[3] == 'R') && (string[4] == 'l' || string[4] == 'L') && (string[5] == '>')); } static inline gboolean is_shft (const gchar *string) { return ((string[0] == '<') && (string[1] == 's' || string[1] == 'S') && (string[2] == 'h' || string[2] == 'H') && (string[3] == 'f' || string[3] == 'F') && (string[4] == 't' || string[4] == 'T') && (string[5] == '>')); } static inline gboolean is_shift (const gchar *string) { return ((string[0] == '<') && (string[1] == 's' || string[1] == 'S') && (string[2] == 'h' || string[2] == 'H') && (string[3] == 'i' || string[3] == 'I') && (string[4] == 'f' || string[4] == 'F') && (string[5] == 't' || string[5] == 'T') && (string[6] == '>')); } static inline gboolean is_control (const gchar *string) { return ((string[0] == '<') && (string[1] == 'c' || string[1] == 'C') && (string[2] == 'o' || string[2] == 'O') && (string[3] == 'n' || string[3] == 'N') && (string[4] == 't' || string[4] == 'T') && (string[5] == 'r' || string[5] == 'R') && (string[6] == 'o' || string[6] == 'O') && (string[7] == 'l' || string[7] == 'L') && (string[8] == '>')); } static inline gboolean is_release (const gchar *string) { return ((string[0] == '<') && (string[1] == 'r' || string[1] == 'R') && (string[2] == 'e' || string[2] == 'E') && (string[3] == 'l' || string[3] == 'L') && (string[4] == 'e' || string[4] == 'E') && (string[5] == 'a' || string[5] == 'A') && (string[6] == 's' || string[6] == 'S') && (string[7] == 'e' || string[7] == 'E') && (string[8] == '>')); } static inline gboolean is_meta (const gchar *string) { return ((string[0] == '<') && (string[1] == 'm' || string[1] == 'M') && (string[2] == 'e' || string[2] == 'E') && (string[3] == 't' || string[3] == 'T') && (string[4] == 'a' || string[4] == 'A') && (string[5] == '>')); } static inline gboolean is_super (const gchar *string) { return ((string[0] == '<') && (string[1] == 's' || string[1] == 'S') && (string[2] == 'u' || string[2] == 'U') && (string[3] == 'p' || string[3] == 'P') && (string[4] == 'e' || string[4] == 'E') && (string[5] == 'r' || string[5] == 'R') && (string[6] == '>')); } static inline gboolean is_hyper (const gchar *string) { return ((string[0] == '<') && (string[1] == 'h' || string[1] == 'H') && (string[2] == 'y' || string[2] == 'Y') && (string[3] == 'p' || string[3] == 'P') && (string[4] == 'e' || string[4] == 'E') && (string[5] == 'r' || string[5] == 'R') && (string[6] == '>')); } static inline gboolean is_primary (const gchar *string) { return ((string[0] == '<') && (string[1] == 'p' || string[1] == 'P') && (string[2] == 'r' || string[2] == 'R') && (string[3] == 'i' || string[3] == 'I') && (string[4] == 'm' || string[4] == 'M') && (string[5] == 'a' || string[5] == 'A') && (string[6] == 'r' || string[6] == 'R') && (string[7] == 'y' || string[7] == 'Y') && (string[8] == '>')); } static inline gboolean is_keycode (const gchar *string) { return (string[0] == '0' && string[1] == 'x' && g_ascii_isxdigit (string[2]) && g_ascii_isxdigit (string[3])); } /** * ibus_accelerator_parse: * @accelerator: string representing an accelerator * @accelerator_key: (out) (allow-none): return location for accelerator * keyval, or %NULL * @accelerator_mods: (out) (allow-none): return location for accelerator * modifier mask, %NULL * * Parses a string representing an accelerator. The format looks like * “a” or “F1” or “z” (the last one is * for key release). * * The parser is fairly liberal and allows lower or upper case, and also * abbreviations such as “” and “”. Key names are parsed using * gdk_keyval_from_name(). For character keys the name is not the symbol, * but the lowercase name, e.g. one would use “minus” instead of * “-”. * * If the parse fails, @accelerator_key and @accelerator_mods will * be set to 0 (zero). * * Since: 1.5.18 */ void ibus_accelerator_parse (const gchar *accelerator, guint *accelerator_key, IBusModifierType *accelerator_mods) { guint keyval; IBusModifierType mods; gint len; gboolean error; if (accelerator_key) *accelerator_key = 0; if (accelerator_mods) *accelerator_mods = 0; g_return_if_fail (accelerator != NULL); error = FALSE; keyval = 0; mods = 0; len = strlen (accelerator); while (len) { if (*accelerator == '<') { if (len >= 9 && is_release (accelerator)) { accelerator += 9; len -= 9; mods |= IBUS_RELEASE_MASK; } else if (len >= 9 && is_primary (accelerator)) { accelerator += 9; len -= 9; mods |= _IBUS_GET_PRIMARY_ACCEL_MOD; } else if (len >= 9 && is_control (accelerator)) { accelerator += 9; len -= 9; mods |= IBUS_CONTROL_MASK; } else if (len >= 7 && is_shift (accelerator)) { accelerator += 7; len -= 7; mods |= IBUS_SHIFT_MASK; } else if (len >= 6 && is_shft (accelerator)) { accelerator += 6; len -= 6; mods |= IBUS_SHIFT_MASK; } else if (len >= 6 && is_ctrl (accelerator)) { accelerator += 6; len -= 6; mods |= IBUS_CONTROL_MASK; } else if (len >= 6 && is_modx (accelerator)) { static const guint mod_vals[] = { IBUS_MOD1_MASK, IBUS_MOD2_MASK, IBUS_MOD3_MASK, IBUS_MOD4_MASK, IBUS_MOD5_MASK }; len -= 6; accelerator += 4; mods |= mod_vals[*accelerator - '1']; accelerator += 2; } else if (len >= 5 && is_ctl (accelerator)) { accelerator += 5; len -= 5; mods |= IBUS_CONTROL_MASK; } else if (len >= 5 && is_alt (accelerator)) { accelerator += 5; len -= 5; mods |= IBUS_MOD1_MASK; } else if (len >= 6 && is_meta (accelerator)) { accelerator += 6; len -= 6; mods |= IBUS_META_MASK; } else if (len >= 7 && is_hyper (accelerator)) { accelerator += 7; len -= 7; mods |= IBUS_HYPER_MASK; } else if (len >= 7 && is_super (accelerator)) { accelerator += 7; len -= 7; mods |= IBUS_SUPER_MASK; } else { gchar last_ch; last_ch = *accelerator; while (last_ch && last_ch != '>') { last_ch = *accelerator; accelerator += 1; len -= 1; } } } else { if (len >= 4 && is_keycode (accelerator)) { /* There was a keycode in the string, but * we cannot store it, so we have an error */ error = TRUE; goto out; } else { keyval = ibus_keyval_from_name (accelerator); if (keyval == IBUS_KEY_VoidSymbol) { error = TRUE; goto out; } } accelerator += len; len -= len; } } out: if (error) keyval = mods = 0; if (accelerator_key) *accelerator_key = ibus_keyval_to_lower (keyval); if (accelerator_mods) *accelerator_mods = mods; } /** * ibus_accelerator_name: * @accelerator_key: accelerator keyval * @accelerator_mods: accelerator modifier mask * * Converts an accelerator keyval and modifier mask into a string * parseable by gtk_accelerator_parse(). For example, if you pass in * #IBUS_KEY_q and #IBUS_CONTROL_MASK, this function returns “q”. * * If you need to display accelerators in the user interface, * see gtk_accelerator_get_label(). * * Returns: a newly-allocated accelerator name */ gchar* ibus_accelerator_name (guint accelerator_key, IBusModifierType accelerator_mods) { static const gchar text_release[] = ""; static const gchar text_primary[] = ""; static const gchar text_shift[] = ""; static const gchar text_control[] = ""; static const gchar text_mod1[] = ""; static const gchar text_mod2[] = ""; static const gchar text_mod3[] = ""; static const gchar text_mod4[] = ""; static const gchar text_mod5[] = ""; static const gchar text_meta[] = ""; static const gchar text_super[] = ""; static const gchar text_hyper[] = ""; IBusModifierType saved_mods; guint l; const gchar *keyval_name; gchar *accelerator; accelerator_mods &= IBUS_MODIFIER_MASK; keyval_name = ibus_keyval_name (ibus_keyval_to_lower (accelerator_key)); if (!keyval_name) keyval_name = ""; saved_mods = accelerator_mods; l = 0; if (accelerator_mods & IBUS_RELEASE_MASK) l += sizeof (text_release) - 1; if (accelerator_mods & _IBUS_GET_PRIMARY_ACCEL_MOD) { l += sizeof (text_primary) - 1; /* consume the default accel */ accelerator_mods &= ~_IBUS_GET_PRIMARY_ACCEL_MOD; } if (accelerator_mods & IBUS_SHIFT_MASK) l += sizeof (text_shift) - 1; if (accelerator_mods & IBUS_CONTROL_MASK) l += sizeof (text_control) - 1; if (accelerator_mods & IBUS_MOD1_MASK) l += sizeof (text_mod1) - 1; if (accelerator_mods & IBUS_MOD2_MASK) l += sizeof (text_mod2) - 1; if (accelerator_mods & IBUS_MOD3_MASK) l += sizeof (text_mod3) - 1; if (accelerator_mods & IBUS_MOD4_MASK) l += sizeof (text_mod4) - 1; if (accelerator_mods & IBUS_MOD5_MASK) l += sizeof (text_mod5) - 1; l += strlen (keyval_name); if (accelerator_mods & IBUS_META_MASK) l += sizeof (text_meta) - 1; if (accelerator_mods & IBUS_HYPER_MASK) l += sizeof (text_hyper) - 1; if (accelerator_mods & IBUS_SUPER_MASK) l += sizeof (text_super) - 1; accelerator = g_new (gchar, l + 1); accelerator_mods = saved_mods; l = 0; accelerator[l] = 0; if (accelerator_mods & IBUS_RELEASE_MASK) { strcpy (accelerator + l, text_release); l += sizeof (text_release) - 1; } if (accelerator_mods & _IBUS_GET_PRIMARY_ACCEL_MOD) { strcpy (accelerator + l, text_primary); l += sizeof (text_primary) - 1; /* consume the default accel */ accelerator_mods &= ~_IBUS_GET_PRIMARY_ACCEL_MOD; } if (accelerator_mods & IBUS_SHIFT_MASK) { strcpy (accelerator + l, text_shift); l += sizeof (text_shift) - 1; } if (accelerator_mods & IBUS_CONTROL_MASK) { strcpy (accelerator + l, text_control); l += sizeof (text_control) - 1; } if (accelerator_mods & IBUS_MOD1_MASK) { strcpy (accelerator + l, text_mod1); l += sizeof (text_mod1) - 1; } if (accelerator_mods & IBUS_MOD2_MASK) { strcpy (accelerator + l, text_mod2); l += sizeof (text_mod2) - 1; } if (accelerator_mods & IBUS_MOD3_MASK) { strcpy (accelerator + l, text_mod3); l += sizeof (text_mod3) - 1; } if (accelerator_mods & IBUS_MOD4_MASK) { strcpy (accelerator + l, text_mod4); l += sizeof (text_mod4) - 1; } if (accelerator_mods & IBUS_MOD5_MASK) { strcpy (accelerator + l, text_mod5); l += sizeof (text_mod5) - 1; } if (accelerator_mods & IBUS_META_MASK) { strcpy (accelerator + l, text_meta); l += sizeof (text_meta) - 1; } if (accelerator_mods & IBUS_HYPER_MASK) { strcpy (accelerator + l, text_hyper); l += sizeof (text_hyper) - 1; } if (accelerator_mods & IBUS_SUPER_MASK) { strcpy (accelerator + l, text_super); l += sizeof (text_super) - 1; } strcpy (accelerator + l, keyval_name); return accelerator; } ibus-1.5.22/src/ibuscomposetable.c0000644000000000000000000010446713623750431013745 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* ibus - The Input Bus * Copyright (C) 2013-2014 Peng Huang * Copyright (C) 2013-2019 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 "ibuscomposetable.h" #include "ibuserror.h" #include "ibusenginesimple.h" #include "ibuskeys.h" #include "ibuskeysyms.h" #include "ibustypes.h" #include "ibusenginesimpleprivate.h" #define IBUS_COMPOSE_TABLE_MAGIC "IBusComposeTable" #define IBUS_COMPOSE_TABLE_VERSION (3) typedef struct { gunichar *sequence; gunichar *values; gchar *comment; } IBusComposeData; static void ibus_compose_data_free (IBusComposeData *compose_data) { g_free (compose_data->sequence); g_free (compose_data->values); g_free (compose_data->comment); g_slice_free (IBusComposeData, compose_data); } static void ibus_compose_list_element_free (IBusComposeData *compose_data, gpointer data) { ibus_compose_data_free (compose_data); } static guint unichar_length (gunichar *uni_array) { guint i = 0; g_return_val_if_fail (uni_array, 0); while (uni_array[i]) ++i; return i; } static gboolean is_codepoint (const gchar *str) { int i; /* 'U' is not code point but 'U00C0' is code point */ if (str[0] == '\0' || str[0] != 'U' || str[1] == '\0') return FALSE; for (i = 1; str[i] != '\0'; i++) { if (!g_ascii_isxdigit (str[i])) return FALSE; } return TRUE; } static gboolean parse_compose_value (IBusComposeData *compose_data, const gchar *val, const gchar *line) { gchar *head, *end, *p; gchar *ustr = NULL; gunichar *uchars = NULL, *up; GError *error = NULL; int n_uchars = 0; if (!(head = strchr (val, '\"'))) { g_warning ("Need to double-quote the value: %s: %s", val, line); goto fail; } ++head; p = head; while ((*p != '\0') && (end = strchr (p, '\"'))) { if (*(end - 1) == '\\' && *(end - 2) == '\\') break; if (*(end - 1) != '\\') break; p = end + 1; } if (end == NULL || *p == '\0') { g_warning ("Need to double-quote the value: %s: %s", val, line); goto fail; } ustr = g_strndup (head, end - head); p = ustr + 1; /* The escaped octal */ if (*ustr == '\\' && *p >= '0' && *p <= '8') { compose_data->values = g_new (gunichar, 2); compose_data->values[0] = g_ascii_strtoll(p, NULL, 8); compose_data->values[1] = 0; } else { if (!(uchars = g_utf8_to_ucs4 (ustr, -1, NULL, NULL, &error))) { g_warning ("Invalid Unicode: %s: %s in %s:", error->message, ustr, line); g_error_free (error); goto fail; } else if (!uchars[0]) { g_warning ("Invalid Unicode: \"\" in %s:", line); goto fail; } for (up = uchars; *up; up++) { if (*up == '\\') { ++up; if (*up != '"' && *up != '\\') { g_warning ("Invalid backslash: %s: %s", val, line); goto fail; } } if (!compose_data->values) { compose_data->values = g_new (gunichar, 2); } else { compose_data->values = g_renew (gunichar, compose_data->values, n_uchars + 2); } compose_data->values[n_uchars++] = *up; } compose_data->values[n_uchars] = 0; } g_free (ustr); g_free (uchars); compose_data->comment = g_strdup (g_strstrip (end + 1)); return TRUE; fail: g_free (ustr); g_free (uchars); return FALSE; } static int parse_compose_sequence (IBusComposeData *compose_data, const gchar *seq, const gchar *line) { gchar **words = g_strsplit (seq, "<", -1); int i; int n = 0; if (g_strv_length (words) < 2) { g_warning ("key sequence format is ...: %s", line); goto fail; } for (i = 1; words[i] != NULL; i++) { gchar *start = words[i]; gchar *end = index (words[i], '>'); gchar *match; gunichar codepoint; if (words[i][0] == '\0') continue; if (start == NULL || end == NULL || end <= start) { g_warning ("key sequence format is ...: %s", line); goto fail; } match = g_strndup (start, end - start); if (compose_data->sequence == NULL) { compose_data->sequence = g_new (gunichar, 2); } else { compose_data->sequence = g_renew (gunichar, compose_data->sequence, n + 2); } if (is_codepoint (match)) { codepoint = (gunichar) g_ascii_strtoll (match + 1, NULL, 16); compose_data->sequence[n] = codepoint; } else { codepoint = (gunichar) ibus_keyval_from_name (match); compose_data->sequence[n] = codepoint; } if (codepoint == IBUS_KEY_VoidSymbol) g_warning ("Could not get code point of keysym %s", match); g_free (match); n++; } if (compose_data->sequence) compose_data->sequence[n] = 0; g_strfreev (words); if (0 == n || n >= IBUS_MAX_COMPOSE_LEN) { g_warning ("The max number of sequences is %d: %s", IBUS_MAX_COMPOSE_LEN, line); return -1; } return n; fail: g_strfreev (words); return -1; } static void parse_compose_line (GList **compose_list, const gchar *line, int *compose_len) { gchar **components = NULL; IBusComposeData *compose_data = NULL; int l; g_assert (compose_len); *compose_len = 0; 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); goto fail; } compose_data = g_slice_new0 (IBusComposeData); if ((l = parse_compose_sequence (compose_data, g_strstrip (components[0]), line)) < 1) { goto fail; } *compose_len = l; if (!parse_compose_value (compose_data, g_strstrip (components[1]), line)) goto fail; g_strfreev (components); *compose_list = g_list_append (*compose_list, compose_data); return; fail: g_strfreev (components); if (compose_data) ibus_compose_data_free (compose_data); } static GList * ibus_compose_list_parse_file (const gchar *compose_file, int *max_compose_len) { gchar *contents = NULL; gchar **lines = NULL; gsize length = 0; GError *error = NULL; GList *compose_list = NULL; int compose_len = 0; int i; g_assert (max_compose_len); if (!g_file_get_contents (compose_file, &contents, &length, &error)) { g_error ("%s", error->message); g_error_free (error); return NULL; } lines = g_strsplit (contents, "\n", -1); g_free (contents); for (i = 0; lines[i] != NULL; i++) { parse_compose_line (&compose_list, lines[i], &compose_len); if (*max_compose_len < compose_len) *max_compose_len = compose_len; } g_strfreev (lines); return compose_list; } static GList * ibus_compose_list_check_duplicated (GList *compose_list, int max_compose_len) { GList *list; static guint16 *keysyms; GList *removed_list = NULL; IBusComposeData *compose_data; gboolean is_32bit; keysyms = g_new (guint16, max_compose_len + 1); for (list = compose_list; list != NULL; list = list->next) { int i; int n_compose = 0; gboolean compose_finish; gunichar *output_chars = NULL; gunichar output_char = 0; guint n_outputs; compose_data = list->data; for (i = 0; i < max_compose_len + 1; i++) keysyms[i] = 0; for (i = 0; i < max_compose_len + 1; i++) { gunichar codepoint = compose_data->sequence[i]; keysyms[i] = (guint16) codepoint; if (codepoint == 0) break; n_compose++; } n_outputs = unichar_length (compose_data->values); is_32bit = (n_outputs > 1) ? TRUE : (compose_data->values[0] >= 0xFFFF) ? TRUE : FALSE; if (!is_32bit && ibus_check_compact_table (&ibus_compose_table_compact, keysyms, n_compose, &compose_finish, &output_chars) && compose_finish) { if (compose_data->values[0] == *output_chars) removed_list = g_list_append (removed_list, compose_data); g_free (output_chars); } else if (is_32bit && ibus_check_compact_table (&ibus_compose_table_compact_32bit, keysyms, n_compose, &compose_finish, &output_chars) && compose_finish) { if (n_outputs == unichar_length (output_chars)) { int j = 0; while (compose_data->values[j] && j < n_outputs) { if (compose_data->values[j] != output_chars[j]) break; ++j; } if (j == n_outputs) removed_list = g_list_append (removed_list, compose_data); } g_free (output_chars); } else if (ibus_check_algorithmically (keysyms, n_compose, &output_char)) { if (compose_data->values[0] == output_char) removed_list = g_list_append (removed_list, compose_data); } } for (list = removed_list; list != NULL; list = list->next) { compose_data = list->data; compose_list = g_list_remove (compose_list, compose_data); ibus_compose_data_free (compose_data); } g_list_free (removed_list); g_free (keysyms); return compose_list; } static gint ibus_compose_data_compare (gpointer a, gpointer b, gpointer data) { IBusComposeData *compose_data_a = a; IBusComposeData *compose_data_b = b; int max_compose_len = GPOINTER_TO_INT (data); int i; for (i = 0; i < max_compose_len; i++) { gunichar code_a = compose_data_a->sequence[i]; gunichar code_b = compose_data_b->sequence[i]; if (code_a != code_b) return code_a - code_b; } return 0; } static void ibus_compose_list_print (GList *compose_list, int max_compose_len, int n_index_stride) { GList *list; int i, j; IBusComposeData *compose_data; int total_size = 0; const gchar *keyval; for (list = compose_list; list != NULL; list = list->next) { compose_data = list->data; g_printf (" "); for (i = 0; i < max_compose_len; i++) { if (compose_data->sequence[i] == 0) { for (j = i; j < max_compose_len; j++) { if (i == max_compose_len -1) g_printf ("0,\n"); else g_printf ("0, "); } break; } keyval = ibus_keyval_name (compose_data->sequence[i]); if (i == max_compose_len -1) g_printf ("%s,\n", keyval ? keyval : "(null)"); else g_printf ("%s, ", keyval ? keyval : "(null)"); } g_printf (" "); for (i = 0; compose_data->values[i]; ++i) g_printf ("%#06X, ", compose_data->values[i]); g_printf (" /* %s */,\n", compose_data->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); } /* Implemented from g_str_hash() */ static guint32 ibus_compose_table_data_hash (gconstpointer v, int length) { const guint16 *p, *head; unsigned char c; guint32 h = 5381; for (p = v, head = v; (p - head) < length; p++) { c = 0x00ff & (*p >> 8); h = (h << 5) + h + c; c = 0x00ff & *p; h = (h << 5) + h + c; } return h; } static gchar * ibus_compose_hash_get_cache_path (guint32 hash) { gchar *basename = NULL; const gchar *cache_dir; gchar *dir = NULL; gchar *path = NULL; basename = g_strdup_printf ("%08x.cache", hash); if ((cache_dir = g_getenv ("IBUS_COMPOSE_CACHE_DIR"))) { dir = g_strdup (cache_dir); } else { dir = g_build_filename (g_get_user_cache_dir (), "ibus", "compose", NULL); } path = g_build_filename (dir, basename, NULL); if (g_mkdir_with_parents (dir, 0755) != 0) { g_warning ("Failed to mkdir %s", dir); g_free (path); path = NULL; } g_free (dir); g_free (basename); return path; } static GVariant * ibus_compose_table_serialize (IBusComposeTableEx *compose_table) { const gchar *header = IBUS_COMPOSE_TABLE_MAGIC; const guint16 version = IBUS_COMPOSE_TABLE_VERSION; guint16 max_seq_len; guint16 index_stride; guint16 n_seqs; guint16 n_seqs_32bit = 0; guint16 second_size = 0; GVariant *variant_data = NULL; GVariant *variant_data_32bit_first = NULL; GVariant *variant_data_32bit_second = NULL; GVariant *variant_table; g_return_val_if_fail (compose_table != NULL, NULL); max_seq_len = compose_table->max_seq_len; index_stride = max_seq_len + 2; n_seqs = compose_table->n_seqs; g_return_val_if_fail (max_seq_len, NULL); if (n_seqs) { g_return_val_if_fail (compose_table->data, NULL); variant_data = g_variant_new_fixed_array (G_VARIANT_TYPE_UINT16, compose_table->data, (gsize)index_stride * n_seqs, sizeof (guint16)); if (!variant_data) { g_warning ("Could not change compose data to GVariant."); return NULL; } } else { variant_data = g_variant_new_fixed_array ( G_VARIANT_TYPE_UINT16, NULL, 0, sizeof (guint16)); g_assert (variant_data); } if (compose_table->priv) { n_seqs_32bit = compose_table->priv->first_n_seqs; second_size = compose_table->priv->second_size; } if (!n_seqs && !n_seqs_32bit) { g_warning ("ComposeTable has not key sequences."); goto out_serialize; } else if (n_seqs_32bit && !second_size) { g_warning ("Compose key sequences are loaded but the values could " \ "not be loaded."); goto out_serialize; } else if (!n_seqs_32bit && second_size) { g_warning ("Compose values are loaded but the key sequences could " \ "not be loaded."); goto out_serialize; } else if (n_seqs_32bit && second_size) { if (!compose_table->priv->data_first) { g_warning ("data_first is NULL"); goto out_serialize; } if (!compose_table->priv->data_second) { g_warning ("data_second is NULL"); goto out_serialize; } variant_data_32bit_first = g_variant_new_fixed_array ( G_VARIANT_TYPE_UINT16, compose_table->priv->data_first, (gsize)index_stride * n_seqs_32bit, sizeof (guint16)); variant_data_32bit_second = g_variant_new_fixed_array ( G_VARIANT_TYPE_UINT32, compose_table->priv->data_second, compose_table->priv->second_size, sizeof (guint32)); if (!variant_data_32bit_first || !variant_data_32bit_second) { g_warning ("Could not change 32bit compose data to GVariant."); goto out_serialize; } } else { variant_data_32bit_first = g_variant_new_fixed_array ( G_VARIANT_TYPE_UINT16, NULL, 0, sizeof (guint16)); variant_data_32bit_second = g_variant_new_fixed_array ( G_VARIANT_TYPE_UINT32, NULL, 0, sizeof (guint32)); g_assert (variant_data_32bit_first && variant_data_32bit_second); } variant_table = g_variant_new ("(sqqqqqvvv)", header, version, max_seq_len, n_seqs, n_seqs_32bit, second_size, variant_data, variant_data_32bit_first, variant_data_32bit_second); return g_variant_ref_sink (variant_table); out_serialize: g_clear_pointer (&variant_data, g_variant_unref); g_clear_pointer (&variant_data_32bit_first, g_variant_unref); g_clear_pointer (&variant_data_32bit_second, g_variant_unref); return NULL; } static gint ibus_compose_table_find (gconstpointer data1, gconstpointer data2) { const IBusComposeTableEx *compose_table = (const IBusComposeTableEx *) data1; guint32 hash = (guint32) GPOINTER_TO_INT (data2); return compose_table->id != hash; } static IBusComposeTableEx * ibus_compose_table_deserialize (const gchar *contents, gsize length) { IBusComposeTableEx *retval = NULL; GVariantType *type; GVariant *variant_data = NULL; GVariant *variant_data_32bit_first = NULL; GVariant *variant_data_32bit_second = NULL; GVariant *variant_table = NULL; const gchar *header = NULL; guint16 version = 0; guint16 max_seq_len = 0; guint16 n_seqs = 0; guint16 n_seqs_32bit = 0; guint16 second_size = 0; guint16 index_stride; gconstpointer data = NULL; gconstpointer data_32bit_first = NULL; gconstpointer data_32bit_second = NULL; gsize data_length = 0; g_return_val_if_fail (contents != NULL, NULL); g_return_val_if_fail (length > 0, NULL); /* Check the cache version at first before load whole the file content. */ type = g_variant_type_new ("(sq)"); variant_table = g_variant_new_from_data (type, contents, length, FALSE, NULL, NULL); g_variant_type_free (type); if (!variant_table) { g_warning ("cache is broken."); goto out_load_cache; } g_variant_ref_sink (variant_table); g_variant_get (variant_table, "(&sq)", &header, &version); if (g_strcmp0 (header, IBUS_COMPOSE_TABLE_MAGIC) != 0) { g_warning ("cache is not IBusComposeTable."); goto out_load_cache; } if (version != IBUS_COMPOSE_TABLE_VERSION) { g_warning ("cache version is different: %u != %u", version, IBUS_COMPOSE_TABLE_VERSION); goto out_load_cache; } version = 0; header = NULL; g_variant_unref (variant_table); variant_table = NULL; type = g_variant_type_new ("(sqqqqqvvv)"); variant_table = g_variant_new_from_data (type, contents, length, FALSE, NULL, NULL); g_variant_type_free (type); if (!variant_table) { g_warning ("cache is broken."); goto out_load_cache; } g_variant_ref_sink (variant_table); g_variant_get (variant_table, "(&sqqqqqvvv)", NULL, NULL, &max_seq_len, &n_seqs, &n_seqs_32bit, &second_size, &variant_data, &variant_data_32bit_first, &variant_data_32bit_second); if (max_seq_len == 0 || (n_seqs == 0 && n_seqs_32bit == 0)) { g_warning ("cache size is not correct %d %d %d", max_seq_len, n_seqs, n_seqs_32bit); goto out_load_cache; } if (n_seqs && variant_data) { data = g_variant_get_fixed_array (variant_data, &data_length, sizeof (guint16)); } index_stride = max_seq_len + 2; if (data_length != (gsize)index_stride * n_seqs) { g_warning ("cache size is not correct %d %d %lu", max_seq_len, n_seqs, data_length); goto out_load_cache; } retval = g_new0 (IBusComposeTableEx, 1); if (data_length) { retval->data = g_new (guint16, data_length); memcpy (retval->data, data, data_length * sizeof (guint16)); } retval->max_seq_len = max_seq_len; retval->n_seqs = n_seqs; if (n_seqs_32bit && !second_size) { g_warning ("32bit key sequences are loaded but the values " \ "could not be loaded."); goto out_load_cache; } if (!n_seqs_32bit && second_size) { g_warning ("32bit key sequences could not loaded but the values " \ "are loaded."); goto out_load_cache; } data_length = 0; if (n_seqs_32bit && variant_data_32bit_first) { data_32bit_first = g_variant_get_fixed_array (variant_data_32bit_first, &data_length, sizeof (guint16)); if (data_length != (gsize) index_stride * n_seqs_32bit) { g_warning ("32bit cache size is not correct %d %d %lu", max_seq_len, n_seqs_32bit, data_length); goto out_load_cache; } } if (!data && !data_32bit_first) { g_warning ("cache data is null."); goto out_load_cache; } if (data_length) { retval->priv = g_new0 (IBusComposeTablePrivate, 1); retval->priv->data_first = g_new (guint16, data_length); memcpy (retval->priv->data_first, data_32bit_first, data_length * sizeof (guint16)); retval->priv->first_n_seqs = n_seqs_32bit; } data_length = 0; if (second_size && variant_data_32bit_second) { data_32bit_second = g_variant_get_fixed_array ( variant_data_32bit_second, &data_length, sizeof (guint32)); if (data_length != (gsize) second_size) { g_warning ("32bit cache size is not correct %d %d", max_seq_len, second_size); goto out_load_cache; } } if (data_length) { retval->priv->data_second = g_new (guint32, data_length); memcpy (retval->priv->data_second, data_32bit_second, data_length * sizeof (guint32)); retval->priv->second_size = second_size; } out_load_cache: g_clear_pointer (&variant_data, g_variant_unref); g_clear_pointer (&variant_data_32bit_first, g_variant_unref); g_clear_pointer (&variant_data_32bit_second, g_variant_unref); g_clear_pointer (&variant_table, g_variant_unref); return retval; } IBusComposeTableEx * ibus_compose_table_load_cache (const gchar *compose_file) { IBusComposeTableEx *retval = NULL; guint32 hash; gchar *path = NULL; gchar *contents = NULL; GStatBuf original_buf; GStatBuf cache_buf; gsize length = 0; GError *error = NULL; do { hash = g_str_hash (compose_file); if ((path = ibus_compose_hash_get_cache_path (hash)) == NULL) return NULL; if (!g_file_test (path, G_FILE_TEST_EXISTS)) break; if (g_stat (compose_file, &original_buf)) break; if (g_stat (path, &cache_buf)) break; if (original_buf.st_mtime > cache_buf.st_mtime) break; if (!g_file_get_contents (path, &contents, &length, &error)) { g_warning ("Failed to get cache content %s: %s", path, error->message); g_error_free (error); break; } retval = ibus_compose_table_deserialize (contents, length); if (retval == NULL) g_warning ("Failed to load the cache file: %s", path); else retval->id = hash; } while (0); g_free (contents); g_free (path); return retval; } void ibus_compose_table_save_cache (IBusComposeTableEx *compose_table) { gchar *path = NULL; GVariant *variant_table = NULL; const gchar *contents = NULL; GError *error = NULL; gsize length = 0; if ((path = ibus_compose_hash_get_cache_path (compose_table->id)) == NULL) return; variant_table = ibus_compose_table_serialize (compose_table); if (variant_table == NULL) { g_warning ("Failed to serialize compose table %s", path); goto out_save_cache; } contents = g_variant_get_data (variant_table); length = g_variant_get_size (variant_table); if (!g_file_set_contents (path, contents, length, &error)) { g_warning ("Failed to save compose table %s: %s", path, error->message); g_error_free (error); goto out_save_cache; } out_save_cache: g_variant_unref (variant_table); g_free (path); } static IBusComposeTableEx * ibus_compose_table_new_with_list (GList *compose_list, int max_compose_len, int n_index_stride, guint32 hash) { gsize s_size_total, s_size_16bit, v_size_32bit, v_index_32bit; guint n = 0, m = 0; int i, j; guint16 *ibus_compose_seqs = NULL; guint16 *ibus_compose_seqs_32bit_first = NULL; guint32 *ibus_compose_seqs_32bit_second = NULL; GList *list; IBusComposeData *compose_data = NULL; IBusComposeTableEx *retval = NULL; g_return_val_if_fail (compose_list != NULL, NULL); s_size_total = g_list_length (compose_list); s_size_16bit = s_size_total; v_size_32bit = 0; for (list = compose_list; list != NULL; list = list->next) { compose_data = list->data; if (unichar_length (compose_data->values) > 1 || compose_data->values[0] >= 0xFFFF) { --s_size_16bit; v_size_32bit += unichar_length (compose_data->values); } } if (s_size_16bit) ibus_compose_seqs = g_new (guint16, s_size_16bit * n_index_stride); if (s_size_total > s_size_16bit) { ibus_compose_seqs_32bit_first = g_new (guint16, (s_size_total - s_size_16bit) * n_index_stride); ibus_compose_seqs_32bit_second = g_new (guint32, v_size_32bit); } v_index_32bit = 0; for (list = compose_list; list != NULL; list = list->next) { gboolean is_32bit = FALSE; compose_data = list->data; is_32bit = unichar_length (compose_data->values) > 1 ? TRUE : compose_data->values[0] >= 0xFFFF ? TRUE : FALSE; for (i = 0; i < max_compose_len; i++) { if (compose_data->sequence[i] == 0) { for (j = i; j < max_compose_len; j++) { if (is_32bit) ibus_compose_seqs_32bit_first[m++] = 0; else ibus_compose_seqs[n++] = 0; } break; } if (is_32bit) { ibus_compose_seqs_32bit_first[m++] = (guint16) compose_data->sequence[i]; } else { ibus_compose_seqs[n++] = (guint16) compose_data->sequence[i]; } } if (is_32bit) { for (j = 0; compose_data->values[j]; j++) { ibus_compose_seqs_32bit_second[v_index_32bit + j] = compose_data->values[j]; } ibus_compose_seqs_32bit_first[m++] = j; ibus_compose_seqs_32bit_first[m++] = v_index_32bit; v_index_32bit += j; } else { ibus_compose_seqs[n++] = (guint16) compose_data->values[0]; ibus_compose_seqs[n++] = 0; } } retval = g_new0 (IBusComposeTableEx, 1); retval->data = ibus_compose_seqs; retval->max_seq_len = max_compose_len; retval->n_seqs = s_size_16bit; retval->id = hash; if (s_size_total > s_size_16bit) { retval->priv = g_new0 (IBusComposeTablePrivate, 1); retval->priv->data_first = ibus_compose_seqs_32bit_first; retval->priv->data_second = ibus_compose_seqs_32bit_second; retval->priv->first_n_seqs = s_size_total - s_size_16bit; retval->priv->second_size = v_size_32bit; } return retval; } IBusComposeTableEx * ibus_compose_table_new_with_file (const gchar *compose_file) { GList *compose_list = NULL; IBusComposeTableEx *compose_table; int max_compose_len = 0; int n_index_stride = 0; g_assert (compose_file != NULL); compose_list = ibus_compose_list_parse_file (compose_file, &max_compose_len); if (compose_list == NULL) return NULL; n_index_stride = max_compose_len + 2; compose_list = ibus_compose_list_check_duplicated (compose_list, max_compose_len); compose_list = g_list_sort_with_data ( compose_list, (GCompareDataFunc) ibus_compose_data_compare, GINT_TO_POINTER (max_compose_len)); if (compose_list == NULL) { g_warning ("compose file %s does not include any keys besides keys " "in en-us compose file", compose_file); return NULL; } if (g_getenv ("IBUS_COMPOSE_TABLE_PRINT") != NULL) ibus_compose_list_print (compose_list, max_compose_len, n_index_stride); compose_table = ibus_compose_table_new_with_list ( compose_list, max_compose_len, n_index_stride, g_str_hash (compose_file)); g_list_free_full (compose_list, (GDestroyNotify) ibus_compose_list_element_free); return compose_table; } /* 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 */ GSList * ibus_compose_table_list_add_array (GSList *compose_tables, const guint16 *data, gint max_seq_len, gint n_seqs) { guint32 hash; IBusComposeTableEx *compose_table; int n_index_stride = max_seq_len + 2; int length = n_index_stride * n_seqs; int i; guint16 *ibus_compose_seqs = NULL; g_assert (length >= 0); g_return_val_if_fail (data != NULL, compose_tables); g_return_val_if_fail (max_seq_len <= IBUS_MAX_COMPOSE_LEN, compose_tables); hash = ibus_compose_table_data_hash (data, length); if (g_slist_find_custom (compose_tables, GINT_TO_POINTER (hash), ibus_compose_table_find) != NULL) { return compose_tables; } ibus_compose_seqs = g_new0 (guint16, length); for (i = 0; i < length; i++) ibus_compose_seqs[i] = data[i]; compose_table = g_new0 (IBusComposeTableEx, 1); compose_table->data = ibus_compose_seqs; compose_table->max_seq_len = max_seq_len; compose_table->n_seqs = n_seqs; compose_table->id = hash; return g_slist_prepend (compose_tables, compose_table); } GSList * ibus_compose_table_list_add_file (GSList *compose_tables, const gchar *compose_file) { guint32 hash; IBusComposeTableEx *compose_table; g_return_val_if_fail (compose_file != NULL, compose_tables); hash = g_str_hash (compose_file); if (g_slist_find_custom (compose_tables, GINT_TO_POINTER (hash), ibus_compose_table_find) != NULL) { return compose_tables; } compose_table = ibus_compose_table_load_cache (compose_file); if (compose_table != NULL) return g_slist_prepend (compose_tables, compose_table); if ((compose_table = ibus_compose_table_new_with_file (compose_file)) == NULL) { return compose_tables; } ibus_compose_table_save_cache (compose_table); return g_slist_prepend (compose_tables, compose_table); } ibus-1.5.22/src/ibusinternal.h0000644000000000000000000000356013623750431013101 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.22/src/ibusemoji.h0000644000000000000000000001556513623750431012400 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2017-2019 Takao Fujiwara * Copyright (C) 2017-2019 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_EMOJI_H_ #define __IBUS_EMOJI_H_ /** * SECTION: ibusemoji * @short_description: emoji utility. * @stability: Unstable * * miscellaneous emoji APIs. */ #include "ibusserializable.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_EMOJI_DATA (ibus_emoji_data_get_type ()) #define IBUS_EMOJI_DATA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ IBUS_TYPE_EMOJI_DATA, IBusEmojiData)) #define IBUS_EMOJI_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \ IBUS_TYPE_EMOJI_DATA, IBusEmojiDataClass)) #define IBUS_IS_EMOJI_DATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ IBUS_TYPE_EMOJI_DATA)) G_BEGIN_DECLS typedef struct _IBusEmojiData IBusEmojiData; typedef struct _IBusEmojiDataPrivate IBusEmojiDataPrivate; typedef struct _IBusEmojiDataClass IBusEmojiDataClass; /** * IBusEmojiData: * * Emoji data likes emoji unicode, annotations, description, category. * You can get extended values with g_object_get_properties. */ struct _IBusEmojiData { IBusSerializable parent; /* instance members */ /*< public >*/ /*< private >*/ IBusEmojiDataPrivate *priv; }; struct _IBusEmojiDataClass { IBusSerializableClass parent; /* class members */ }; GType ibus_emoji_data_get_type (void); /** * ibus_emoji_data_new: * @first_property_name: Name of the first property. * @...: the NULL-terminated arguments of the properties and values. * * Creates a new #IBusEmojiData. * emoji property is required. e.g. * ibus_emoji_data_new ("emoji", "😁", NULL) * * Returns: A newly allocated #IBusEmojiData. */ IBusEmojiData * ibus_emoji_data_new (const gchar *first_property_name, ...); /** * ibus_emoji_data_get_emoji: * @emoji : An #IBusEmojiData * * Gets the emoji character in #IBusEmojiData. It should not be freed. * * Returns: emoji property in #IBusEmojiData */ const gchar * ibus_emoji_data_get_emoji (IBusEmojiData *emoji); /** * ibus_emoji_data_get_annotations: * @emoji : An #IBusEmojiData * * Gets the annotation list in #IBusEmojiData. It should not be freed. * * Returns: (transfer none) (element-type utf8): * annotation list property in #IBusEmojiData */ GSList * ibus_emoji_data_get_annotations (IBusEmojiData *emoji); /** * ibus_emoji_data_set_annotations: * @emoji : An #IBusEmojiData * @annotations: (transfer full) (element-type utf8): List of emoji annotations * * Sets the annotation list in #IBusEmojiData. */ void ibus_emoji_data_set_annotations (IBusEmojiData *emoji, GSList *annotations); /** * ibus_emoji_data_get_description: * @emoji : An #IBusEmojiData * * Gets the emoji description in #IBusEmojiData. It should not be freed. * * Returns: description property in #IBusEmojiData */ const gchar * ibus_emoji_data_get_description (IBusEmojiData *emoji); /** * ibus_emoji_data_set_description: * @emoji : An #IBusEmojiData * @description: An emoji description * * Sets the description in #IBusEmojiData. */ void ibus_emoji_data_set_description (IBusEmojiData *emoji, const gchar *description); /** * ibus_emoji_data_get_category: * @emoji : An #IBusEmojiData * * Gets the emoji category in #IBusEmojiData. It should not be freed. * * Returns: category property in #IBusEmojiData */ const gchar * ibus_emoji_data_get_category (IBusEmojiData *emoji); /** * ibus_emoji_dict_save: * @path: A path of the saved dictionary file. * @dict: (element-type utf8 gpointer) (transfer none): An Emoji dictionary * * Saves the Emoji dictionary to the cache file. * Recommend to use ibus_emoji_data_save() instead becase GSList in * GHashTable does not work with Gir and Vala. * Calls ibus_emoji_data_save() internally. The format of the hash table * changed and now is { emoji character, #IBusEmojiData object }. */ void ibus_emoji_dict_save (const gchar *path, GHashTable *dict); /** * ibus_emoji_dict_load: * @path: A path of the saved dictionary file. * * Returns: (element-type utf8 gpointer) (transfer none): An Emoji dictionary * file loaded from the saved cache file. * * A hash table of { emoji character, #IBusEmojiData object } is loaded * from the saved cache file. * Recommend to use ibus_emoji_data_load() instead becase GSList in * GHashTable does not work with Gir and Vala. * Calls ibus_emoji_data_load() internally. */ GHashTable * ibus_emoji_dict_load (const gchar *path); /** * ibus_emoji_dict_lookup: * @dict: (element-type utf8 IBusEmojiData) (transfer full): An Emoji dictionary * @emoji: an emoji character * * Returns: (transfer none): An #IBusEmojiData of @emoji. * This API was prepared for the old dict foramat with Gir and Vala * but no longer needed. * Use ibus_emoji_data_load() instead. */ IBusEmojiData * ibus_emoji_dict_lookup (GHashTable *dict, const gchar *emoji); /** * ibus_emoji_data_save: * @path: A path of the saved emoji data. * @list: (element-type IBusEmojiData) (transfer none): A list of emoji data. * * Save the list of #IBusEmojiData to the cache file. */ void ibus_emoji_data_save (const gchar *path, GSList *list); /** * ibus_emoji_data_load: * @path: A path of the saved dictionary file. * * Returns: (element-type IBusEmojiData) (transfer full): * An #IBusEmojiData list loaded from the saved cache file. */ GSList * ibus_emoji_data_load (const gchar *path); G_END_DECLS #endif ibus-1.5.22/src/ibusenginedesc.h0000644000000000000000000002575513623750431013403 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) 2011-2018 Takao Fujiwara * Copyright (C) 2008-2018 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. * If layout is "default", the engine inherits the current layout and * does not change the layout. The layouts "default" and "" are same. * E.g. If you switch JP XKB engine and an input method engine (IME), * the IME inherits the JP layout. * * 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) * If layout is "default", the engine inherits the current layout and * does not change the layout. The layouts "default" and "" are same. * E.g. If you switch JP XKB engine and an input method engine (IME), * the IME inherits the JP layout. * * 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.22/src/Makefile.am0000644000000000000000000003056713623750431012274 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2015-2019 Takao Fujiwara # Copyright (c) 2007-2017 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 = noinst_PROGRAMS = # 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)\" \ -DX11_DATA_PREFIX=\"$(X11_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 = \ ibusaccelgroup.c \ ibusattribute.c \ ibusattrlist.c \ ibusbus.c \ ibuscomponent.c \ ibusconfig.c \ ibusconfigservice.c \ ibusemoji.c \ ibusengine.c \ ibusenginedesc.c \ ibusenginesimple.c \ ibuserror.c \ ibusfactory.c \ ibushotkey.c \ ibusinputcontext.c \ ibuskeymap.c \ ibuskeynames.c \ ibuskeyuni.c \ ibuslookuptable.c \ ibusobject.c \ ibusobservedpath.c \ ibuspanelservice.c \ ibusproperty.c \ ibusproplist.c \ ibusproxy.c \ ibusregistry.c \ ibusserializable.c \ ibusservice.c \ ibusshare.c \ ibustext.c \ ibusunicode.c \ ibusutil.c \ ibusxevent.c \ ibusxml.c \ $(NULL) libibus_1_0_la_SOURCES = \ ibuscomposetable.c \ ibusenumtypes.c \ ibusmarshalers.c \ $(ibus_sources) \ $(NULL) ibus_marshalers_sources = \ ibusmarshalers.c \ ibusmarshalers.h \ $(NULL) ibus_enumtypes_sources = \ ibusenumtypes.c \ ibusenumtypes.h \ $(NULL) ibus_headers = \ ibus.h \ ibusaccelgroup.h \ ibusattribute.h \ ibusattrlist.h \ ibusbus.h \ ibuscomponent.h \ ibusconfig.h \ ibusconfigservice.h \ ibusdebug.h \ ibusemoji.h \ ibusengine.h \ ibusenginedesc.h \ ibusenginesimple.h \ ibuserror.h \ ibusfactory.h \ ibushotkey.h \ ibusinputcontext.h \ ibuskeymap.h \ ibuskeys.h \ ibuskeysyms-compat.h \ ibuskeysyms.h \ ibuslookuptable.h \ ibusobject.h \ ibusobservedpath.h \ ibuspanelservice.h \ ibusproperty.h \ ibusproplist.h \ ibusproxy.h \ ibusregistry.h \ ibusserializable.h \ ibusservice.h \ ibusshare.h \ ibustext.h \ ibustypes.h \ ibusunicode.h \ ibusutil.h \ ibusxevent.h \ ibusxml.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 = \ gtkimcontextsimpleseqs.h \ ibuscomposetable.h \ ibusemojigen.h \ ibusenginesimpleprivate.h \ ibusinternal.h \ ibusunicodegen.h \ keyname-table.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 $@ if ENABLE_EMOJI_DICT AM_CPPFLAGS += -DENABLE_EMOJI_DICT dictdir = $(pkgdatadir)/dicts dict_DATA = dicts/emoji-en.dict LANG_FILES = $(basename $(notdir $(wildcard $(EMOJI_ANNOTATION_DIR)/*.xml))) noinst_PROGRAMS += emoji-parser dicts/emoji-en.dict: emoji-parser $(AM_V_at)if test x"$(LANG_FILES)" = x ; then \ echo "WARNING: Not found $(EMOJI_ANNOTATION_DIR)/en.xml" 1>&2; \ fi; \ for f in $(LANG_FILES) ; do \ if test -f dicts/emoji-$$f.dict; then \ echo "Already exists dicts/emoji-$$f.dict"; \ continue; \ fi; \ if test -f \ "$(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$$f.xml" ; then \ xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$$f.xml"; \ plus_comment="derived"; \ fi; \ if test x"$$f" = xen ; then \ $(builddir)/emoji-parser \ --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ --xml $(EMOJI_ANNOTATION_DIR)/$$f.xml \ $$xml_derived_option \ --xml-ascii $(top_srcdir)/data/annotations/en_ascii.xml \ --out-category ibusemojigen.h \ --out $@; \ else \ $(builddir)/emoji-parser \ --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ --xml $(EMOJI_ANNOTATION_DIR)/$$f.xml \ $$xml_derived_option \ --out dicts/emoji-$$f.dict; \ fi; \ echo "Generated $$plus_comment dicts/emoji-$$f.dict"; \ done ibusemojigen.h: dicts/emoji-en.dict $(NULL) install-data-hook: $(dict_DATA) @$(NORMAL_INSTALL) $(AM_V_at)list='$(wildcard dicts/*.dict)'; \ test -n "$(dictdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dictdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dictdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | \ while read files; do \ if [ x$(AM_DEFAULT_VERBOSITY) = x1 ] ; then \ echo "$(INSTALL_DATA) $$files '$(DESTDIR)$(dictdir)'"; \ else \ echo "Installing $$files"; \ fi; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dictdir)" || exit $$?; \ done dict__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ cd "$$dir" && rm -f $$files; }; \ } # for make dist uninstall-hook: @$(NORMAL_UNINSTALL) $(AM_V_at)list='$(wildcard dicts/*.dict)'; \ test -n "$(dictdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(dictdir)'; $(dict__uninstall_files_from_dir) emoji_parser_SOURCES = \ emoji-parser.c \ $(NULL) emoji_parser_CFLAGS = \ $(GLIB2_CFLAGS) \ $(GOBJECT2_CFLAGS) \ $(NULL) emoji_parser_LDADD = \ $(libibus) \ $(GLIB2_LIBS) \ $(GOBJECT2_LIBS) \ $(NULL) clean-local: -rm -rf dicts $(NULL) endif if ENABLE_UNICODE_DICT unicodedir = $(pkgdatadir)/dicts unicode_DATA = dicts/unicode-names.dict dicts/unicode-blocks.dict noinst_PROGRAMS += unicode-parser dicts/unicode-names.dict: unicode-parser $(AM_V_at)input_file="$(UCD_DIR)/NamesList.txt"; \ if test ! -f "$$input_file" ; then \ echo "WARNING: Not found $$input_file" 1>&2; \ else \ $(builddir)/unicode-parser \ --input-names-list $$input_file \ --output-names-list $@; \ echo "Generated $@"; \ fi; dicts/unicode-blocks.dict: unicode-parser $(AM_V_at)input_file="$(UCD_DIR)/Blocks.txt"; \ if test ! -f "$$input_file" ; then \ echo "WARNING: Not found $$input_file" 1>&2; \ else \ $(builddir)/unicode-parser \ --input-blocks $$input_file \ --output-blocks-trans ibusunicodegen.h \ --output-blocks $@; \ echo "Generated $@"; \ fi; ibusunicodegen.h: dicts/unicode-blocks.dict $(NULL) unicode_parser_SOURCES = \ unicode-parser.c \ $(NULL) unicode_parser_CFLAGS = \ $(GLIB2_CFLAGS) \ $(NULL) unicode_parser_LDADD = \ $(GLIB2_LIBS) \ $(libibus) \ $(NULL) clean-local: -rm -rf dicts $(NULL) endif EXTRA_DIST = \ emoji-parser.c \ ibusversion.h.in \ ibusmarshalers.list \ ibusenumtypes.h.template \ ibusenumtypes.c.template \ unicode-parser.c \ $(NULL) CLEANFILES += \ $(BUILT_SOURCES) \ stamp-ibusmarshalers.h \ stamp-ibusenumtypes.h \ $(NULL) DISTCLEANFILES = \ ibusemojigen.h \ ibusunicodegen.h \ ibusversion.h \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.22/src/ibuspanelservice.c0000644000000000000000000020143213623750431013736 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 * Copyright (C) 2017-2018 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 "ibusshare.h" #include "ibuspanelservice.h" #include "ibusmarshalers.h" #include "ibusinternal.h" #define IBUS_PANEL_SERVICE_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), IBUS_TYPE_PANEL_SERVICE, \ IBusPanelServicePrivate)) enum { UPDATE_PREEDIT_TEXT, UPDATE_AUXILIARY_TEXT, UPDATE_LOOKUP_TABLE, FOCUS_IN, FOCUS_OUT, REGISTER_PROPERTIES, UPDATE_PROPERTY, SET_CURSOR_LOCATION, SET_CURSOR_LOCATION_RELATIVE, 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, PANEL_EXTENSION_RECEIVED, PROCESS_KEY_EVENT, COMMIT_TEXT_RECEIVED, CANDIDATE_CLICKED_LOOKUP_TABLE, 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_set_cursor_location_relative (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); static void ibus_panel_service_panel_extension_received (IBusPanelService *panel, IBusExtensionEvent *event); 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->set_cursor_location_relative = ibus_panel_service_set_cursor_location_relative; 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->panel_extension_received = ibus_panel_service_panel_extension_received; 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::set-cursor-location-relative: * @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-relative. * Implement the member function set_cursor_location_relative() in * extended class to receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[SET_CURSOR_LOCATION_RELATIVE] = g_signal_new (I_("set-cursor-location-relative"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, set_cursor_location_relative), 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); /** * IBusPanelService::panel-extension-received: * @panel: An #IBusPanelService * @data: A #GVariant * * Emitted when the client application get the ::panel-extension-received. * Implement the member function * IBusPanelServiceClass::panel_extension_received in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[PANEL_EXTENSION_RECEIVED] = g_signal_new (I_("panel-extension-received"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, panel_extension_received), NULL, NULL, _ibus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_EXTENSION_EVENT); /** * IBusPanelService::process-key-event: * @panel: An #IBusPanelService * @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 IBusPanelServiceClass::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. * */ panel_signals[PROCESS_KEY_EVENT] = g_signal_new (I_("process-key-event"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, process_key_event), g_signal_accumulator_true_handled, NULL, _ibus_marshal_BOOLEAN__UINT_UINT_UINT, G_TYPE_BOOLEAN, 3, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT); /** * IBusPanelService::commit-text-received: * @panel: An #IBusPanelService * @text: A #IBusText * * Emitted when the client application get the ::commit-text-received. * Implement the member function * IBusPanelServiceClass::commit_text_received in extended class to * receive this signal. * * Argument @user_data is ignored in this function. * */ panel_signals[COMMIT_TEXT_RECEIVED] = g_signal_new (I_("commit-text-received"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, commit_text_received), NULL, NULL, _ibus_marshal_VOID__OBJECT, G_TYPE_NONE, 1, IBUS_TYPE_TEXT); panel_signals[CANDIDATE_CLICKED_LOOKUP_TABLE] = g_signal_new (I_("candidate-clicked-lookup-table"), G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (IBusPanelServiceClass, candidate_clicked_lookup_table), NULL, NULL, _ibus_marshal_VOID__UINT_UINT_UINT, G_TYPE_NONE, 3, G_TYPE_UINT, 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 gboolean ibus_panel_service_service_authorized_method (IBusService *service, GDBusConnection *connection) { if (ibus_service_get_connection (service) == connection) return TRUE; return FALSE; } 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 (!ibus_panel_service_service_authorized_method (service, connection)) 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, "SetCursorLocationRelative") == 0) { gint x, y, w, h; g_variant_get (parameters, "(iiii)", &x, &y, &w, &h); g_signal_emit (panel, panel_signals[SET_CURSOR_LOCATION_RELATIVE], 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; } if (g_strcmp0 (method_name, "PanelExtensionReceived") == 0) { GVariant *arg0 = NULL; IBusExtensionEvent *event = NULL; g_variant_get (parameters, "(v)", &arg0); if (arg0) { event = IBUS_EXTENSION_EVENT (ibus_serializable_deserialize (arg0)); g_variant_unref (arg0); } if (!event) { g_dbus_method_invocation_return_error ( invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "PanelExtensionReceived method gives NULL"); return; } g_signal_emit (panel, panel_signals[PANEL_EXTENSION_RECEIVED], 0, event); _g_object_unref_if_floating (event); g_dbus_method_invocation_return_value (invocation, NULL); 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 (panel, panel_signals[PROCESS_KEY_EVENT], 0, keyval, keycode, state, &retval); g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", retval)); return; } if (g_strcmp0 (method_name, "CommitTextReceived") == 0) { GVariant *arg0 = NULL; IBusText *text = NULL; g_variant_get (parameters, "(v)", &arg0); if (arg0) { text = (IBusText *) ibus_serializable_deserialize (arg0); g_variant_unref (arg0); } if (!text) { g_dbus_method_invocation_return_error ( invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "CommitTextReceived method gives NULL"); return; } g_signal_emit (panel, panel_signals[COMMIT_TEXT_RECEIVED], 0, text); _g_object_unref_if_floating (text); return; } if (g_strcmp0 (method_name, "CandidateClickedLookupTable") == 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_LOOKUP_TABLE], 0, index, button, state); 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_set_cursor_location_relative (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); } static void ibus_panel_service_panel_extension_received (IBusPanelService *panel, IBusExtensionEvent *event) { 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); } void ibus_panel_service_commit_text (IBusPanelService *panel, IBusText *text) { GVariant *variant; g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); g_return_if_fail (IBUS_IS_TEXT (text)); variant = ibus_serializable_serialize ((IBusSerializable *)text); ibus_service_emit_signal ((IBusService *) panel, NULL, IBUS_INTERFACE_PANEL, "CommitText", g_variant_new ("(v)", variant), NULL); if (g_object_is_floating (text)) { g_object_unref (text); } } void ibus_panel_service_panel_extension (IBusPanelService *panel, IBusExtensionEvent *event) { GVariant *variant; g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); g_return_if_fail (IBUS_IS_EXTENSION_EVENT (event)); variant = ibus_serializable_serialize ((IBusSerializable *)event); ibus_service_emit_signal ((IBusService *) panel, NULL, IBUS_INTERFACE_PANEL, "PanelExtension", g_variant_new ("(v)", variant), NULL); if (g_object_is_floating (event)) { g_object_unref (event); } } void ibus_panel_service_panel_extension_register_keys (IBusPanelService *panel, const gchar *first_property_name, ...) { GVariantBuilder builder; GVariantBuilder child; const gchar *name; va_list var_args; IBusProcessKeyEventData *keys; g_return_if_fail (first_property_name); g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); name = first_property_name; va_start (var_args, first_property_name); do { keys = va_arg (var_args, IBusProcessKeyEventData *); if (keys == NULL) { va_end (var_args); g_warning ("Failed to va_arg for IBusProcessKeyEventData"); return; } g_variant_builder_init (&child, G_VARIANT_TYPE ("av")); for (; keys; keys++) { if (keys->keyval == 0 && keys->keycode == 0 && keys->state == 0) break; g_variant_builder_add (&child, "v", g_variant_new ("(iii)", keys->keyval, keys->keycode, keys->state)); } g_variant_builder_add (&builder, "{sv}", g_strdup (name), g_variant_builder_end (&child)); } while ((name = va_arg (var_args, const gchar *))); va_end (var_args); ibus_service_emit_signal ((IBusService *) panel, NULL, IBUS_INTERFACE_PANEL, "PanelExtensionRegisterKeys", g_variant_new ("(v)", g_variant_builder_end (&builder)), NULL); } void ibus_panel_service_update_preedit_text_received (IBusPanelService *panel, IBusText *text, guint cursor_pos, gboolean visible) { GVariant *variant; g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); g_return_if_fail (IBUS_IS_TEXT (text)); variant = ibus_serializable_serialize ((IBusSerializable *)text); g_return_if_fail (variant); ibus_service_emit_signal ((IBusService *) panel, NULL, IBUS_INTERFACE_PANEL, "UpdatePreeditTextReceived", g_variant_new ("(vub)", variant, cursor_pos, visible), NULL); if (g_object_is_floating (text)) { g_object_unref (text); } } void ibus_panel_service_update_auxiliary_text_received (IBusPanelService *panel, IBusText *text, gboolean visible) { GVariant *variant; g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); g_return_if_fail (IBUS_IS_TEXT (text)); variant = ibus_serializable_serialize ((IBusSerializable *)text); g_return_if_fail (variant); ibus_service_emit_signal ((IBusService *) panel, NULL, IBUS_INTERFACE_PANEL, "UpdateAuxiliaryTextReceived", g_variant_new ("(vb)", variant, visible), NULL); if (g_object_is_floating (text)) { g_object_unref (text); } } void ibus_panel_service_update_lookup_table_received (IBusPanelService *panel, IBusLookupTable *table, gboolean visible) { GVariant *variant; g_return_if_fail (IBUS_IS_PANEL_SERVICE (panel)); g_return_if_fail (IBUS_IS_LOOKUP_TABLE (table)); variant = ibus_serializable_serialize ((IBusSerializable *)table); g_return_if_fail (variant); ibus_service_emit_signal ((IBusService *) panel, NULL, IBUS_INTERFACE_PANEL, "UpdateLookupTableReceived", g_variant_new ("(vb)", variant, visible), NULL); if (g_object_is_floating (table)) { g_object_unref (table); } } #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.22/src/ibusemoji.c0000644000000000000000000004621013623750431012362 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2017-2019 Takao Fujiwara * Copyright (C) 2017-2019 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 "ibusemoji.h" #include "ibusinternal.h" #define IBUS_EMOJI_DATA_MAGIC "IBusEmojiData" #define IBUS_EMOJI_DATA_VERSION (5) enum { PROP_0 = 0, PROP_EMOJI, PROP_ANNOTATIONS, PROP_DESCRIPTION, PROP_CATEGORY, }; struct _IBusEmojiDataPrivate { gchar *emoji; GSList *annotations; gchar *description; gchar *category; }; #define IBUS_EMOJI_DATA_GET_PRIVATE(o) \ ((IBusEmojiDataPrivate *)ibus_emoji_data_get_instance_private (o)) /* functions prototype */ static void ibus_emoji_data_set_property (IBusEmojiData *emoji, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_emoji_data_get_property (IBusEmojiData *emoji, guint prop_id, GValue *value, GParamSpec *pspec); static void ibus_emoji_data_destroy (IBusEmojiData *emoji); static gboolean ibus_emoji_data_serialize (IBusEmojiData *emoji, GVariantBuilder *builder); static gint ibus_emoji_data_deserialize (IBusEmojiData *emoji, GVariant *variant); static gboolean ibus_emoji_data_copy (IBusEmojiData *emoji, const IBusEmojiData *src); G_DEFINE_TYPE_WITH_PRIVATE (IBusEmojiData, ibus_emoji_data, IBUS_TYPE_SERIALIZABLE) static void ibus_emoji_data_class_init (IBusEmojiDataClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); object_class->destroy = (IBusObjectDestroyFunc) ibus_emoji_data_destroy; gobject_class->set_property = (GObjectSetPropertyFunc) ibus_emoji_data_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_emoji_data_get_property; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_emoji_data_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_emoji_data_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_emoji_data_copy; /* install properties */ /** * IBusEmojiData:emoji: * * The emoji character */ g_object_class_install_property (gobject_class, PROP_EMOJI, g_param_spec_string ("emoji", "emoji character", "The emoji character UTF-8", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusEmojiData:annotations: (transfer container) (element-type utf8): * * The emoji annotations */ g_object_class_install_property (gobject_class, PROP_ANNOTATIONS, g_param_spec_pointer ("annotations", "emoji annotations", "The emoji annotation list", G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); /** * IBusEmojiData:description: * * The emoji description */ g_object_class_install_property (gobject_class, PROP_DESCRIPTION, g_param_spec_string ("description", "emoji description", "The emoji description", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); /** * IBusEmojiData:category: * * The emoji category */ g_object_class_install_property (gobject_class, PROP_CATEGORY, g_param_spec_string ("category", "emoji category", "The emoji category", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); } static void ibus_emoji_data_init (IBusEmojiData *emoji) { emoji->priv = IBUS_EMOJI_DATA_GET_PRIVATE (emoji); } static void free_dict_words (gpointer list) { g_slist_free_full (list, g_free); } static void ibus_emoji_data_destroy (IBusEmojiData *emoji) { g_clear_pointer (&emoji->priv->emoji, g_free); g_clear_pointer (&emoji->priv->annotations, free_dict_words); g_clear_pointer (&emoji->priv->description, g_free); g_clear_pointer (&emoji->priv->category, g_free); IBUS_OBJECT_CLASS (ibus_emoji_data_parent_class)-> destroy (IBUS_OBJECT (emoji)); } static void ibus_emoji_data_set_property (IBusEmojiData *emoji, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_EMOJI: g_assert (emoji->priv->emoji == NULL); emoji->priv->emoji = g_value_dup_string (value); break; case PROP_ANNOTATIONS: if (emoji->priv->annotations) g_slist_free_full (emoji->priv->annotations, g_free); emoji->priv->annotations = g_slist_copy_deep (g_value_get_pointer (value), (GCopyFunc) g_strdup, NULL); break; case PROP_DESCRIPTION: g_free (emoji->priv->description); emoji->priv->description = g_value_dup_string (value); break; case PROP_CATEGORY: g_assert (emoji->priv->category == NULL); emoji->priv->category = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (emoji, prop_id, pspec); } } static void ibus_emoji_data_get_property (IBusEmojiData *emoji, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_EMOJI: g_value_set_string (value, ibus_emoji_data_get_emoji (emoji)); break; case PROP_ANNOTATIONS: g_value_set_pointer ( value, g_slist_copy_deep (ibus_emoji_data_get_annotations (emoji), (GCopyFunc) g_strdup, NULL)); break; case PROP_DESCRIPTION: g_value_set_string (value, ibus_emoji_data_get_description (emoji)); break; case PROP_CATEGORY: g_value_set_string (value, ibus_emoji_data_get_category (emoji)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (emoji, prop_id, pspec); } } static gboolean ibus_emoji_data_serialize (IBusEmojiData *emoji, GVariantBuilder *builder) { GSList *l; gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_emoji_data_parent_class)-> serialize ((IBusSerializable *)emoji, builder); g_return_val_if_fail (retval, FALSE); #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 (emoji->priv->emoji)); g_variant_builder_add (builder, "u", g_slist_length (emoji->priv->annotations)); for (l = emoji->priv->annotations; l != NULL; l = l->next) { g_variant_builder_add (builder, "s", NOTNULL (l->data)); } g_variant_builder_add (builder, "s", NOTNULL (emoji->priv->description)); g_variant_builder_add (builder, "s", NOTNULL (emoji->priv->category)); #undef NOTNULL return TRUE; } static gint ibus_emoji_data_deserialize (IBusEmojiData *emoji, GVariant *variant) { guint length, i; GSList *annotations = NULL; gint retval = IBUS_SERIALIZABLE_CLASS (ibus_emoji_data_parent_class)-> deserialize ((IBusSerializable *)emoji, 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++, &emoji->priv->emoji); g_variant_get_child (variant, retval++, "u", &length); for (i = 0; i < length; i++) { gchar *s = NULL; g_variant_get_child (variant, retval++, "s", &s); annotations = g_slist_append (annotations, s); } emoji->priv->annotations = annotations; ibus_g_variant_get_child_string (variant, retval++, &emoji->priv->description); ibus_g_variant_get_child_string (variant, retval++, &emoji->priv->category); return retval; } static gboolean ibus_emoji_data_copy (IBusEmojiData *dest, const IBusEmojiData *src) { gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_emoji_data_parent_class)-> copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); dest->priv->emoji = g_strdup (src->priv->emoji); dest->priv->annotations = g_slist_copy_deep (src->priv->annotations, (GCopyFunc) g_strdup, NULL); dest->priv->description = g_strdup (src->priv->description); dest->priv->category = g_strdup (src->priv->category); return TRUE; } IBusEmojiData * ibus_emoji_data_new (const gchar *first_property_name, ...) { va_list var_args; IBusEmojiData *emoji; g_assert (first_property_name != NULL); va_start (var_args, first_property_name); emoji = (IBusEmojiData *) g_object_new_valist (IBUS_TYPE_EMOJI_DATA, first_property_name, var_args); va_end (var_args); /* emoji is required. Other properties are set in class_init by default. */ g_assert (emoji->priv->emoji != NULL); g_assert (emoji->priv->description != NULL); g_assert (emoji->priv->category != NULL); return emoji; } const gchar * ibus_emoji_data_get_emoji (IBusEmojiData *emoji) { g_return_val_if_fail (IBUS_IS_EMOJI_DATA (emoji), NULL); return emoji->priv->emoji; } GSList * ibus_emoji_data_get_annotations (IBusEmojiData *emoji) { g_return_val_if_fail (IBUS_IS_EMOJI_DATA (emoji), NULL); return emoji->priv->annotations; } void ibus_emoji_data_set_annotations (IBusEmojiData *emoji, GSList *annotations) { g_return_if_fail (IBUS_IS_EMOJI_DATA (emoji)); if (emoji->priv->annotations) g_slist_free_full (emoji->priv->annotations, g_free); emoji->priv->annotations = annotations; } const gchar * ibus_emoji_data_get_description (IBusEmojiData *emoji) { g_return_val_if_fail (IBUS_IS_EMOJI_DATA (emoji), NULL); return emoji->priv->description; } void ibus_emoji_data_set_description (IBusEmojiData *emoji, const gchar *description) { g_return_if_fail (IBUS_IS_EMOJI_DATA (emoji)); g_free (emoji->priv->description); emoji->priv->description = g_strdup (description); } const gchar * ibus_emoji_data_get_category (IBusEmojiData *emoji) { g_return_val_if_fail (IBUS_IS_EMOJI_DATA (emoji), NULL); return emoji->priv->category; } static void variant_foreach_add_emoji (IBusEmojiData *emoji, GVariantBuilder *builder) { g_variant_builder_add ( builder, "v", ibus_serializable_serialize (IBUS_SERIALIZABLE (emoji))); } static GVariant * ibus_emoji_data_list_serialize (GSList *list) { GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); g_slist_foreach (list, (GFunc) variant_foreach_add_emoji, &builder); return g_variant_builder_end (&builder); } static GSList * ibus_emoji_data_list_deserialize (GVariant *variant) { GSList *list = NULL; GVariantIter iter; GVariant *emoji_variant = NULL; g_variant_iter_init (&iter, variant); while (g_variant_iter_loop (&iter, "v", &emoji_variant)) { IBusEmojiData *data = IBUS_EMOJI_DATA (ibus_serializable_deserialize (emoji_variant)); list = g_slist_append (list, data); g_clear_pointer (&emoji_variant, g_variant_unref); } return list; } void ibus_emoji_dict_save (const gchar *path, GHashTable *dict) { GList *values, *v; GSList *list_for_save = NULL; g_return_if_fail (path != NULL); g_return_if_fail (dict != NULL); values = g_hash_table_get_values (dict); for (v = values; v; v = v->next) { IBusEmojiData *data = v->data; if (!IBUS_IS_EMOJI_DATA (data)) { g_warning ("Your dict format of { annotation char, emoji GSList " "} is no longer supported.\n" "{ emoji char, IBusEmojiData GSList } is expected."); return; } list_for_save = g_slist_append (list_for_save, data); } ibus_emoji_data_save (path, list_for_save); } GHashTable * ibus_emoji_dict_load (const gchar *path) { GSList *list = ibus_emoji_data_load (path); GSList *l; GHashTable *dict = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); for (l = list; l; l = l->next) { IBusEmojiData *data = l->data; if (!IBUS_IS_EMOJI_DATA (data)) { g_warning ("Your dict format is no longer supported.\n" "Need to create the dictionaries again."); return NULL; } g_hash_table_insert (dict, g_strdup (ibus_emoji_data_get_emoji (data)), g_object_ref_sink (data)); } g_slist_free (list); return dict; } IBusEmojiData * ibus_emoji_dict_lookup (GHashTable *dict, const gchar *emoji) { return (IBusEmojiData *) g_hash_table_lookup (dict, emoji); } void ibus_emoji_data_save (const gchar *path, GSList *list) { GVariant *variant; const gchar *header = IBUS_EMOJI_DATA_MAGIC; const guint16 version = IBUS_EMOJI_DATA_VERSION; const gchar *contents; gsize length; gchar *dir; GStatBuf buf = { 0, }; GError *error = NULL; g_return_if_fail (path != NULL); g_return_if_fail (list != NULL); if (list->data == NULL) { g_warning ("Failed to save IBus emoji data: Need a list data."); return; } variant = g_variant_new ("(sqv)", header, version, ibus_emoji_data_list_serialize (list)); contents = g_variant_get_data (variant); length = g_variant_get_size (variant); dir = g_path_get_dirname (path); if (g_strcmp0 (dir, ".") != 0 && g_stat (dir, &buf) != 0) { g_mkdir_with_parents (dir, 0777); } g_free (dir); if (!g_file_set_contents (path, contents, length, &error)) { g_warning ("Failed to save emoji dict %s: %s", path, error->message); g_error_free (error); } g_variant_unref (variant); } GSList * ibus_emoji_data_load (const gchar *path) { gchar *contents = NULL; gsize length = 0; GError *error = NULL; GVariant *variant_table = NULL; GVariant *variant = NULL; const gchar *header = NULL; guint16 version = 0; GSList *retval = NULL; if (!g_file_test (path, G_FILE_TEST_EXISTS)) { g_warning ("Emoji dict does not exist: %s", path); goto out_load_cache; } if (!g_file_get_contents (path, &contents, &length, &error)) { g_warning ("Failed to get dict content %s: %s", path, error->message); g_error_free (error); goto out_load_cache; } variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sq)"), contents, length, FALSE, NULL, NULL); if (variant_table == NULL) { g_warning ("cache table is broken."); goto out_load_cache; } g_variant_get (variant_table, "(&sq)", &header, &version); if (g_strcmp0 (header, IBUS_EMOJI_DATA_MAGIC) != 0) { g_warning ("cache is not IBusEmojiData."); goto out_load_cache; } if (version > IBUS_EMOJI_DATA_VERSION) { g_warning ("cache version is different: %u != %u", version, IBUS_EMOJI_DATA_VERSION); goto out_load_cache; } version = 0; header = NULL; g_variant_unref (variant_table); variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sqv)"), contents, length, FALSE, NULL, NULL); if (variant_table == NULL) { g_warning ("cache table is broken."); goto out_load_cache; } g_variant_get (variant_table, "(&sqv)", NULL, NULL, &variant); if (variant == NULL) { g_warning ("cache dict is broken."); goto out_load_cache; } retval = ibus_emoji_data_list_deserialize (variant); out_load_cache: if (variant) g_variant_unref (variant); if (variant_table) g_variant_unref (variant_table); g_free (contents); return retval; } ibus-1.5.22/src/ibusobservedpath.c0000644000000000000000000002112013623750431013736 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input IBus * Copyright (C) 2008-2015 Peng Huang * Copyright (C) 2008-2019 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) \ ((IBusObservedPathPrivate *)ibus_observed_path_get_instance_private (o)) // 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); 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) { gchar *real_path = NULL; struct stat buf; g_assert (IBUS_IS_OBSERVED_PATH (path)); if (path->path[0] == '~') { const gchar *homedir = g_get_home_dir (); real_path = g_build_filename (homedir, path->path + 2, NULL); } else { real_path = g_strdup (path->path); } if (g_stat (real_path, &buf) != 0) { buf.st_mtime = 0; } g_free (real_path); 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 ("Invalid path \"%s\"", node->text); return FALSE; } 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.22/src/Makefile.in0000644000000000000000000020027613623751264012306 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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) 2015-2019 Takao Fujiwara # Copyright (c) 2007-2017 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_1) $(am__EXEEXT_2) @HAVE_INTROSPECTION_TRUE@am__append_1 = IBus-1.0.gir @HAVE_INTROSPECTION_TRUE@am__append_2 = $(dist_gir_DATA) $(typelibs_DATA) @ENABLE_EMOJI_DICT_TRUE@am__append_3 = -DENABLE_EMOJI_DICT @ENABLE_EMOJI_DICT_TRUE@am__append_4 = emoji-parser @ENABLE_UNICODE_DICT_TRUE@am__append_5 = unicode-parser subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 = @ENABLE_EMOJI_DICT_TRUE@am__EXEEXT_1 = emoji-parser$(EXEEXT) @ENABLE_UNICODE_DICT_TRUE@am__EXEEXT_2 = unicode-parser$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) 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)$(dictdir)" \ "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibsdir)" \ "$(DESTDIR)$(unicodedir)" "$(DESTDIR)$(ibusincludedir)" LTLIBRARIES = $(lib_LTLIBRARIES) am__DEPENDENCIES_1 = libibus_1_0_la_DEPENDENCIES = $(am__DEPENDENCIES_1) am__objects_1 = am__objects_2 = ibusaccelgroup.lo ibusattribute.lo ibusattrlist.lo \ ibusbus.lo ibuscomponent.lo ibusconfig.lo ibusconfigservice.lo \ ibusemoji.lo ibusengine.lo ibusenginedesc.lo \ ibusenginesimple.lo ibuserror.lo ibusfactory.lo ibushotkey.lo \ ibusinputcontext.lo ibuskeymap.lo ibuskeynames.lo \ ibuskeyuni.lo ibuslookuptable.lo ibusobject.lo \ ibusobservedpath.lo ibuspanelservice.lo ibusproperty.lo \ ibusproplist.lo ibusproxy.lo ibusregistry.lo \ ibusserializable.lo ibusservice.lo ibusshare.lo ibustext.lo \ ibusunicode.lo ibusutil.lo ibusxevent.lo ibusxml.lo \ $(am__objects_1) am_libibus_1_0_la_OBJECTS = ibuscomposetable.lo ibusenumtypes.lo \ ibusmarshalers.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__emoji_parser_SOURCES_DIST = emoji-parser.c @ENABLE_EMOJI_DICT_TRUE@am_emoji_parser_OBJECTS = \ @ENABLE_EMOJI_DICT_TRUE@ emoji_parser-emoji-parser.$(OBJEXT) \ @ENABLE_EMOJI_DICT_TRUE@ $(am__objects_1) emoji_parser_OBJECTS = $(am_emoji_parser_OBJECTS) @ENABLE_EMOJI_DICT_TRUE@emoji_parser_DEPENDENCIES = $(libibus) \ @ENABLE_EMOJI_DICT_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_EMOJI_DICT_TRUE@ $(am__DEPENDENCIES_1) \ @ENABLE_EMOJI_DICT_TRUE@ $(am__DEPENDENCIES_1) emoji_parser_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(emoji_parser_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am__unicode_parser_SOURCES_DIST = unicode-parser.c @ENABLE_UNICODE_DICT_TRUE@am_unicode_parser_OBJECTS = unicode_parser-unicode-parser.$(OBJEXT) \ @ENABLE_UNICODE_DICT_TRUE@ $(am__objects_1) unicode_parser_OBJECTS = $(am_unicode_parser_OBJECTS) @ENABLE_UNICODE_DICT_TRUE@unicode_parser_DEPENDENCIES = \ @ENABLE_UNICODE_DICT_TRUE@ $(am__DEPENDENCIES_1) $(libibus) \ @ENABLE_UNICODE_DICT_TRUE@ $(am__DEPENDENCIES_1) unicode_parser_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ $(unicode_parser_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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/emoji_parser-emoji-parser.Po \ ./$(DEPDIR)/ibusaccelgroup.Plo ./$(DEPDIR)/ibusattribute.Plo \ ./$(DEPDIR)/ibusattrlist.Plo ./$(DEPDIR)/ibusbus.Plo \ ./$(DEPDIR)/ibuscomponent.Plo ./$(DEPDIR)/ibuscomposetable.Plo \ ./$(DEPDIR)/ibusconfig.Plo ./$(DEPDIR)/ibusconfigservice.Plo \ ./$(DEPDIR)/ibusemoji.Plo ./$(DEPDIR)/ibusengine.Plo \ ./$(DEPDIR)/ibusenginedesc.Plo \ ./$(DEPDIR)/ibusenginesimple.Plo ./$(DEPDIR)/ibusenumtypes.Plo \ ./$(DEPDIR)/ibuserror.Plo ./$(DEPDIR)/ibusfactory.Plo \ ./$(DEPDIR)/ibushotkey.Plo ./$(DEPDIR)/ibusinputcontext.Plo \ ./$(DEPDIR)/ibuskeymap.Plo ./$(DEPDIR)/ibuskeynames.Plo \ ./$(DEPDIR)/ibuskeyuni.Plo ./$(DEPDIR)/ibuslookuptable.Plo \ ./$(DEPDIR)/ibusmarshalers.Plo ./$(DEPDIR)/ibusobject.Plo \ ./$(DEPDIR)/ibusobservedpath.Plo \ ./$(DEPDIR)/ibuspanelservice.Plo ./$(DEPDIR)/ibusproperty.Plo \ ./$(DEPDIR)/ibusproplist.Plo ./$(DEPDIR)/ibusproxy.Plo \ ./$(DEPDIR)/ibusregistry.Plo ./$(DEPDIR)/ibusserializable.Plo \ ./$(DEPDIR)/ibusservice.Plo ./$(DEPDIR)/ibusshare.Plo \ ./$(DEPDIR)/ibustext.Plo ./$(DEPDIR)/ibusunicode.Plo \ ./$(DEPDIR)/ibusutil.Plo ./$(DEPDIR)/ibusxevent.Plo \ ./$(DEPDIR)/ibusxml.Plo \ ./$(DEPDIR)/unicode_parser-unicode-parser.Po 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) $(emoji_parser_SOURCES) \ $(unicode_parser_SOURCES) DIST_SOURCES = $(libibus_1_0_la_SOURCES) \ $(am__emoji_parser_SOURCES_DIST) \ $(am__unicode_parser_SOURCES_DIST) 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 = $(dict_DATA) $(dist_gir_DATA) $(typelibs_DATA) $(unicode_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 distdir-am 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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)\" \ -DX11_DATA_PREFIX=\"$(X11_PREFIX)\" $(NULL) $(am__append_3) # 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 = \ ibusaccelgroup.c \ ibusattribute.c \ ibusattrlist.c \ ibusbus.c \ ibuscomponent.c \ ibusconfig.c \ ibusconfigservice.c \ ibusemoji.c \ ibusengine.c \ ibusenginedesc.c \ ibusenginesimple.c \ ibuserror.c \ ibusfactory.c \ ibushotkey.c \ ibusinputcontext.c \ ibuskeymap.c \ ibuskeynames.c \ ibuskeyuni.c \ ibuslookuptable.c \ ibusobject.c \ ibusobservedpath.c \ ibuspanelservice.c \ ibusproperty.c \ ibusproplist.c \ ibusproxy.c \ ibusregistry.c \ ibusserializable.c \ ibusservice.c \ ibusshare.c \ ibustext.c \ ibusunicode.c \ ibusutil.c \ ibusxevent.c \ ibusxml.c \ $(NULL) libibus_1_0_la_SOURCES = \ ibuscomposetable.c \ ibusenumtypes.c \ ibusmarshalers.c \ $(ibus_sources) \ $(NULL) ibus_marshalers_sources = \ ibusmarshalers.c \ ibusmarshalers.h \ $(NULL) ibus_enumtypes_sources = \ ibusenumtypes.c \ ibusenumtypes.h \ $(NULL) ibus_headers = \ ibus.h \ ibusaccelgroup.h \ ibusattribute.h \ ibusattrlist.h \ ibusbus.h \ ibuscomponent.h \ ibusconfig.h \ ibusconfigservice.h \ ibusdebug.h \ ibusemoji.h \ ibusengine.h \ ibusenginedesc.h \ ibusenginesimple.h \ ibuserror.h \ ibusfactory.h \ ibushotkey.h \ ibusinputcontext.h \ ibuskeymap.h \ ibuskeys.h \ ibuskeysyms-compat.h \ ibuskeysyms.h \ ibuslookuptable.h \ ibusobject.h \ ibusobservedpath.h \ ibuspanelservice.h \ ibusproperty.h \ ibusproplist.h \ ibusproxy.h \ ibusregistry.h \ ibusserializable.h \ ibusservice.h \ ibusshare.h \ ibustext.h \ ibustypes.h \ ibusunicode.h \ ibusutil.h \ ibusxevent.h \ ibusxml.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 = \ gtkimcontextsimpleseqs.h \ ibuscomposetable.h \ ibusemojigen.h \ ibusenginesimpleprivate.h \ ibusinternal.h \ ibusunicodegen.h \ keyname-table.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) @ENABLE_EMOJI_DICT_TRUE@dictdir = $(pkgdatadir)/dicts @ENABLE_EMOJI_DICT_TRUE@dict_DATA = dicts/emoji-en.dict @ENABLE_EMOJI_DICT_TRUE@LANG_FILES = $(basename $(notdir $(wildcard $(EMOJI_ANNOTATION_DIR)/*.xml))) @ENABLE_EMOJI_DICT_TRUE@dict__uninstall_files_from_dir = { \ @ENABLE_EMOJI_DICT_TRUE@ test -z "$$files" \ @ENABLE_EMOJI_DICT_TRUE@ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ @ENABLE_EMOJI_DICT_TRUE@ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ @ENABLE_EMOJI_DICT_TRUE@ cd "$$dir" && rm -f $$files; }; \ @ENABLE_EMOJI_DICT_TRUE@ } @ENABLE_EMOJI_DICT_TRUE@emoji_parser_SOURCES = \ @ENABLE_EMOJI_DICT_TRUE@ emoji-parser.c \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@emoji_parser_CFLAGS = \ @ENABLE_EMOJI_DICT_TRUE@ $(GLIB2_CFLAGS) \ @ENABLE_EMOJI_DICT_TRUE@ $(GOBJECT2_CFLAGS) \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@emoji_parser_LDADD = \ @ENABLE_EMOJI_DICT_TRUE@ $(libibus) \ @ENABLE_EMOJI_DICT_TRUE@ $(GLIB2_LIBS) \ @ENABLE_EMOJI_DICT_TRUE@ $(GOBJECT2_LIBS) \ @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_UNICODE_DICT_TRUE@unicodedir = $(pkgdatadir)/dicts @ENABLE_UNICODE_DICT_TRUE@unicode_DATA = dicts/unicode-names.dict dicts/unicode-blocks.dict @ENABLE_UNICODE_DICT_TRUE@unicode_parser_SOURCES = \ @ENABLE_UNICODE_DICT_TRUE@ unicode-parser.c \ @ENABLE_UNICODE_DICT_TRUE@ $(NULL) @ENABLE_UNICODE_DICT_TRUE@unicode_parser_CFLAGS = \ @ENABLE_UNICODE_DICT_TRUE@ $(GLIB2_CFLAGS) \ @ENABLE_UNICODE_DICT_TRUE@ $(NULL) @ENABLE_UNICODE_DICT_TRUE@unicode_parser_LDADD = \ @ENABLE_UNICODE_DICT_TRUE@ $(GLIB2_LIBS) \ @ENABLE_UNICODE_DICT_TRUE@ $(libibus) \ @ENABLE_UNICODE_DICT_TRUE@ $(NULL) EXTRA_DIST = \ emoji-parser.c \ ibusversion.h.in \ ibusmarshalers.list \ ibusenumtypes.h.template \ ibusenumtypes.c.template \ unicode-parser.c \ $(NULL) DISTCLEANFILES = \ ibusemojigen.h \ ibusunicodegen.h \ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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)/$@ 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 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) emoji-parser$(EXEEXT): $(emoji_parser_OBJECTS) $(emoji_parser_DEPENDENCIES) $(EXTRA_emoji_parser_DEPENDENCIES) @rm -f emoji-parser$(EXEEXT) $(AM_V_CCLD)$(emoji_parser_LINK) $(emoji_parser_OBJECTS) $(emoji_parser_LDADD) $(LIBS) unicode-parser$(EXEEXT): $(unicode_parser_OBJECTS) $(unicode_parser_DEPENDENCIES) $(EXTRA_unicode_parser_DEPENDENCIES) @rm -f unicode-parser$(EXEEXT) $(AM_V_CCLD)$(unicode_parser_LINK) $(unicode_parser_OBJECTS) $(unicode_parser_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/emoji_parser-emoji-parser.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusaccelgroup.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusattribute.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusattrlist.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusbus.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuscomponent.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuscomposetable.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusconfig.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusconfigservice.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusemoji.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusengine.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusenginedesc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusenginesimple.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusenumtypes.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuserror.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusfactory.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibushotkey.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusinputcontext.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuskeymap.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuskeynames.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuskeyuni.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuslookuptable.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusmarshalers.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusobject.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusobservedpath.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibuspanelservice.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusproperty.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusproplist.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusproxy.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusregistry.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusserializable.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusservice.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusshare.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibustext.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusunicode.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusutil.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusxevent.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibusxml.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicode_parser-unicode-parser.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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 $@ $< emoji_parser-emoji-parser.o: emoji-parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(emoji_parser_CFLAGS) $(CFLAGS) -MT emoji_parser-emoji-parser.o -MD -MP -MF $(DEPDIR)/emoji_parser-emoji-parser.Tpo -c -o emoji_parser-emoji-parser.o `test -f 'emoji-parser.c' || echo '$(srcdir)/'`emoji-parser.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/emoji_parser-emoji-parser.Tpo $(DEPDIR)/emoji_parser-emoji-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='emoji-parser.c' object='emoji_parser-emoji-parser.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) $(emoji_parser_CFLAGS) $(CFLAGS) -c -o emoji_parser-emoji-parser.o `test -f 'emoji-parser.c' || echo '$(srcdir)/'`emoji-parser.c emoji_parser-emoji-parser.obj: emoji-parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(emoji_parser_CFLAGS) $(CFLAGS) -MT emoji_parser-emoji-parser.obj -MD -MP -MF $(DEPDIR)/emoji_parser-emoji-parser.Tpo -c -o emoji_parser-emoji-parser.obj `if test -f 'emoji-parser.c'; then $(CYGPATH_W) 'emoji-parser.c'; else $(CYGPATH_W) '$(srcdir)/emoji-parser.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/emoji_parser-emoji-parser.Tpo $(DEPDIR)/emoji_parser-emoji-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='emoji-parser.c' object='emoji_parser-emoji-parser.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) $(emoji_parser_CFLAGS) $(CFLAGS) -c -o emoji_parser-emoji-parser.obj `if test -f 'emoji-parser.c'; then $(CYGPATH_W) 'emoji-parser.c'; else $(CYGPATH_W) '$(srcdir)/emoji-parser.c'; fi` unicode_parser-unicode-parser.o: unicode-parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unicode_parser_CFLAGS) $(CFLAGS) -MT unicode_parser-unicode-parser.o -MD -MP -MF $(DEPDIR)/unicode_parser-unicode-parser.Tpo -c -o unicode_parser-unicode-parser.o `test -f 'unicode-parser.c' || echo '$(srcdir)/'`unicode-parser.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unicode_parser-unicode-parser.Tpo $(DEPDIR)/unicode_parser-unicode-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unicode-parser.c' object='unicode_parser-unicode-parser.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) $(unicode_parser_CFLAGS) $(CFLAGS) -c -o unicode_parser-unicode-parser.o `test -f 'unicode-parser.c' || echo '$(srcdir)/'`unicode-parser.c unicode_parser-unicode-parser.obj: unicode-parser.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(unicode_parser_CFLAGS) $(CFLAGS) -MT unicode_parser-unicode-parser.obj -MD -MP -MF $(DEPDIR)/unicode_parser-unicode-parser.Tpo -c -o unicode_parser-unicode-parser.obj `if test -f 'unicode-parser.c'; then $(CYGPATH_W) 'unicode-parser.c'; else $(CYGPATH_W) '$(srcdir)/unicode-parser.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/unicode_parser-unicode-parser.Tpo $(DEPDIR)/unicode_parser-unicode-parser.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unicode-parser.c' object='unicode_parser-unicode-parser.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) $(unicode_parser_CFLAGS) $(CFLAGS) -c -o unicode_parser-unicode-parser.obj `if test -f 'unicode-parser.c'; then $(CYGPATH_W) 'unicode-parser.c'; else $(CYGPATH_W) '$(srcdir)/unicode-parser.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-dictDATA: $(dict_DATA) @$(NORMAL_INSTALL) @list='$(dict_DATA)'; test -n "$(dictdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(dictdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(dictdir)" || 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)$(dictdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(dictdir)" || exit $$?; \ done uninstall-dictDATA: @$(NORMAL_UNINSTALL) @list='$(dict_DATA)'; test -n "$(dictdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(dictdir)'; $(am__uninstall_files_from_dir) 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-unicodeDATA: $(unicode_DATA) @$(NORMAL_INSTALL) @list='$(unicode_DATA)'; test -n "$(unicodedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(unicodedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(unicodedir)" || 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)$(unicodedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(unicodedir)" || exit $$?; \ done uninstall-unicodeDATA: @$(NORMAL_UNINSTALL) @list='$(unicode_DATA)'; test -n "$(unicodedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(unicodedir)'; $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 $(PROGRAMS) $(LTLIBRARIES) $(DATA) $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(dictdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(unicodedir)" "$(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) @ENABLE_EMOJI_DICT_FALSE@@ENABLE_UNICODE_DICT_FALSE@clean-local: @ENABLE_EMOJI_DICT_FALSE@install-data-hook: @ENABLE_EMOJI_DICT_FALSE@uninstall-hook: clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-recursive -rm -f ./$(DEPDIR)/emoji_parser-emoji-parser.Po -rm -f ./$(DEPDIR)/ibusaccelgroup.Plo -rm -f ./$(DEPDIR)/ibusattribute.Plo -rm -f ./$(DEPDIR)/ibusattrlist.Plo -rm -f ./$(DEPDIR)/ibusbus.Plo -rm -f ./$(DEPDIR)/ibuscomponent.Plo -rm -f ./$(DEPDIR)/ibuscomposetable.Plo -rm -f ./$(DEPDIR)/ibusconfig.Plo -rm -f ./$(DEPDIR)/ibusconfigservice.Plo -rm -f ./$(DEPDIR)/ibusemoji.Plo -rm -f ./$(DEPDIR)/ibusengine.Plo -rm -f ./$(DEPDIR)/ibusenginedesc.Plo -rm -f ./$(DEPDIR)/ibusenginesimple.Plo -rm -f ./$(DEPDIR)/ibusenumtypes.Plo -rm -f ./$(DEPDIR)/ibuserror.Plo -rm -f ./$(DEPDIR)/ibusfactory.Plo -rm -f ./$(DEPDIR)/ibushotkey.Plo -rm -f ./$(DEPDIR)/ibusinputcontext.Plo -rm -f ./$(DEPDIR)/ibuskeymap.Plo -rm -f ./$(DEPDIR)/ibuskeynames.Plo -rm -f ./$(DEPDIR)/ibuskeyuni.Plo -rm -f ./$(DEPDIR)/ibuslookuptable.Plo -rm -f ./$(DEPDIR)/ibusmarshalers.Plo -rm -f ./$(DEPDIR)/ibusobject.Plo -rm -f ./$(DEPDIR)/ibusobservedpath.Plo -rm -f ./$(DEPDIR)/ibuspanelservice.Plo -rm -f ./$(DEPDIR)/ibusproperty.Plo -rm -f ./$(DEPDIR)/ibusproplist.Plo -rm -f ./$(DEPDIR)/ibusproxy.Plo -rm -f ./$(DEPDIR)/ibusregistry.Plo -rm -f ./$(DEPDIR)/ibusserializable.Plo -rm -f ./$(DEPDIR)/ibusservice.Plo -rm -f ./$(DEPDIR)/ibusshare.Plo -rm -f ./$(DEPDIR)/ibustext.Plo -rm -f ./$(DEPDIR)/ibusunicode.Plo -rm -f ./$(DEPDIR)/ibusutil.Plo -rm -f ./$(DEPDIR)/ibusxevent.Plo -rm -f ./$(DEPDIR)/ibusxml.Plo -rm -f ./$(DEPDIR)/unicode_parser-unicode-parser.Po -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-dictDATA install-dist_girDATA \ install-ibusincludeHEADERS install-typelibsDATA \ install-unicodeDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook 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 -f ./$(DEPDIR)/emoji_parser-emoji-parser.Po -rm -f ./$(DEPDIR)/ibusaccelgroup.Plo -rm -f ./$(DEPDIR)/ibusattribute.Plo -rm -f ./$(DEPDIR)/ibusattrlist.Plo -rm -f ./$(DEPDIR)/ibusbus.Plo -rm -f ./$(DEPDIR)/ibuscomponent.Plo -rm -f ./$(DEPDIR)/ibuscomposetable.Plo -rm -f ./$(DEPDIR)/ibusconfig.Plo -rm -f ./$(DEPDIR)/ibusconfigservice.Plo -rm -f ./$(DEPDIR)/ibusemoji.Plo -rm -f ./$(DEPDIR)/ibusengine.Plo -rm -f ./$(DEPDIR)/ibusenginedesc.Plo -rm -f ./$(DEPDIR)/ibusenginesimple.Plo -rm -f ./$(DEPDIR)/ibusenumtypes.Plo -rm -f ./$(DEPDIR)/ibuserror.Plo -rm -f ./$(DEPDIR)/ibusfactory.Plo -rm -f ./$(DEPDIR)/ibushotkey.Plo -rm -f ./$(DEPDIR)/ibusinputcontext.Plo -rm -f ./$(DEPDIR)/ibuskeymap.Plo -rm -f ./$(DEPDIR)/ibuskeynames.Plo -rm -f ./$(DEPDIR)/ibuskeyuni.Plo -rm -f ./$(DEPDIR)/ibuslookuptable.Plo -rm -f ./$(DEPDIR)/ibusmarshalers.Plo -rm -f ./$(DEPDIR)/ibusobject.Plo -rm -f ./$(DEPDIR)/ibusobservedpath.Plo -rm -f ./$(DEPDIR)/ibuspanelservice.Plo -rm -f ./$(DEPDIR)/ibusproperty.Plo -rm -f ./$(DEPDIR)/ibusproplist.Plo -rm -f ./$(DEPDIR)/ibusproxy.Plo -rm -f ./$(DEPDIR)/ibusregistry.Plo -rm -f ./$(DEPDIR)/ibusserializable.Plo -rm -f ./$(DEPDIR)/ibusservice.Plo -rm -f ./$(DEPDIR)/ibusshare.Plo -rm -f ./$(DEPDIR)/ibustext.Plo -rm -f ./$(DEPDIR)/ibusunicode.Plo -rm -f ./$(DEPDIR)/ibusutil.Plo -rm -f ./$(DEPDIR)/ibusxevent.Plo -rm -f ./$(DEPDIR)/ibusxml.Plo -rm -f ./$(DEPDIR)/unicode_parser-unicode-parser.Po -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-dictDATA uninstall-dist_girDATA \ uninstall-ibusincludeHEADERS uninstall-libLTLIBRARIES \ uninstall-typelibsDATA uninstall-unicodeDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) uninstall-hook .MAKE: $(am__recursive_targets) all check install install-am \ install-data-am install-strip uninstall-am .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--depfiles check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool clean-local \ 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-data-hook install-dictDATA 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 \ install-unicodeDATA 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-dictDATA uninstall-dist_girDATA \ uninstall-hook uninstall-ibusincludeHEADERS \ uninstall-libLTLIBRARIES uninstall-typelibsDATA \ uninstall-unicodeDATA .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 $@ @ENABLE_EMOJI_DICT_TRUE@dicts/emoji-en.dict: emoji-parser @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_at)if test x"$(LANG_FILES)" = x ; then \ @ENABLE_EMOJI_DICT_TRUE@ echo "WARNING: Not found $(EMOJI_ANNOTATION_DIR)/en.xml" 1>&2; \ @ENABLE_EMOJI_DICT_TRUE@ fi; \ @ENABLE_EMOJI_DICT_TRUE@ for f in $(LANG_FILES) ; do \ @ENABLE_EMOJI_DICT_TRUE@ if test -f dicts/emoji-$$f.dict; then \ @ENABLE_EMOJI_DICT_TRUE@ echo "Already exists dicts/emoji-$$f.dict"; \ @ENABLE_EMOJI_DICT_TRUE@ continue; \ @ENABLE_EMOJI_DICT_TRUE@ fi; \ @ENABLE_EMOJI_DICT_TRUE@ if test -f \ @ENABLE_EMOJI_DICT_TRUE@ "$(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$$f.xml" ; then \ @ENABLE_EMOJI_DICT_TRUE@ xml_derived_option="--xml-derived $(EMOJI_ANNOTATION_DIR)/../annotationsDerived/$$f.xml"; \ @ENABLE_EMOJI_DICT_TRUE@ plus_comment="derived"; \ @ENABLE_EMOJI_DICT_TRUE@ fi; \ @ENABLE_EMOJI_DICT_TRUE@ if test x"$$f" = xen ; then \ @ENABLE_EMOJI_DICT_TRUE@ $(builddir)/emoji-parser \ @ENABLE_EMOJI_DICT_TRUE@ --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ @ENABLE_EMOJI_DICT_TRUE@ --xml $(EMOJI_ANNOTATION_DIR)/$$f.xml \ @ENABLE_EMOJI_DICT_TRUE@ $$xml_derived_option \ @ENABLE_EMOJI_DICT_TRUE@ --xml-ascii $(top_srcdir)/data/annotations/en_ascii.xml \ @ENABLE_EMOJI_DICT_TRUE@ --out-category ibusemojigen.h \ @ENABLE_EMOJI_DICT_TRUE@ --out $@; \ @ENABLE_EMOJI_DICT_TRUE@ else \ @ENABLE_EMOJI_DICT_TRUE@ $(builddir)/emoji-parser \ @ENABLE_EMOJI_DICT_TRUE@ --unicode-emoji-dir $(UNICODE_EMOJI_DIR) \ @ENABLE_EMOJI_DICT_TRUE@ --xml $(EMOJI_ANNOTATION_DIR)/$$f.xml \ @ENABLE_EMOJI_DICT_TRUE@ $$xml_derived_option \ @ENABLE_EMOJI_DICT_TRUE@ --out dicts/emoji-$$f.dict; \ @ENABLE_EMOJI_DICT_TRUE@ fi; \ @ENABLE_EMOJI_DICT_TRUE@ echo "Generated $$plus_comment dicts/emoji-$$f.dict"; \ @ENABLE_EMOJI_DICT_TRUE@ done @ENABLE_EMOJI_DICT_TRUE@ibusemojigen.h: dicts/emoji-en.dict @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_EMOJI_DICT_TRUE@install-data-hook: $(dict_DATA) @ENABLE_EMOJI_DICT_TRUE@ @$(NORMAL_INSTALL) @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_at)list='$(wildcard dicts/*.dict)'; \ @ENABLE_EMOJI_DICT_TRUE@ test -n "$(dictdir)" || list=; \ @ENABLE_EMOJI_DICT_TRUE@ if test -n "$$list"; then \ @ENABLE_EMOJI_DICT_TRUE@ echo " $(MKDIR_P) '$(DESTDIR)$(dictdir)'"; \ @ENABLE_EMOJI_DICT_TRUE@ $(MKDIR_P) "$(DESTDIR)$(dictdir)" || exit 1; \ @ENABLE_EMOJI_DICT_TRUE@ fi; \ @ENABLE_EMOJI_DICT_TRUE@ for p in $$list; do \ @ENABLE_EMOJI_DICT_TRUE@ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ @ENABLE_EMOJI_DICT_TRUE@ echo "$$d$$p"; \ @ENABLE_EMOJI_DICT_TRUE@ done | \ @ENABLE_EMOJI_DICT_TRUE@ while read files; do \ @ENABLE_EMOJI_DICT_TRUE@ if [ x$(AM_DEFAULT_VERBOSITY) = x1 ] ; then \ @ENABLE_EMOJI_DICT_TRUE@ echo "$(INSTALL_DATA) $$files '$(DESTDIR)$(dictdir)'"; \ @ENABLE_EMOJI_DICT_TRUE@ else \ @ENABLE_EMOJI_DICT_TRUE@ echo "Installing $$files"; \ @ENABLE_EMOJI_DICT_TRUE@ fi; \ @ENABLE_EMOJI_DICT_TRUE@ $(INSTALL_DATA) $$files "$(DESTDIR)$(dictdir)" || exit $$?; \ @ENABLE_EMOJI_DICT_TRUE@ done # for make dist @ENABLE_EMOJI_DICT_TRUE@uninstall-hook: @ENABLE_EMOJI_DICT_TRUE@ @$(NORMAL_UNINSTALL) @ENABLE_EMOJI_DICT_TRUE@ $(AM_V_at)list='$(wildcard dicts/*.dict)'; \ @ENABLE_EMOJI_DICT_TRUE@ test -n "$(dictdir)" || list=; \ @ENABLE_EMOJI_DICT_TRUE@ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ @ENABLE_EMOJI_DICT_TRUE@ dir='$(DESTDIR)$(dictdir)'; $(dict__uninstall_files_from_dir) @ENABLE_EMOJI_DICT_TRUE@clean-local: @ENABLE_EMOJI_DICT_TRUE@ -rm -rf dicts @ENABLE_EMOJI_DICT_TRUE@ $(NULL) @ENABLE_UNICODE_DICT_TRUE@dicts/unicode-names.dict: unicode-parser @ENABLE_UNICODE_DICT_TRUE@ $(AM_V_at)input_file="$(UCD_DIR)/NamesList.txt"; \ @ENABLE_UNICODE_DICT_TRUE@ if test ! -f "$$input_file" ; then \ @ENABLE_UNICODE_DICT_TRUE@ echo "WARNING: Not found $$input_file" 1>&2; \ @ENABLE_UNICODE_DICT_TRUE@ else \ @ENABLE_UNICODE_DICT_TRUE@ $(builddir)/unicode-parser \ @ENABLE_UNICODE_DICT_TRUE@ --input-names-list $$input_file \ @ENABLE_UNICODE_DICT_TRUE@ --output-names-list $@; \ @ENABLE_UNICODE_DICT_TRUE@ echo "Generated $@"; \ @ENABLE_UNICODE_DICT_TRUE@ fi; @ENABLE_UNICODE_DICT_TRUE@dicts/unicode-blocks.dict: unicode-parser @ENABLE_UNICODE_DICT_TRUE@ $(AM_V_at)input_file="$(UCD_DIR)/Blocks.txt"; \ @ENABLE_UNICODE_DICT_TRUE@ if test ! -f "$$input_file" ; then \ @ENABLE_UNICODE_DICT_TRUE@ echo "WARNING: Not found $$input_file" 1>&2; \ @ENABLE_UNICODE_DICT_TRUE@ else \ @ENABLE_UNICODE_DICT_TRUE@ $(builddir)/unicode-parser \ @ENABLE_UNICODE_DICT_TRUE@ --input-blocks $$input_file \ @ENABLE_UNICODE_DICT_TRUE@ --output-blocks-trans ibusunicodegen.h \ @ENABLE_UNICODE_DICT_TRUE@ --output-blocks $@; \ @ENABLE_UNICODE_DICT_TRUE@ echo "Generated $@"; \ @ENABLE_UNICODE_DICT_TRUE@ fi; @ENABLE_UNICODE_DICT_TRUE@ibusunicodegen.h: dicts/unicode-blocks.dict @ENABLE_UNICODE_DICT_TRUE@ $(NULL) @ENABLE_UNICODE_DICT_TRUE@clean-local: @ENABLE_UNICODE_DICT_TRUE@ -rm -rf dicts @ENABLE_UNICODE_DICT_TRUE@ $(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.22/src/ibusserializable.h0000644000000000000000000002367413623750431013743 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) 2018 Takao Fujiwara * Copyright (C) 2008-2018 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_object: * @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_object (IBusSerializable *serializable); /** * ibus_serializable_deserialize_object: * @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_object (GVariant *variant); #define ibus_serializable_serialize ibus_serializable_serialize_object #define ibus_serializable_deserialize ibus_serializable_deserialize_object G_END_DECLS #endif ibus-1.5.22/src/ibustypes.h0000644000000000000000000002404013623750431012425 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.22/src/ibusproxy.h0000644000000000000000000000726113623750431012450 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.22/src/ibuskeymap.c0000644000000000000000000002102713623750431012544 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) 2018 Takao Fujiwara * Copyright (C) 2008-2018 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, ch; 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; /* Do not assign *p1 to g_ascii_isalpha() directly for the syntax check */ if (i == 0 && strncmp (p2, "addupper", sizeof ("addupper") - 1) == 0 && (ch = *p1) && (ch >= 0) && g_ascii_isalpha (ch)) { gchar buf[] = "a"; buf[0] = g_ascii_toupper(ch); 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) { const gchar *envstr; gchar *fname; FILE *pf; gchar buf[256]; gint lineno; if ((envstr = g_getenv ("IBUS_KEYMAP_PATH")) != NULL) fname = g_build_filename (envstr, name, NULL); else 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.22/src/ibuskeymap.h0000644000000000000000000001130213623750431012544 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.22/src/ibusproplist.h0000644000000000000000000001103013623750431013130 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.22/src/ibusunicode.c0000644000000000000000000010572313623750431012712 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2018-2019 Takao Fujiwara * Copyright (C) 2018-2019 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 "ibusinternal.h" #include "ibuserror.h" #include "ibusunicode.h" #define IBUS_UNICODE_DATA_MAGIC "IBusUnicodeData" #define IBUS_UNICODE_BLOCK_MAGIC "IBusUnicodeBlock" #define IBUS_UNICODE_DATA_VERSION (1) #define IBUS_UNICODE_DESERIALIZE_SIGNALL_STR \ "deserialize-unicode" enum { PROP_0 = 0, PROP_CODE, PROP_NAME, PROP_ALIAS, PROP_BLOCK_NAME, PROP_START, PROP_END }; struct _IBusUnicodeDataPrivate { gunichar code; gchar *name; gchar *alias; gchar *block_name; }; struct _IBusUnicodeBlockPrivate { gunichar start; gunichar end; gchar *name; }; typedef struct { IBusUnicodeDataLoadAsyncFinish callback; gpointer user_data; } IBusUnicodeDataLoadData; #define IBUS_UNICODE_DATA_GET_PRIVATE(o) \ ((IBusUnicodeDataPrivate *)ibus_unicode_data_get_instance_private (o)) #define IBUS_UNICODE_BLOCK_GET_PRIVATE(o) \ ((IBusUnicodeBlockPrivate *)ibus_unicode_block_get_instance_private (o)) /* functions prototype */ static void ibus_unicode_data_set_property (IBusUnicodeData *unicode, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_unicode_data_get_property (IBusUnicodeData *unicode, guint prop_id, GValue *value, GParamSpec *pspec); static void ibus_unicode_data_destroy (IBusUnicodeData *unicode); static gboolean ibus_unicode_data_serialize (IBusUnicodeData *unicode, GVariantBuilder *builder); static gint ibus_unicode_data_deserialize (IBusUnicodeData *unicode, GVariant *variant); static gboolean ibus_unicode_data_copy (IBusUnicodeData *dest, const IBusUnicodeData *src); static void ibus_unicode_block_set_property (IBusUnicodeBlock *block, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_unicode_block_get_property (IBusUnicodeBlock *block, guint prop_id, GValue *value, GParamSpec *pspec); static void ibus_unicode_block_destroy (IBusUnicodeBlock *block); static gboolean ibus_unicode_block_serialize (IBusUnicodeBlock *block, GVariantBuilder *builder); static gint ibus_unicode_block_deserialize (IBusUnicodeBlock *block, GVariant *variant); static gboolean ibus_unicode_block_copy (IBusUnicodeBlock *dest, const IBusUnicodeBlock *src); G_DEFINE_TYPE_WITH_PRIVATE (IBusUnicodeData, ibus_unicode_data, IBUS_TYPE_SERIALIZABLE) G_DEFINE_TYPE_WITH_PRIVATE (IBusUnicodeBlock, ibus_unicode_block, IBUS_TYPE_SERIALIZABLE) static void ibus_unicode_data_class_init (IBusUnicodeDataClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); object_class->destroy = (IBusObjectDestroyFunc) ibus_unicode_data_destroy; gobject_class->set_property = (GObjectSetPropertyFunc) ibus_unicode_data_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_unicode_data_get_property; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_unicode_data_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_unicode_data_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_unicode_data_copy; /* install properties */ /** * IBusUnicodeData:code: * * The Uniode code point */ g_object_class_install_property (gobject_class, PROP_CODE, g_param_spec_unichar ("code", "code point", "The Unicode code point", 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusUnicodeData:name: * * The Uniode name */ g_object_class_install_property (gobject_class, PROP_NAME, g_param_spec_string ("name", "name", "The Unicode name", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); /** * IBusUnicodeData:alias: * * The Uniode alias name */ g_object_class_install_property (gobject_class, PROP_ALIAS, g_param_spec_string ("alias", "alias name", "The Unicode alias name", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); /** * IBusUnicodeData:block-name: * * The Uniode block name */ g_object_class_install_property (gobject_class, PROP_BLOCK_NAME, g_param_spec_string ("block-name", "block name", "The Unicode block name", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); } static void ibus_unicode_data_init (IBusUnicodeData *unicode) { unicode->priv = IBUS_UNICODE_DATA_GET_PRIVATE (unicode); } static void ibus_unicode_data_destroy (IBusUnicodeData *unicode) { g_clear_pointer (&unicode->priv->name, g_free); g_clear_pointer (&unicode->priv->alias, g_free); g_clear_pointer (&unicode->priv->block_name, g_free); IBUS_OBJECT_CLASS (ibus_unicode_data_parent_class)-> destroy (IBUS_OBJECT (unicode)); } static void ibus_unicode_data_set_property (IBusUnicodeData *unicode, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_CODE: g_assert (unicode->priv->code == 0); unicode->priv->code = g_value_get_uint (value); break; case PROP_NAME: g_assert (unicode->priv->name == NULL); unicode->priv->name = g_value_dup_string (value); break; case PROP_ALIAS: g_assert (unicode->priv->alias == NULL); unicode->priv->alias = g_value_dup_string (value); break; case PROP_BLOCK_NAME: g_free (unicode->priv->block_name); unicode->priv->block_name = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (unicode, prop_id, pspec); } } static void ibus_unicode_data_get_property (IBusUnicodeData *unicode, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_CODE: g_value_set_uint (value, ibus_unicode_data_get_code (unicode)); break; case PROP_NAME: g_value_set_string (value, ibus_unicode_data_get_name (unicode)); break; case PROP_ALIAS: g_value_set_string (value, ibus_unicode_data_get_alias (unicode)); break; case PROP_BLOCK_NAME: g_value_set_string (value, ibus_unicode_data_get_block_name (unicode)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (unicode, prop_id, pspec); } } static gboolean ibus_unicode_data_serialize (IBusUnicodeData *unicode, GVariantBuilder *builder) { gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_data_parent_class)-> serialize ((IBusSerializable *)unicode, builder); g_return_val_if_fail (retval, FALSE); #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, "u", unicode->priv->code); g_variant_builder_add (builder, "s", NOTNULL (unicode->priv->name)); g_variant_builder_add (builder, "s", NOTNULL (unicode->priv->alias)); /* Use IBusUnicodeBlock for memory usage. g_variant_builder_add (builder, "s", NOTNULL (unicode->priv->block_name)); */ #undef NOTNULL return TRUE; } static gint ibus_unicode_data_deserialize (IBusUnicodeData *unicode, GVariant *variant) { gint retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_data_parent_class)-> deserialize ((IBusSerializable *)unicode, 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. */ g_variant_get_child (variant, retval++, "u", &unicode->priv->code); ibus_g_variant_get_child_string (variant, retval++, &unicode->priv->name); ibus_g_variant_get_child_string (variant, retval++, &unicode->priv->alias); /* Use IBusUnicodeBlock for memory usage. ibus_g_variant_get_child_string (variant, retval++, &unicode->priv->block_name); */ return retval; } static gboolean ibus_unicode_data_copy (IBusUnicodeData *dest, const IBusUnicodeData *src) { gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_data_parent_class)-> copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); dest->priv->code = src->priv->code; dest->priv->name = g_strdup (src->priv->name); dest->priv->alias = g_strdup (src->priv->alias); dest->priv->block_name = g_strdup (src->priv->block_name); return TRUE; } IBusUnicodeData * ibus_unicode_data_new (const gchar *first_property_name, ...) { va_list var_args; IBusUnicodeData *unicode; g_assert (first_property_name != NULL); va_start (var_args, first_property_name); unicode = (IBusUnicodeData *) g_object_new_valist (IBUS_TYPE_UNICODE_DATA, first_property_name, var_args); va_end (var_args); /* code is required. Other properties are set in class_init by default. */ g_assert (unicode->priv->name != NULL); g_assert (unicode->priv->alias != NULL); g_assert (unicode->priv->block_name != NULL); return unicode; } gunichar ibus_unicode_data_get_code (IBusUnicodeData *unicode) { g_return_val_if_fail (IBUS_IS_UNICODE_DATA (unicode), G_MAXUINT32); return unicode->priv->code; } const gchar * ibus_unicode_data_get_name (IBusUnicodeData *unicode) { g_return_val_if_fail (IBUS_IS_UNICODE_DATA (unicode), ""); return unicode->priv->name; } const gchar * ibus_unicode_data_get_alias (IBusUnicodeData *unicode) { g_return_val_if_fail (IBUS_IS_UNICODE_DATA (unicode), ""); return unicode->priv->alias; } const gchar * ibus_unicode_data_get_block_name (IBusUnicodeData *unicode) { g_return_val_if_fail (IBUS_IS_UNICODE_DATA (unicode), ""); return unicode->priv->block_name; } void ibus_unicode_data_set_block_name (IBusUnicodeData *unicode, const gchar *block_name) { g_return_if_fail (IBUS_IS_UNICODE_DATA (unicode)); g_free (unicode->priv->block_name); unicode->priv->block_name = g_strdup (block_name); } static void variant_foreach_add_unicode (IBusUnicodeData *unicode, GVariantBuilder *builder) { g_variant_builder_add ( builder, "v", ibus_serializable_serialize (IBUS_SERIALIZABLE (unicode))); } static GVariant * ibus_unicode_data_list_serialize (GSList *list) { GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); g_slist_foreach (list, (GFunc) variant_foreach_add_unicode, &builder); return g_variant_builder_end (&builder); } static GSList * ibus_unicode_data_list_deserialize (GVariant *variant, GObject *source_object) { GSList *list = NULL; GVariantIter iter; GVariant *unicode_variant = NULL; gsize i, size; gboolean has_signal = FALSE; if (G_IS_OBJECT (source_object)) { has_signal = g_signal_lookup ( IBUS_UNICODE_DESERIALIZE_SIGNALL_STR, G_OBJECT_TYPE (source_object)); if (!has_signal) { const gchar *type_name = g_type_name (G_OBJECT_TYPE (source_object)); g_warning ("GObject %s does not have the signal \"%s\"", type_name ? type_name : "(null)", IBUS_UNICODE_DESERIALIZE_SIGNALL_STR); } } g_variant_iter_init (&iter, variant); size = g_variant_iter_n_children (&iter); i = 0; while (g_variant_iter_loop (&iter, "v", &unicode_variant)) { IBusUnicodeData *data = IBUS_UNICODE_DATA (ibus_serializable_deserialize ( unicode_variant)); list = g_slist_append (list, data); g_clear_pointer (&unicode_variant, g_variant_unref); if (has_signal && (i == 0 || ((i + 1) % 100) == 0)) { g_signal_emit_by_name (source_object, IBUS_UNICODE_DESERIALIZE_SIGNALL_STR, i + 1, size); } i++; } if (has_signal && (i != 1 && (i % 100) != 0)) { g_signal_emit_by_name (source_object, IBUS_UNICODE_DESERIALIZE_SIGNALL_STR, i, size); } return list; } void ibus_unicode_data_save (const gchar *path, GSList *list) { GVariant *variant; const gchar *header = IBUS_UNICODE_DATA_MAGIC; const guint16 version = IBUS_UNICODE_DATA_VERSION; const gchar *contents; gsize length; gchar *dir; GStatBuf buf = { 0, }; GError *error = NULL; g_return_if_fail (path != NULL); g_return_if_fail (list != NULL); if (list->data == NULL) { g_warning ("Failed to save IBus Unicode data: Need a list data."); return; } variant = g_variant_new ("(sqv)", header, version, ibus_unicode_data_list_serialize (list)); contents = g_variant_get_data (variant); length = g_variant_get_size (variant); dir = g_path_get_dirname (path); if (g_strcmp0 (dir, ".") != 0 && g_stat (dir, &buf) != 0) { g_mkdir_with_parents (dir, 0777); } g_free (dir); if (!g_file_set_contents (path, contents, length, &error)) { g_warning ("Failed to save Unicode dict %s: %s", path, error->message); g_error_free (error); } g_variant_unref (variant); } static GSList * ibus_unicode_data_load_with_error (const gchar *path, GObject *source_object, GError **error) { gchar *contents = NULL; gsize length = 0; GVariant *variant_table = NULL; GVariant *variant = NULL; const gchar *header = NULL; guint16 version = 0; GSList *retval = NULL; if (!g_file_test (path, G_FILE_TEST_EXISTS)) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "Unicode dict does not exist: %s", path); goto out_load_cache; } if (!g_file_get_contents (path, &contents, &length, error)) { goto out_load_cache; } variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sq)"), contents, length, FALSE, NULL, NULL); if (variant_table == NULL) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "cache table is broken."); goto out_load_cache; } g_variant_get (variant_table, "(&sq)", &header, &version); if (g_strcmp0 (header, IBUS_UNICODE_DATA_MAGIC) != 0) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "cache is not IBusUnicodeData."); goto out_load_cache; } if (version > IBUS_UNICODE_DATA_VERSION) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "cache version is different: %u != %u", version, IBUS_UNICODE_DATA_VERSION); goto out_load_cache; } version = 0; header = NULL; g_variant_unref (variant_table); variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sqv)"), contents, length, FALSE, NULL, NULL); if (variant_table == NULL) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "cache table is broken."); goto out_load_cache; } g_variant_get (variant_table, "(&sqv)", NULL, NULL, &variant); if (variant == NULL) { g_set_error (error, IBUS_ERROR, IBUS_ERROR_FAILED, "cache dict is broken."); goto out_load_cache; } retval = ibus_unicode_data_list_deserialize (variant, source_object); out_load_cache: if (variant) g_variant_unref (variant); if (variant_table) g_variant_unref (variant_table); g_free (contents); return retval; } GSList * ibus_unicode_data_load (const gchar *path, GObject *source_object) { GError *error = NULL; GSList *retval = ibus_unicode_data_load_with_error (path, source_object, &error); if (retval == NULL) { g_warning ("%s", error->message); g_error_free (error); } return retval; } static void ibus_unicode_data_load_async_thread (GTask *task, gpointer source_object, gpointer task_data, GCancellable *cancellable) { GSList *retval; gchar *path = (gchar *)task_data; GError *error = NULL; g_assert (path != NULL); retval = ibus_unicode_data_load_with_error (path, source_object, &error); g_free (path); if (retval == NULL) g_task_return_error (task, error); else g_task_return_pointer (task, retval, NULL); g_object_unref (task); } static void ibus_unicode_data_load_async_done (GObject *source_object, GAsyncResult *res, gpointer user_data) { IBusUnicodeDataLoadData *data = (IBusUnicodeDataLoadData*)user_data; GSList *list; GError *error = NULL; g_assert (data != NULL); list = g_task_propagate_pointer (G_TASK (res), &error); if (error) { g_warning ("%s", error->message); g_error_free (error); data->callback (NULL, data->user_data); } else { data->callback (list, data->user_data); } g_slice_free (IBusUnicodeDataLoadData, data); } void ibus_unicode_data_load_async (const gchar *path, GObject *source_object, GCancellable *cancellable, IBusUnicodeDataLoadAsyncFinish callback, gpointer user_data) { GTask *task; IBusUnicodeDataLoadData *data; g_return_if_fail (path != NULL); data = g_slice_new0 (IBusUnicodeDataLoadData); data->callback = callback; data->user_data = user_data; task = g_task_new (source_object, cancellable, ibus_unicode_data_load_async_done, data); g_task_set_source_tag (task, ibus_unicode_data_load_async); g_task_set_task_data (task, g_strdup (path), NULL); g_task_run_in_thread (task, ibus_unicode_data_load_async_thread); } static void ibus_unicode_block_class_init (IBusUnicodeBlockClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); GObjectClass *gobject_class = G_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); object_class->destroy = (IBusObjectDestroyFunc) ibus_unicode_block_destroy; gobject_class->set_property = (GObjectSetPropertyFunc) ibus_unicode_block_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_unicode_block_get_property; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_unicode_block_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_unicode_block_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_unicode_block_copy; /* install properties */ /** * IBusUnicodeBlock:start: * * The Uniode start code point */ g_object_class_install_property (gobject_class, PROP_START, /* Cannot use g_param_spec_unichar() for the Unicode * boundary values because the function checks * if the value is a valid Unicode besides MAXUINT. */ g_param_spec_uint ("start", "start code point", "The Unicode start code point", 0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusUnicodeBlock:end: * * The Uniode end code point */ g_object_class_install_property (gobject_class, PROP_END, /* Cannot use g_param_spec_unichar() for the Unicode * boundary values because the function checks * if the value is a valid Unicode besides MAXUINT. */ g_param_spec_uint ("end", "end code point", "The Unicode end code point", 0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusUnicodeBlock:name: * * The Uniode block name */ g_object_class_install_property (gobject_class, PROP_NAME, g_param_spec_string ("name", "name", "The Unicode name", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); } static void ibus_unicode_block_init (IBusUnicodeBlock *block) { block->priv = IBUS_UNICODE_BLOCK_GET_PRIVATE (block); } static void ibus_unicode_block_destroy (IBusUnicodeBlock *block) { g_clear_pointer (&block->priv->name, g_free); IBUS_OBJECT_CLASS (ibus_unicode_data_parent_class)-> destroy (IBUS_OBJECT (block)); } static void ibus_unicode_block_set_property (IBusUnicodeBlock *block, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_START: g_assert (block->priv->start == 0); block->priv->start = g_value_get_uint (value); break; case PROP_END: g_assert (block->priv->end == 0); block->priv->end = g_value_get_uint (value); break; case PROP_NAME: g_assert (block->priv->name == NULL); block->priv->name = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (block, prop_id, pspec); } } static void ibus_unicode_block_get_property (IBusUnicodeBlock *block, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { case PROP_START: g_value_set_uint (value, ibus_unicode_block_get_start (block)); break; case PROP_END: g_value_set_uint (value, ibus_unicode_block_get_end (block)); break; case PROP_NAME: g_value_set_string (value, ibus_unicode_block_get_name (block)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (block, prop_id, pspec); } } static gboolean ibus_unicode_block_serialize (IBusUnicodeBlock *block, GVariantBuilder *builder) { gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_block_parent_class)-> serialize ((IBusSerializable *)block, builder); g_return_val_if_fail (retval, FALSE); #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, "u", block->priv->start); g_variant_builder_add (builder, "u", block->priv->end); g_variant_builder_add (builder, "s", NOTNULL (block->priv->name)); #undef NOTNULL return TRUE; } static gint ibus_unicode_block_deserialize (IBusUnicodeBlock *block, GVariant *variant) { gint retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_block_parent_class)-> deserialize ((IBusSerializable *)block, 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. */ g_variant_get_child (variant, retval++, "u", &block->priv->start); g_variant_get_child (variant, retval++, "u", &block->priv->end); ibus_g_variant_get_child_string (variant, retval++, &block->priv->name); return retval; } static gboolean ibus_unicode_block_copy (IBusUnicodeBlock *dest, const IBusUnicodeBlock *src) { gboolean retval = IBUS_SERIALIZABLE_CLASS (ibus_unicode_block_parent_class)-> copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); dest->priv->start = src->priv->start; dest->priv->end = src->priv->end; dest->priv->name = g_strdup (src->priv->name); return TRUE; } IBusUnicodeBlock * ibus_unicode_block_new (const gchar *first_property_name, ...) { va_list var_args; IBusUnicodeBlock *block; g_assert (first_property_name != NULL); va_start (var_args, first_property_name); block = (IBusUnicodeBlock *) g_object_new_valist (IBUS_TYPE_UNICODE_BLOCK, first_property_name, var_args); va_end (var_args); /* end is required. Other properties are set in class_init by default. */ g_assert (block->priv->start != block->priv->end); g_assert (block->priv->name != NULL); return block; } gunichar ibus_unicode_block_get_start (IBusUnicodeBlock *block) { g_return_val_if_fail (IBUS_IS_UNICODE_BLOCK (block), G_MAXUINT32); return block->priv->start; } gunichar ibus_unicode_block_get_end (IBusUnicodeBlock *block) { g_return_val_if_fail (IBUS_IS_UNICODE_BLOCK (block), G_MAXUINT32); return block->priv->end; } const gchar * ibus_unicode_block_get_name (IBusUnicodeBlock *block) { g_return_val_if_fail (IBUS_IS_UNICODE_BLOCK (block), ""); return block->priv->name; } static void variant_foreach_add_block (IBusUnicodeBlock *block, GVariantBuilder *builder) { g_variant_builder_add ( builder, "v", ibus_serializable_serialize (IBUS_SERIALIZABLE (block))); } static GVariant * ibus_unicode_block_list_serialize (GSList *list) { GVariantBuilder builder; g_variant_builder_init (&builder, G_VARIANT_TYPE ("av")); g_slist_foreach (list, (GFunc) variant_foreach_add_block, &builder); return g_variant_builder_end (&builder); } static GSList * ibus_unicode_block_list_deserialize (GVariant *variant) { GSList *list = NULL; GVariantIter iter; GVariant *unicode_variant = NULL; g_variant_iter_init (&iter, variant); while (g_variant_iter_loop (&iter, "v", &unicode_variant)) { IBusUnicodeBlock *data = IBUS_UNICODE_BLOCK (ibus_serializable_deserialize ( unicode_variant)); list = g_slist_append (list, data); g_clear_pointer (&unicode_variant, g_variant_unref); } return list; } void ibus_unicode_block_save (const gchar *path, GSList *list) { GVariant *variant; const gchar *header = IBUS_UNICODE_BLOCK_MAGIC; const guint16 version = IBUS_UNICODE_DATA_VERSION; const gchar *contents; gsize length; gchar *dir; GStatBuf buf = { 0, }; GError *error = NULL; g_return_if_fail (path != NULL); g_return_if_fail (list != NULL); if (list->data == NULL) { g_warning ("Failed to save IBus Unicode block: Need a list data."); return; } variant = g_variant_new ("(sqv)", header, version, ibus_unicode_block_list_serialize (list)); contents = g_variant_get_data (variant); length = g_variant_get_size (variant); dir = g_path_get_dirname (path); if (g_strcmp0 (dir, ".") != 0 && g_stat (dir, &buf) != 0) { g_mkdir_with_parents (dir, 0777); } g_free (dir); if (!g_file_set_contents (path, contents, length, &error)) { g_warning ("Failed to save Unicode dict %s: %s", path, error->message); g_error_free (error); } g_variant_unref (variant); } GSList * ibus_unicode_block_load (const gchar *path) { gchar *contents = NULL; gsize length = 0; GError *error = NULL; GVariant *variant_table = NULL; GVariant *variant = NULL; const gchar *header = NULL; guint16 version = 0; GSList *retval = NULL; if (!g_file_test (path, G_FILE_TEST_EXISTS)) { g_warning ("Unicode dict does not exist: %s", path); goto out_load_cache; } if (!g_file_get_contents (path, &contents, &length, &error)) { g_warning ("Failed to get dict content %s: %s", path, error->message); g_error_free (error); goto out_load_cache; } variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sq)"), contents, length, FALSE, NULL, NULL); if (variant_table == NULL) { g_warning ("cache table is broken."); goto out_load_cache; } g_variant_get (variant_table, "(&sq)", &header, &version); if (g_strcmp0 (header, IBUS_UNICODE_BLOCK_MAGIC) != 0) { g_warning ("cache is not IBusUnicodeBlock."); goto out_load_cache; } if (version > IBUS_UNICODE_DATA_VERSION) { g_warning ("cache version is different: %u != %u", version, IBUS_UNICODE_DATA_VERSION); goto out_load_cache; } version = 0; header = NULL; g_variant_unref (variant_table); variant_table = g_variant_new_from_data (G_VARIANT_TYPE ("(sqv)"), contents, length, FALSE, NULL, NULL); if (variant_table == NULL) { g_warning ("cache table is broken."); goto out_load_cache; } g_variant_get (variant_table, "(&sqv)", NULL, NULL, &variant); if (variant == NULL) { g_warning ("cache dict is broken."); goto out_load_cache; } retval = ibus_unicode_block_list_deserialize (variant); out_load_cache: if (variant) g_variant_unref (variant); if (variant_table) g_variant_unref (variant_table); g_free (contents); return retval; } ibus-1.5.22/src/ibuscomponent.h0000644000000000000000000002532713623750431013274 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.22/src/ibusmarshalers.list0000644000000000000000000000076213623750431014153 00000000000000VOID:VOID VOID:OBJECT VOID:POINTER VOID:STRING VOID:STRING,INT VOID:STRING,UINT BOOLEAN:POINTER BOOLEAN:POINTER,POINTER BOOLEAN:UINT,UINT BOOLEAN:UINT,UINT,UINT BOOLEAN:ULONG VOID:INT,INT,INT,INT VOID:UINT,UINT VOID:INT,UINT VOID:UINT,UINT,UINT VOID:OBJECT,UINT,BOOLEAN VOID:OBJECT,UINT,BOOLEAN,UINT VOID:OBJECT,UINT,UINT VOID:OBJECT,BOOLEAN VOID:BOXED,BOOLEAN VOID:BOXED VOID:STRING,STRING,VARIANT VOID:STRING,STRING,STRING VOID:UINT VOID:UINT,POINTER VOID:POINTER,UINT VOID:VARIANT OBJECT:STRING ibus-1.5.22/src/ibusenumtypes.c.template0000644000000000000000000000137113623750431015121 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.22/src/ibusservice.h0000644000000000000000000002143413623750431012725 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.22/src/unicode-parser.c0000644000000000000000000003456013623750431013321 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2018 Takao Fujiwara * Copyright (C) 2018 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 #ifdef HAVE_LOCALE_H #include #endif #include "ibusunicode.h" #define NAMES_LIST_SUBJECT "The Unicode Standard" #define BLOCKS_SUBJECT "Blocks-" /* This file has 21 lines about the license at the top of the file. */ #define LICENSE_LINES 21 typedef enum { UCD_NAMES_LIST, UCD_BLOCKS } UCDType; typedef struct _UnicodeData UnicodeData; typedef struct _UnicodeDataIndex UnicodeDataIndex; struct _UnicodeData{ gunichar code; gchar *name; gchar *alias; gunichar start; gunichar end; GSList *list; }; struct _UnicodeDataIndex { gchar *index; UnicodeData *data_list; }; static gchar *unicode_version; static void unicode_data_new_object (UnicodeData *data) { g_return_if_fail (data != NULL); if (!data->name) { g_warning ("No name in U+%04X", data->code); } IBusUnicodeData *unicode = ibus_unicode_data_new ("code", data->code, "name", data->name ? g_strdup (data->name) : g_strdup (""), "alias", data->alias ? g_strdup (data->alias) : g_strdup (""), NULL); data->list = g_slist_append (data->list, unicode); } static void unicode_block_new_object (UnicodeData *data) { g_return_if_fail (data != NULL); if (!data->name) { g_warning ("No name in U+%04X", data->start); } IBusUnicodeBlock *block = ibus_unicode_block_new ("start", data->start, "end", data->end, "name", data->name ? g_strdup (data->name) : g_strdup (""), NULL); data->list = g_slist_append (data->list, block); } static void unicode_data_reset (UnicodeData *data) { g_return_if_fail (data != NULL); data->code = 0; g_clear_pointer (&data->name, g_free); g_clear_pointer (&data->alias, g_free); data->start = 0; data->end = 0; } static gboolean ucd_names_list_parse_comment (const gchar *line) { static gboolean has_version = FALSE; if (has_version) return TRUE; if (strlen (line) > 4 && strncmp (line, "@@@", 3) == 0) { gchar **elements = g_strsplit (line, "\t", -1); if (strncmp (elements[1], NAMES_LIST_SUBJECT, strlen (NAMES_LIST_SUBJECT)) == 0) { unicode_version = g_strdup (elements[1] + strlen (NAMES_LIST_SUBJECT) + 1); has_version = TRUE; } g_strfreev (elements); } return TRUE; } static gboolean ucd_names_list_parse_alias (const gchar *line, UnicodeData *data) { g_return_val_if_fail (line != NULL, FALSE); g_return_val_if_fail (data != NULL, FALSE); if (*line == '\0') return FALSE; data->alias = g_strdup (line); return TRUE; } static gboolean ucd_names_list_parse_indent_line (const gchar *line, UnicodeData *data) { g_return_val_if_fail (line != NULL, FALSE); switch (*line) { case '\0': return FALSE; case '=': line++; while (*line == ' ') line++; return ucd_names_list_parse_alias (line, data); default:; } return TRUE; } static gboolean ucd_names_list_parse_line (const gchar *line, UnicodeData *data) { g_return_val_if_fail (line != NULL, FALSE); switch (*line) { case '\0': return TRUE; case ';': return TRUE; case '@': return ucd_names_list_parse_comment (line); case '\t': return ucd_names_list_parse_indent_line (line + 1, data); default:; } if (g_ascii_isxdigit (*line)) { gchar **elements = g_strsplit (line, "\t", -1); gunichar code; gchar *name; if (g_strv_length (elements) < 2) { g_strfreev (elements); return FALSE; } code = g_ascii_strtoull (elements[0], NULL, 16); name = g_strdup (elements[1]); if (data->name) { unicode_data_new_object (data); unicode_data_reset (data); } data->code = code; data->name = name; } return TRUE; } static gboolean ucd_blocks_parse_comment (const gchar *line) { static gboolean has_version = FALSE; g_return_val_if_fail (line != NULL, FALSE); if (has_version) return TRUE; while (*line == ' ') line++; if (strlen (line) > strlen (BLOCKS_SUBJECT) && strncmp (line, BLOCKS_SUBJECT, strlen (BLOCKS_SUBJECT)) == 0) { unicode_version = g_strdup (line + strlen (BLOCKS_SUBJECT) + 1); has_version = TRUE; } return TRUE; } static gboolean ucd_blocks_parse_line (const gchar *line, UnicodeData *data) { g_return_val_if_fail (line != NULL, FALSE); switch (*line) { case '\0': return TRUE; case '#': return ucd_blocks_parse_comment (line + 1); default:; } if (g_ascii_isxdigit (*line)) { gchar *endptr = NULL; gunichar start = g_ascii_strtoull (line, &endptr, 16); gunichar end; gchar *name = NULL; if (endptr == NULL || *endptr == '\0') return FALSE; while (*endptr == '.') endptr++; line = endptr; endptr = NULL; end = g_ascii_strtoull (line, &endptr, 16); if (endptr == NULL || *endptr == '\0') return FALSE; while (*endptr == ';') endptr++; while (*endptr == ' ') endptr++; if (*endptr == '\0') return FALSE; name = g_strdup (endptr); if (data->name) { unicode_block_new_object (data); unicode_data_reset (data); } data->start = start; data->end = end; data->name = name; } return TRUE; } static gboolean ucd_parse_file (const gchar *filename, GSList **list, UCDType type) { UnicodeData data = { 0, }; gchar *content = NULL; gsize length = 0; GError *error = NULL; gchar *head, *end, *line; int n = 1; g_return_val_if_fail (filename != NULL, FALSE); g_return_val_if_fail (list != NULL, FALSE); if (!g_file_get_contents (filename, &content, &length, &error)) { g_warning ("Failed to load %s: %s", filename, error ? error->message : ""); goto failed_to_parse_ucd_names_list; } head = end = content; while (*end == '\n' && end - content < length) { end++; n++; } head = end; while (end - content < length) { while (*end != '\n' && end - content < length) end++; if (end - content >= length) break; line = g_strndup (head, end - head); switch (type) { case UCD_NAMES_LIST: if (!ucd_names_list_parse_line (line, &data)) { g_warning ("parse error #%d in %s version %s: %s", n, filename, unicode_version ? unicode_version : "(null)", line); } break; case UCD_BLOCKS: if (!ucd_blocks_parse_line (line, &data)) { g_warning ("parse error #%d in %s version %s: %s", n, filename, unicode_version ? unicode_version : "(null)", line); } break; default: abort (); } while (*end == '\n' && end - content < length) { end++; n++; } g_free (line); head = end; } if (data.name != NULL) { switch (type) { case UCD_NAMES_LIST: unicode_data_new_object (&data); break; case UCD_BLOCKS: unicode_block_new_object (&data); break; default:; } unicode_data_reset (&data); } g_free (content); *list = data.list; return TRUE; failed_to_parse_ucd_names_list: if (error) g_error_free (error); g_clear_pointer (&content, g_free); *list = data.list; return FALSE; } static void block_list_dump (IBusUnicodeBlock *block, GString *buff) { g_return_if_fail (buff != NULL); g_string_append (buff, " /* TRANSLATORS: You might refer the " \ "translations from gucharmap with\n" \ " the following command:\n" \ " msgmerge -C gucharmap.po ibus.po " \ "ibus.pot */\n"); gchar *line = g_strdup_printf (" N_(\"%s\"),\n", ibus_unicode_block_get_name (block)); g_string_append (buff, line); } static void ucd_block_translatable_save (const gchar *filename, GSList *blocks_list) { gchar *content = NULL; gsize length = 0; GError *error = NULL; gchar *p; GString *buff = NULL; int i; GSList *list = blocks_list; g_return_if_fail (filename != NULL); g_return_if_fail (list != NULL); if (!g_file_get_contents (__FILE__, &content, &length, &error)) { g_warning ("Failed to load %s: %s", __FILE__, error->message); g_clear_pointer (&error, g_error_free); return; } buff = g_string_new (NULL); p = content; for (i = 0; i < LICENSE_LINES; i++, p++) { if ((p = strchr (p, '\n')) == NULL) break; } if (p != NULL) { g_string_append (buff, g_strndup (content, p - content)); g_string_append_c (buff, '\n'); } g_clear_pointer (&content, g_free); g_string_append (buff, g_strdup ("\n")); g_string_append (buff, g_strdup_printf ("/* This file is generated by %s. */", __FILE__)); g_string_append (buff, g_strdup ("\n")); g_string_append (buff, g_strdup ("include \n")); g_string_append (buff, g_strdup ("\n")); g_string_append (buff, g_strdup ("#ifndef __IBUS_UNICODE_GEN_H_\n")); g_string_append (buff, g_strdup ("#define __IBUS_UNICODE_GEN_H_\n")); g_string_append (buff, g_strdup ("const static char *unicode_blocks[] = {\n")); g_slist_foreach (list, (GFunc)block_list_dump, buff); g_string_append (buff, g_strdup ("};\n")); g_string_append (buff, g_strdup ("#endif\n")); if (!g_file_set_contents (filename, buff->str, -1, &error)) { g_warning ("Failed to save emoji category file %s: %s", filename, error->message); g_error_free (error); } g_string_free (buff, TRUE); } int main (int argc, char *argv[]) { gchar *prgname; gchar *input_names_list = NULL; gchar *input_blocks = NULL; gchar *output_names_list = NULL; gchar *output_blocks = NULL; gchar *output_blocks_trans = NULL; GOptionEntry entries[] = { { "input-names-list", 'n', 0, G_OPTION_ARG_STRING, &input_names_list, "Parse NamesList.txt FILE in unicode.org ", "FILE" }, { "input-blocks", 'b', 0, G_OPTION_ARG_STRING, &input_blocks, "Parse Blocks.txt FILE in unicode.org ", "FILE" }, { "output-names-list", 'o', 0, G_OPTION_ARG_STRING, &output_names_list, "Save the Unicode data as FILE", "FILE" }, { "output-blocks", 'B', 0, G_OPTION_ARG_STRING, &output_blocks, "Save the Unicode block list as FILE", "FILE" }, { "output-blocks-trans", 'C', 0, G_OPTION_ARG_STRING, &output_blocks_trans, "Save the translatable Unicode blocks as FILE", "FILE" }, { NULL } }; GOptionContext *context; GError *error = NULL; GSList *names_list = NULL; GSList *blocks_list = NULL; #ifdef HAVE_LOCALE_H /* To output emoji warnings. */ setlocale (LC_ALL, ""); #endif prgname = g_path_get_basename (argv[0]); g_set_prgname (prgname); g_free (prgname); context = g_option_context_new (NULL); g_option_context_add_main_entries (context, entries, NULL); if (argc < 3) { g_print ("%s", g_option_context_get_help (context, TRUE, NULL)); g_option_context_free (context); return -1; } if (!g_option_context_parse (context, &argc, &argv, &error)) { g_warning ("Failed options: %s", error->message); g_error_free (error); return -1; } g_option_context_free (context); if (input_names_list) { ucd_parse_file (input_names_list, &names_list, UCD_NAMES_LIST); g_free (input_names_list); } if (output_names_list && names_list) ibus_unicode_data_save (output_names_list, names_list); g_free (output_names_list); if (input_blocks) { ucd_parse_file (input_blocks, &blocks_list, UCD_BLOCKS); g_free (input_blocks); } if (output_blocks && blocks_list) ibus_unicode_block_save (output_blocks, blocks_list); if (output_blocks_trans && blocks_list) ucd_block_translatable_save (output_blocks_trans, blocks_list); g_free (output_blocks); g_free (unicode_version); return 0; } ibus-1.5.22/src/ibusxevent.h0000644000000000000000000002666413623750431012610 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2018 Takao Fujiwara * Copyright (C) 2018 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_X_EVENT_H_ #define __IBUS_X_EVENT_H_ /** * SECTION: ibusxevent * @short_description: Extension Event wrapper object * @title: IBusExtensionEvent * @stability: Unstable * * An IBusXEvent provides a wrapper of XEvent. * * see_also: #IBusComponent, #IBusEngineDesc */ #include "ibusserializable.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_EXTENSION_EVENT \ (ibus_extension_event_get_type ()) #define IBUS_EXTENSION_EVENT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ IBUS_TYPE_EXTENSION_EVENT, \ IBusExtensionEvent)) #define IBUS_EXTENSION_EVENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), \ IBUS_TYPE_EXTENSION_EVENT, \ IBusExtensionEventClass)) #define IBUS_IS_EXTENSION_EVENT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_EXTENSION_EVENT)) #define IBUS_IS_EXTENSION_EVENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_EXTENSION_EVENT)) #define IBUS_EXTENSION_EVENT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), \ IBUS_TYPE_EXTENSION_EVENT, \ IBusExtensionEventClass)) #define IBUS_TYPE_X_EVENT \ (ibus_x_event_get_type ()) #define IBUS_X_EVENT(obj) \ (G_TYPE_CHECK_INSTANCE_CAST ((obj), IBUS_TYPE_X_EVENT, IBusXEvent)) #define IBUS_X_EVENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST ((klass), IBUS_TYPE_X_EVENT, IBusXEventClass)) #define IBUS_IS_X_EVENT(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IBUS_TYPE_X_EVENT)) #define IBUS_IS_X_EVENT_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE ((klass), IBUS_TYPE_X_EVENT)) #define IBUS_X_EVENT_GET_CLASS(obj) \ (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_X_EVENT, IBusXEventClass)) G_BEGIN_DECLS typedef struct _IBusProcessKeyEventData IBusProcessKeyEventData; typedef struct _IBusExtensionEvent IBusExtensionEvent; typedef struct _IBusExtensionEventClass IBusExtensionEventClass; typedef struct _IBusExtensionEventPrivate IBusExtensionEventPrivate; typedef struct _IBusXEvent IBusXEvent; typedef struct _IBusXEventClass IBusXEventClass; typedef struct _IBusXEventPrivate IBusXEventPrivate; /** * IBusProcessKeyEventData: * * IBuProcessKeyEventData properties. */ struct _IBusProcessKeyEventData { /*< public >*/ guint keyval; guint keycode; guint state; }; /** * IBusExtensionEvent: * * IBusExtensionEvent properties. */ struct _IBusExtensionEvent { /*< private >*/ IBusSerializable parent; IBusExtensionEventPrivate *priv; /* instance members */ /*< public >*/ }; struct _IBusExtensionEventClass { /*< private >*/ IBusSerializableClass parent; /* class members */ /*< public >*/ /*< private >*/ /* padding */ gpointer pdummy[10]; }; GType ibus_extension_event_get_type (void); /** * ibus_extension_event_new: * @first_property_name: Name of the first property. * @...: the NULL-terminated arguments of the properties and values. * * Create a new #IBusExtensionEvent. * * Returns: A newly allocated #IBusExtensionEvent. E.g. * ibus_extension_event_new ("name", "emoji", "is-enabled", TRUE, NULL); */ IBusExtensionEvent *ibus_extension_event_new (const gchar *first_property_name, ...); /** * ibus_extension_event_get_version: * @event: An #IBusExtensionEvent. * * Returns: Version of #IBusExtensionEvent */ guint ibus_extension_event_get_version (IBusExtensionEvent *event); /** * ibus_extension_event_get_purpose: * @event: An #IBusExtensionEvent. * * Returns: name of the extension for #IBusXEvent */ const gchar * ibus_extension_event_get_name (IBusExtensionEvent *event); /** * ibus_extension_event_is_enabled: * @event: An #IBusExtensionEvent. * * Returns: %TRUE if the extension is enabled for #IBusExtensionEvent */ gboolean ibus_extension_event_is_enabled (IBusExtensionEvent *event); /** * ibus_extension_event_is_extension: * @event: An #IBusExtensionEvent. * * Returns: %TRUE if the #IBusExtensionEvent is called by an extension. * %FALSE if the #IBusExtensionEvent is called by an active engine or * panel. * If this value is %TRUE, the event is send to ibus-daemon, an active * engine. If it's %FALSE, the event is sned to ibus-daemon, panels. */ gboolean ibus_extension_event_is_extension (IBusExtensionEvent *event); /** * ibus_extension_event_get_params: * @event: An #IBusExtensionEvent. * * Returns: Parameters to enable the extension for #IBusXEvent */ const gchar * ibus_extension_event_get_params (IBusExtensionEvent *event); typedef enum { IBUS_X_EVENT_NOTHING = -1, IBUS_X_EVENT_KEY_PRESS = 0, IBUS_X_EVENT_KEY_RELEASE = 1, IBUS_X_EVENT_OTHER = 2, IBUS_X_EVENT_EVENT_LAST /* helper variable for decls */ } IBusXEventType; /** * IBusXEvent: * @type: event type * * IBusXEvent properties. */ struct _IBusXEvent { /*< private >*/ IBusSerializable parent; IBusXEventPrivate *priv; /* instance members */ /*< public >*/ IBusXEventType event_type; guint window; gint8 send_event; gulong serial; }; struct _IBusXEventClass { /*< private >*/ IBusSerializableClass parent; /* class members */ /*< public >*/ /*< private >*/ /* padding */ gpointer pdummy[10]; }; GType ibus_x_event_get_type (void); /** * ibus_x_event_new: * @first_property_name: Name of the first property. * @...: the NULL-terminated arguments of the properties and values. * * Create a new #IBusXEvent. * * Returns: A newly allocated #IBusXEvent. E.g. * ibus_x_event_new ("event-type", IBUS_X_EVENT_KEY_PRESS, NULL); */ IBusXEvent * ibus_x_event_new (const gchar *first_property_name, ...); /** * ibus_x_event_get_version: * @event: An #IBusXEvent. * * Returns: Version of #IBusXEvent */ guint ibus_x_event_get_version (IBusXEvent *event); /** * ibus_x_event_get_event_type: * @event: An #IBusXEvent. * * Returns: IBusXEventType of #IBusXEvent */ IBusXEventType ibus_x_event_get_event_type (IBusXEvent *event); /** * ibus_x_event_get_window: * @event: An #IBusXEvent. * * Returns: XID of #IBusXEvent */ guint32 ibus_x_event_get_window (IBusXEvent *event); /** * ibus_x_event_get_send_event: * @event: An #IBusXEvent. * * Returns: send_event of #IBusXEvent */ gint8 ibus_x_event_get_send_event (IBusXEvent *event); /** * ibus_x_event_get_serial: * @event: An #IBusXEvent. * * Returns: serial of #IBusXEvent */ gulong ibus_x_event_get_serial (IBusXEvent *event); /** * ibus_x_event_get_time: * @event: An #IBusXEvent. * * Returns: time of #IBusXEvent */ guint32 ibus_x_event_get_time (IBusXEvent *event); /** * ibus_x_event_get_state: * @event: An #IBusXEvent. * * Returns: state of #IBusXEvent */ guint ibus_x_event_get_state (IBusXEvent *event); /** * ibus_x_event_get_keyval: * @event: An #IBusXEvent. * * Returns: keyval of #IBusXEvent */ guint ibus_x_event_get_keyval (IBusXEvent *event); /** * ibus_x_event_get_length: * @event: An #IBusXEvent. * * Returns: length of #IBusXEvent */ gint ibus_x_event_get_length (IBusXEvent *event); /** * ibus_x_event_get_string: * @event: An #IBusXEvent. * * Returns: string of #IBusXEvent */ const gchar * ibus_x_event_get_string (IBusXEvent *event); /** * ibus_x_event_get_hardware_keycode: * @event: An #IBusXEvent. * * Returns: hardware keycode of #IBusXEvent */ guint16 ibus_x_event_get_hardware_keycode (IBusXEvent *event); /** * ibus_x_event_get_group: * @event: An #IBusXEvent. * * Returns: group of #IBusXEvent */ guint8 ibus_x_event_get_group (IBusXEvent *event); /** * ibus_x_event_get_is_modifier: * @event: An #IBusXEvent. * * Returns: is_modifier of #IBusXEvent */ gboolean ibus_x_event_get_is_modifier (IBusXEvent *event); /** * ibus_x_event_get_subwindow: * @event: An #IBusXEvent. * * Returns: subwindow of #IBusXEvent */ guint32 ibus_x_event_get_subwindow (IBusXEvent *event); /** * ibus_x_event_get_root: * @event: An #IBusXEvent. * * Returns: root window of #IBusXEvent */ guint32 ibus_x_event_get_root (IBusXEvent *event); /** * ibus_x_event_get_x: * @event: An #IBusXEvent. * * Returns: x of #IBusXEvent */ gint ibus_x_event_get_x (IBusXEvent *event); /** * ibus_x_event_get_y: * @event: An #IBusXEvent. * * Returns: y of #IBusXEvent */ gint ibus_x_event_get_y (IBusXEvent *event); /** * ibus_x_event_get_x_root: * @event: An #IBusXEvent. * * Returns: x-root of #IBusXEvent */ gint ibus_x_event_get_x_root (IBusXEvent *event); /** * ibus_x_event_get_y_root: * @event: An #IBusXEvent. * * Returns: y-root of #IBusXEvent */ gint ibus_x_event_get_y_root (IBusXEvent *event); /** * ibus_x_event_get_same_screen: * @event: An #IBusXEvent. * * Returns: same_screen of #IBusXEvent */ gboolean ibus_x_event_get_same_screen (IBusXEvent *event); /** * ibus_x_event_get_purpose: * @event: An #IBusXEvent. * * Returns: purpose of #IBusXEvent */ const gchar * ibus_x_event_get_purpose (IBusXEvent *event); G_END_DECLS #endif ibus-1.5.22/src/ibuserror.c0000644000000000000000000000273113623750431012410 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.22/src/ibusengine.c0000644000000000000000000021003713623750431012524 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) 2018-2019 Takao Fujiwara * Copyright (C) 2008-2019 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 "ibusaccelgroup.h" #include "ibusengine.h" #include "ibuskeysyms.h" #include "ibusmarshalers.h" #include "ibusinternal.h" #include "ibusshare.h" #include "ibusxevent.h" #define IBUS_ENGINE_GET_PRIVATE(o) \ ((IBusEnginePrivate *)ibus_engine_get_instance_private (o)) 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; GHashTable *extension_keybindings; gboolean enable_extension; gchar *current_extension_name; }; static guint engine_signals[LAST_SIGNAL] = { 0 }; static IBusText *text_empty; /* 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_WITH_PRIVATE (IBusEngine, ibus_engine, IBUS_TYPE_SERVICE) static const gchar introspection_xml[] = "" " " /* FIXME methods */ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " /* FIXME signals */ " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " /* FIXME properties */ " " " " ""; static const guint IBUS_MODIFIER_FILTER = IBUS_MODIFIER_MASK & ~( IBUS_LOCK_MASK | /* Caps Lock */ IBUS_MOD2_MASK | /* Num Lock */ IBUS_BUTTON1_MASK | IBUS_BUTTON2_MASK | IBUS_BUTTON3_MASK | IBUS_BUTTON4_MASK | IBUS_BUTTON5_MASK | IBUS_SUPER_MASK | IBUS_HYPER_MASK | IBUS_META_MASK); 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_BOOLEAN__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); text_empty = ibus_text_new_from_static_string (""); g_object_ref_sink (text_empty); } static void ibus_engine_init (IBusEngine *engine) { IBusEnginePrivate *priv; engine->priv = priv = IBUS_ENGINE_GET_PRIVATE (engine); priv->surrounding_text = g_object_ref_sink (text_empty); priv->extension_keybindings = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, g_free); } static void ibus_engine_destroy (IBusEngine *engine) { IBusEnginePrivate *priv = engine->priv; g_clear_pointer (&priv->engine_name, g_free); g_clear_pointer (&priv->current_extension_name, g_free); if (priv->surrounding_text) g_clear_object (&priv->surrounding_text); if (priv->extension_keybindings) g_clear_pointer (&priv->extension_keybindings, g_hash_table_destroy); 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_panel_extension (IBusEngine *engine, const gchar *name) { IBusEnginePrivate *priv; IBusExtensionEvent *event; GVariant *data; g_assert (IBUS_IS_ENGINE (engine)); g_assert (name); priv = engine->priv; if (!g_strcmp0 (name, priv->current_extension_name)) priv->enable_extension = !priv->enable_extension; else priv->enable_extension = TRUE; if (priv->enable_extension) { g_free (priv->current_extension_name); priv->current_extension_name = g_strdup (name); } event = ibus_extension_event_new ( "name", name, "is-enabled", priv->enable_extension, NULL); g_assert (IBUS_IS_EXTENSION_EVENT (event)); data = ibus_serializable_serialize_object ( IBUS_SERIALIZABLE (event)); g_assert (data != NULL); ibus_engine_emit_signal (engine, "PanelExtension", g_variant_new ("(v)", data)); g_object_unref (event); } static gboolean ibus_engine_filter_key_event (IBusEngine *engine, guint keyval, guint keycode, guint state) { IBusEnginePrivate *priv; GList *names, *n; IBusProcessKeyEventData *keys; guint modifiers; if ((state & IBUS_RELEASE_MASK) != 0) return FALSE; g_return_val_if_fail (IBUS_IS_ENGINE (engine), FALSE); priv = engine->priv; modifiers = state & IBUS_MODIFIER_FILTER; if (keyval >= IBUS_KEY_A && keyval <= IBUS_KEY_Z && (modifiers & IBUS_SHIFT_MASK) != 0) { keyval = keyval - IBUS_KEY_A + IBUS_KEY_a; } names = g_hash_table_get_keys (priv->extension_keybindings); if (!names) return FALSE; for (n = names; n; n = n->next) { const gchar *name = (const gchar *)n->data; keys = g_hash_table_lookup (priv->extension_keybindings, name); for (; keys; keys++) { if (keys->keyval == 0 && keys->keycode == 0 && keys->state == 0) break; if (keys->keyval == keyval && keys->state == modifiers && (keys->keycode == 0 || keys->keycode == keycode)) { ibus_engine_panel_extension (engine, name); return TRUE; } } } g_list_free (names); return FALSE; } static gboolean ibus_engine_service_authorized_method (IBusService *service, GDBusConnection *connection) { if (ibus_service_get_connection (service) == connection) return TRUE; return FALSE; } static void ibus_engine_service_panel_extension_register_keys (IBusEngine *engine, GVariant *parameters, GDBusMethodInvocation *invocation) { IBusEnginePrivate *priv = engine->priv; GVariant *v1 = NULL; GVariant *v2 = NULL; GVariant *v3 = NULL; GVariant *vkeys = NULL; GVariantIter *iter1 = NULL; GVariantIter *iter2 = NULL; const gchar *name = NULL; guint failure_id = 0; g_variant_get (parameters, "(v)", &v1); if (v1) g_variant_get (v1, "(v)", &v2); else failure_id = 1; if (v2) g_variant_get (v2, "a{sv}", &iter1); else failure_id = 2; if (iter1) { while (g_variant_iter_loop (iter1, "{&sv}", &name, &vkeys)) { if (vkeys) g_variant_get (vkeys, "av", &iter2); if (name && iter2) { IBusProcessKeyEventData *keys = NULL; gint num = 0; while (g_variant_iter_loop (iter2, "v", &v3)) { if (v3) { guint keyval = 0; guint keycode = 0; guint state = 0; g_variant_get (v3, "(iii)", &keyval, &keycode, &state); if (!keys) keys = g_new0 (IBusProcessKeyEventData, 2); else keys = g_renew (IBusProcessKeyEventData, keys, num + 2); keys[num].keyval = keyval; keys[num].keycode = keycode; keys[num].state = state; keys[num + 1].keyval = 0; keys[num + 1].keycode = 0; keys[num + 1].state = 0; g_clear_pointer (&v3, g_variant_unref); num++; } else { failure_id = 5; } } if (num > 0) { g_hash_table_replace (priv->extension_keybindings, g_strdup (name), keys); } else { g_hash_table_remove (priv->extension_keybindings, name); } g_clear_pointer (&iter2, g_variant_iter_free); } else { failure_id = 4; } g_clear_pointer (&vkeys, g_variant_unref); name = NULL; } g_variant_iter_free (iter1); } else { failure_id = 3; } if (failure_id == 0) { g_dbus_method_invocation_return_value (invocation, NULL); } else { g_dbus_method_invocation_return_error ( invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "PanelExtensionRegisterKeys method gives NULL: %d", failure_id); } if (v2) g_variant_unref (v2); if (v1) g_variant_unref (v1); } 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); IBusEnginePrivate *priv = engine->priv; 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 (!ibus_engine_service_authorized_method (service, connection)) 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); if (!retval) { retval = ibus_engine_filter_key_event (engine, keyval, keycode, state); } g_dbus_method_invocation_return_value (invocation, g_variant_new ("(b)", retval)); return; } if (g_strcmp0 (method_name, "PanelExtensionReceived") == 0) { GVariant *arg0 = NULL; IBusExtensionEvent *event = NULL; g_variant_get (parameters, "(v)", &arg0); if (arg0) { event = (IBusExtensionEvent *)ibus_serializable_deserialize_object ( arg0); } if (!event) { g_dbus_method_invocation_return_error ( invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "PanelExtensionReceived method gives NULL"); return; } priv->enable_extension = ibus_extension_event_is_enabled (event); g_dbus_method_invocation_return_value (invocation, NULL); return; } if (g_strcmp0 (method_name, "PanelExtensionRegisterKeys") == 0) { ibus_engine_service_panel_extension_register_keys (engine, parameters, invocation); 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 (!ibus_engine_service_authorized_method (service, connection)) return FALSE; 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.22/src/ibusconfigservice.h0000644000000000000000000002155513623750431014117 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.22/src/ibus.h0000644000000000000000000000405713623750431011346 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) 2018 Takao Fujiwara * Copyright (C) 2008-2018 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 #include #include #include #include #ifndef IBUS_DISABLE_DEPRECATED #include #endif #undef __IBUS_H_INSIDE__ #endif ibus-1.5.22/src/ibusregistry.c0000644000000000000000000005134613623750431013135 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-2019 Takao Fujiwara * Copyright (C) 2015-2019 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 0x00010512 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) \ ((IBusRegistryPrivate *)ibus_registry_get_instance_private (o)) /* 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_WITH_PRIVATE (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; /* 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_warn_if_fail (!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.22/src/IBus-1.0.gir0000644000000000000000000642556013623751442012113 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. Creates a new #IBusBus instance for client use only. It will possibly be limited in what it can do. 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. A newly allocated #IBusInputContext if the "CreateInputContext" call is succeeded, %NULL otherwise. An #IBusBus. Name of client. 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(). A newly allocated #IBusInputContext if the "CreateInputContext" call is succeeded, %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. Name of the currently focused #IBusInputContext if the "CurrentInputContext" call succeeded, %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(). Name of the currently focused IBusInputContext if the "CurrentInputContext" call succeeded, %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 successful, %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 successful, %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(). Return the main service name to use for calls on the ibus connection. at dbus name. An #IBusBus. 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 component to an #IBusBus synchronously. %TRUE if the "RegisterComponent" call is successful, %FALSE otherwise. An #IBusBus. A input engine component. Register a component 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 successful, %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 is for client use only. 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 Check whether the current IBus version is equal to or greater than given major.minor.micro. Major version of ibus. Minor version of ibus. Micro version of ibus. 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. Emoji data likes emoji unicode, annotations, description, category. You can get extended values with g_object_get_properties. Creates a new #IBusEmojiData. emoji property is required. e.g. ibus_emoji_data_new ("emoji", "😁", NULL) A newly allocated #IBusEmojiData. Name of the first property. the NULL-terminated arguments of the properties and values. An #IBusEmojiData list loaded from the saved cache file. A path of the saved dictionary file. Save the list of #IBusEmojiData to the cache file. A path of the saved emoji data. A list of emoji data. Gets the annotation list in #IBusEmojiData. It should not be freed. annotation list property in #IBusEmojiData An #IBusEmojiData Gets the emoji category in #IBusEmojiData. It should not be freed. category property in #IBusEmojiData An #IBusEmojiData Gets the emoji description in #IBusEmojiData. It should not be freed. description property in #IBusEmojiData An #IBusEmojiData Gets the emoji character in #IBusEmojiData. It should not be freed. emoji property in #IBusEmojiData An #IBusEmojiData Sets the annotation list in #IBusEmojiData. An #IBusEmojiData List of emoji annotations Sets the description in #IBusEmojiData. An #IBusEmojiData An emoji description The emoji annotations The emoji category The emoji description The emoji character 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 committed 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. If layout is "default", the engine inherits the current layout and does not change the layout. The layouts "default" and "" are same. E.g. If you switch JP XKB engine and an input method engine (IME), the IME inherits the JP layout. 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) If layout is "default", the engine inherits the current layout and does not change the layout. The layouts "default" and "" are same. E.g. If you switch JP XKB engine and an input method engine (IME), the IME inherits the JP layout. 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. 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. IBusExtensionEvent properties. Create a new #IBusExtensionEvent. A newly allocated #IBusExtensionEvent. E.g. ibus_extension_event_new ("name", "emoji", "is-enabled", TRUE, NULL); Name of the first property. the NULL-terminated arguments of the properties and values. Parameters to enable the extension for #IBusXEvent An #IBusExtensionEvent. Version of #IBusExtensionEvent An #IBusExtensionEvent. %TRUE if the extension is enabled for #IBusExtensionEvent An #IBusExtensionEvent. %TRUE if the #IBusExtensionEvent is called by an extension. %FALSE if the #IBusExtensionEvent is called by an active engine or panel. If this value is %TRUE, the event is send to ibus-daemon, an active engine. If it's %FALSE, the event is sned to ibus-daemon, panels. An #IBusExtensionEvent. %TRUE if the extension is enabled in the #IBusExtensionEvent. %TRUE if the #IBusExtensionEvent is called by an extension. %FALSE if the #IBusExtensionEvent is called by an active engine or panel. If this value is %TRUE, the event is send to ibus-daemon, an active engine. If it's %FALSE, the event is sned to ibus-daemon, panels. Name of the extension in the #IBusExtensionEvent. Parameters to enable the extension in the #IBusExtensionEvent. Version of the #IBusExtensionEvent. 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. An object which is subject to casting. Casts a derived IBusFactoryClass structure into a IBusFactoryClass structure. A class to be casted. Get the class of a given object and cast the class to IBusFactoryClass. An object. 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. D-Bus interface for IBus portal. Checks whether a valid GTypeInstance pointer is of type IBUS_FACTORY. Instance to check for being a IBUS_FACTORY. Checks whether class "is a" valid IBusFactoryClass structure of type IBUS_FACTORY or derived. A class to be checked. 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 whether #IBusInputContext commits pre-edit texts or not. If %TRUE, 'update-preedit-text-with-mode' signal is emitted instead of 'update-preedit-text' signal. If your client receives the 'update-preedit-text-with-mode' signal, the client needs to implement commit_text() of pre-edit text when GtkIMContextClass.focus_out() is called in case an IME desires that behavior but it depends on each IME. See also ibus_engine_update_preedit_text_with_mode(). An #IBusInputContext. %TRUE if your input context commits pre-edit texts with Space or Enter key events or mouse click events. %FALSE if ibus-daemon commits pre-edit texts with those events. The default is %FALSE. The behavior is decided with ibus_engine_update_preedit_text_with_mode() to commit, clear or keep the pre-edit text and this API is important in ibus-hangul. 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. Set the relative cursor location of IBus input context asynchronously. 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 preedit text with the mode. (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. Preedit mode. 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 "destroy" 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 "destroy" 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. D-Bus path for IBus extension panel for emoji. This service provides emoji, Unicode code point, Unicode name features. 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 a text is sent by sending a "CommitText" message to IBus service. An #IBusPanelService An #IBusText 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 preedit is hidden by the panel extension 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 Enable or disable a panel extension with #IBusExtensionEvent. Notify that a data is sent by sending a "PanelExtension" message to IBus panel extension service. An #IBusPanelService A #PanelExtensionEvent which is sent to a panel extension. Register shortcut keys to enable panel extensions with #IBusExtensionEvent. Notify that a data is sent by sending a "PanelExtensionRegisterKeys" message to IBus panel extension service. Seems Vala does not support uint[][3] and use IBusProcessKeyEventData[]. E.g. IBusProcessKeyEventData[] keys = {{ IBUS_KEY_e, 0, IBUS_SHIFT_MASK | IBUS_SUPER_MASK }}; ibus_panel_service_panel_extension_register_keys(panel, "emoji", keys, NULL); An #IBusPanelService the first name of the shortcut keys. This is %NULL " terminated. 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 Notify that the preedit is shown by the panel extension An IBusPanelService Notify that the auxilirary is updated by the panel extension. (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 #IBusPanelService An #IBusText Whether the auxilirary text is visible. Notify that the lookup table is updated by the panel extension. (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 #IBusPanelService An #IBusLookupTable Whether the lookup table is visible. Notify that the preedit is updated by the panel extension (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 #IBusPanelService Update content. Current position of cursor Whether the pre-edit buffer is visible. Emitted when the client application get the ::commit-text-received. Implement the member function IBusPanelServiceClass::commit_text_received in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> A #IBusText 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 ::panel-extension-received. Implement the member function IBusPanelServiceClass::panel_extension_received in extended class to receive this signal. <note><para>Argument @user_data is ignored in this function.</para> </note> A #GVariant Emitted when a key event is received. Implement the member function IBusPanelServiceClass::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 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 set-cursor-location-relative. Implement the member function set_cursor_location_relative() 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. IBuProcessKeyEventData properties. 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 if update succeeded; 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. Address of IBus panel extension service. Address of IBus panel extension service for emoji. This service provides emoji, Unicode code point, Unicode name features. Address of IBus portalservice. 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. Creates a new #IBusUnicodeBlock. block property is required. e.g. ibus_unicode_block_new ("start", 0x0000, "end", "0x007f", "name", "basic", NULL) A newly allocated #IBusUnicodeBlock. Name of the first property. the NULL-terminated arguments of the properties and values. An #IBusUnicodeBlock list loaded from the saved cache file. A path of the saved dictionary file. Save the list of #IBusUnicodeBlock to the cache file. A path of the saved Unicode block. A list of unicode block. Gets the end code point in #IBusUnicodeBlock. end property in #IBusUnicodeBlock An #IBusUnicodeData Gets the name in #IBusUnicodeBlock. It should not be freed. name property in #IBusUnicodeBlock An #IBusUnicodeBlock Gets the start code point in #IBusUnicodeBlock. start property in #IBusUnicodeBlock An #IBusUnicodeData The Uniode end code point The Uniode block name The Uniode start code point Unicode data likes code, name, alias, block-name. You can get extended values with g_object_get_properties. Creates a new #IBusUnicodeData. code property is required. e.g. ibus_unicode_data_new ("code", 0x3042, NULL) A newly allocated #IBusUnicodeData. Name of the first property. the NULL-terminated arguments of the properties and values. An #IBusUnicodeData list loaded from the saved cache file. A path of the saved dictionary file. If the #GObject has "unicode-deserialize-progress" signal, this function will emit (the number of desrialized #IBusUnicodeData, * the total number of #IBusUnicodeData) of uint values with that signal by 100 times. Otherwise %NULL. IBusUnicodeDataLoadAsyncFinish can receive the list of #IBusUnicodeData. A path of the saved dictionary file. If the #GObject has "unicode-deserialize-progress" signal, this function will emit (the number of desrialized #IBusUnicodeData, * the total number of #IBusUnicodeData) of uint values with that signal by 100 times. Otherwise %NULL. cancellable. IBusUnicodeDataLoadAsyncFinish. User data. Save the list of #IBusUnicodeData to the cache file. A path of the saved Unicode data. A list of unicode data. Gets the alias in #IBusUnicodeData. It should not be freed. alias property in #IBusUnicodeData An #IBusUnicodeData Gets the block name in #IBusUnicodeData. It should not be freed. block-name property in #IBusUnicodeData An #IBusUnicodeData Gets the code point in #IBusUnicodeData. code property in #IBusUnicodeData An #IBusUnicodeData Gets the name in #IBusUnicodeData. It should not be freed. name property in #IBusUnicodeData An #IBusUnicodeData Sets the block name in #IBusUnicodeData. An #IBusUnicodeData A block name The Uniode alias name The Uniode block name The Uniode code point The Uniode name This callback can receive the list of #IBusUnicodeData. An IBusXEvent provides a wrapper of XEvent. see_also: #IBusComponent, #IBusEngineDesc Create a new #IBusXEvent. A newly allocated #IBusXEvent. E.g. ibus_x_event_new ("event-type", IBUS_X_EVENT_KEY_PRESS, NULL); Name of the first property. the NULL-terminated arguments of the properties and values. IBusXEventType of #IBusXEvent An #IBusXEvent. group of #IBusXEvent An #IBusXEvent. hardware keycode of #IBusXEvent An #IBusXEvent. is_modifier of #IBusXEvent An #IBusXEvent. keyval of #IBusXEvent An #IBusXEvent. length of #IBusXEvent An #IBusXEvent. purpose of #IBusXEvent An #IBusXEvent. root window of #IBusXEvent An #IBusXEvent. same_screen of #IBusXEvent An #IBusXEvent. send_event of #IBusXEvent An #IBusXEvent. serial of #IBusXEvent An #IBusXEvent. state of #IBusXEvent An #IBusXEvent. string of #IBusXEvent An #IBusXEvent. subwindow of #IBusXEvent An #IBusXEvent. time of #IBusXEvent An #IBusXEvent. Version of #IBusXEvent An #IBusXEvent. XID of #IBusXEvent An #IBusXEvent. x of #IBusXEvent An #IBusXEvent. x-root of #IBusXEvent An #IBusXEvent. y of #IBusXEvent An #IBusXEvent. y-root of #IBusXEvent An #IBusXEvent. IBusXEventType of this IBusXEvent. group of this IBusXEvent. hardware keycode of this IBusXEvent. is_modifier of this IBusXEvent. keyval of this IBusXEvent. keyval of this IBusXEvent. purpose of this IBusXEvent. root window of this IBusXEvent. same_screen of this IBusXEvent. send_event of this IBusXEvent. serial of this IBusXEvent. state of this IBusXEvent. string of this IBusXEvent. subwindow of this IBusXEvent. time of this IBusXEvent. Version of this IBusXEvent. window of this IBusXEvent. x of this IBusXEvent. root-x of this IBusXEvent. x of this IBusXEvent. root-y of this IBusXEvent. 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. Converts an accelerator keyval and modifier mask into a string parseable by gtk_accelerator_parse(). For example, if you pass in #IBUS_KEY_q and #IBUS_CONTROL_MASK, this function returns “<Control>q”. If you need to display accelerators in the user interface, see gtk_accelerator_get_label(). a newly-allocated accelerator name accelerator keyval accelerator modifier mask Parses a string representing an accelerator. The format looks like “<Control>a” or “<Shift><Alt>F1” or “<Release>z” (the last one is for key release). The parser is fairly liberal and allows lower or upper case, and also abbreviations such as “<Ctl>” and “<Ctrl>”. Key names are parsed using gdk_keyval_from_name(). For character keys the name is not the symbol, but the lowercase name, e.g. one would use “<Ctrl>minus” instead of “<Ctrl>-”. If the parse fails, @accelerator_key and @accelerator_mods will be set to 0 (zero). string representing an accelerator return location for accelerator keyval, or %NULL return location for accelerator modifier mask, %NULL Determines whether a given keyval and modifier mask constitute a valid keyboard accelerator. For example, the #IBUS_KEY_a keyval plus #IBUS_CONTROL_MASK is valid - this is a “Ctrl+a” accelerator. But, you can't, for instance, use the #IBUS_KEY_Control_L keyval as an accelerator. %TRUE if the accelerator is valid a GDK keyval modifier mask 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. An Emoji dictionary file loaded from the saved cache file. A hash table of { emoji character, #IBusEmojiData object } is loaded from the saved cache file. Recommend to use ibus_emoji_data_load() instead becase GSList in GHashTable does not work with Gir and Vala. Calls ibus_emoji_data_load() internally. A path of the saved dictionary file. An #IBusEmojiData of @emoji. This API was prepared for the old dict foramat with Gir and Vala but no longer needed. Use ibus_emoji_data_load() instead. An Emoji dictionary an emoji character Saves the Emoji dictionary to the cache file. Recommend to use ibus_emoji_data_save() instead becase GSList in GHashTable does not work with Gir and Vala. Calls ibus_emoji_data_save() internally. The format of the hash table changed and now is { emoji character, #IBusEmojiData object }. A path of the saved dictionary file. An Emoji dictionary 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(). Get a value from attachment of an #IBusSerializable. This macro is an convenient wrapper of ibus_serializable_get_qattachment(). An #IBusSerializable. 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(). An #IBusSerializable. String formatted key for indexing value. Attach a value to an IBusSerializable. This macro is an convenient wrapper of ibus_serializable_set_qattachment(). An IBusSerializable. String formatted key for indexing value. Value to be attached. Should be also serializable. 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.22/src/ibusregistry.h0000644000000000000000000001621013623750431013131 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.22/src/ibusxml.h0000644000000000000000000000627713623750431012075 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.22/src/emoji-parser.c0000644000000000000000000011615013623750431012772 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2016-2018 Takao Fujiwara * Copyright (C) 2016 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 */ /* Convert /usr/share/unicode/cldr/common/annotations/\*.xml and * /usr/share/unicode/emoji/emoji-test.txt * to the dictionary file which look up the Emoji from the annotation. * Get *.xml from https://github.com/fujiwarat/cldr-emoji-annotation * or http://www.unicode.org/repos/cldr/trunk/common/annotations . * Get emoji-test.txt from http://unicode.org/Public/emoji/4.0/ . * en.xml is used for the Unicode annotations and emoji-test.txt is used * for the category, e.g. "Smileys & People". * ASCII emoji annotations are saved in ../data/annotations/en_ascii.xml */ #ifdef HAVE_CONFIG_H #include #endif #include #ifdef HAVE_JSON_GLIB1 #include #endif #ifdef HAVE_LOCALE_H #include #endif #include #include "ibusemoji.h" /* This file has 21 lines about the license at the top of the file. */ #define LICENSE_LINES 21 typedef enum { EMOJI_STRICT, EMOJI_VARIANT, EMOJI_NOVARIANT } EmojiDataSearchType; typedef struct _EmojiData EmojiData; struct _EmojiData { gchar *emoji; gchar *emoji_alternates; GSList *annotations; gboolean is_annotation; gchar *description; gboolean is_tts; gchar *category; gchar *subcategory; gboolean is_derived; GSList *list; EmojiDataSearchType search_type; }; typedef struct _NoTransData NoTransData; struct _NoTransData { const gchar *xml_file; const gchar *xml_derived_file; GSList *emoji_list; }; static gchar *unicode_emoji_version; static void init_annotations (IBusEmojiData *emoji, gpointer user_data) { g_return_if_fail (IBUS_IS_EMOJI_DATA (emoji)); ibus_emoji_data_set_annotations (emoji, NULL); ibus_emoji_data_set_description (emoji, ""); } static void check_no_trans (IBusEmojiData *emoji, NoTransData *no_trans_data) { const gchar *str = NULL; g_return_if_fail (IBUS_IS_EMOJI_DATA (emoji)); if (ibus_emoji_data_get_annotations (emoji) != NULL) return; str = ibus_emoji_data_get_emoji (emoji); if (g_getenv ("IBUS_EMOJI_PARSER_DEBUG") != NULL) { gchar *basename = NULL; if (no_trans_data->xml_file) basename = g_path_get_basename (no_trans_data->xml_file); else if (no_trans_data->xml_derived_file) basename = g_path_get_basename (no_trans_data->xml_derived_file); else basename = g_strdup ("WRONG FILE"); g_warning ("Not found emoji %s in the file %s", str, basename); g_free (basename); } no_trans_data->emoji_list = g_slist_append (no_trans_data->emoji_list, g_strdup (str)); } int strcmp_ibus_emoji_data_str (IBusEmojiData *emoji, const gchar *str) { g_return_val_if_fail (IBUS_IS_EMOJI_DATA (emoji), -1); return g_strcmp0 (ibus_emoji_data_get_emoji (emoji), str); } static void delete_emoji_from_list (const gchar *str, GSList **list) { IBusEmojiData *emoji; g_return_if_fail (list != NULL); GSList *p = g_slist_find_custom (*list, str, (GCompareFunc)strcmp_ibus_emoji_data_str); g_return_if_fail (p != NULL); emoji = p->data; *list = g_slist_remove (*list, emoji); g_object_unref (emoji); } static void reset_emoji_element (EmojiData *data) { g_assert (data != NULL); g_clear_pointer (&data->emoji, g_free); g_clear_pointer (&data->emoji_alternates, g_free); g_slist_free_full (data->annotations, g_free); data->annotations = NULL; g_clear_pointer (&data->description, g_free); } /** * strcmp_novariant: * * Return 0 between non-fully-qualified and fully-qualified emojis. * E.g. U+1F3CC-200D-2642 and U+1F3CC-FE0F-200D-2642-FE0F * in case @a_variant or @b_variant == U+FE0F */ gint strcmp_novariant (const gchar *a, const gchar *b, gunichar a_variant, gunichar b_variant) { gint retval; GString *buff = NULL;; gchar *head = NULL; gchar *p; gchar *variant = NULL; gchar *substr = NULL; if (a_variant > 0) { if (g_utf8_strchr (a, -1, a_variant) != NULL) { buff = g_string_new (NULL); p = head = g_strdup (a); while (*p != '\0') { if ((variant = g_utf8_strchr (p, -1, a_variant)) == NULL) { g_string_append (buff, p); break; } if (p != variant) { substr = g_strndup (p, variant - p); g_string_append (buff, substr); g_free (substr); } p = g_utf8_next_char (variant); } retval = g_strcmp0 (buff->str, b); g_string_free (buff, TRUE); g_free (head); return retval; } else { return -1; } } else if (b_variant > 0) { if (g_utf8_strchr (b, -1, b_variant) != NULL) { buff = g_string_new (NULL); p = head = g_strdup (b); while (*p != '\0') { if ((variant = g_utf8_strchr (p, -1, b_variant)) == NULL) { g_string_append (buff, p); break; } if (p != variant) { substr = g_strndup (p, variant - p); g_string_append (buff, substr); g_free (substr); } p = g_utf8_next_char (variant); } retval = g_strcmp0 (a, buff->str); g_string_free (buff, TRUE); g_free (head); return retval; } else { return -1; } } return g_strcmp0 (a, b); } gint find_emoji_data_list (IBusEmojiData *a, EmojiData *b) { const gchar *a_str; g_return_val_if_fail (IBUS_IS_EMOJI_DATA (a), 0); a_str = ibus_emoji_data_get_emoji (a); switch (b->search_type) { case EMOJI_VARIANT: if (strcmp_novariant (a_str, b->emoji, 0xfe0e, 0) == 0) return 0; else if (strcmp_novariant (a_str, b->emoji, 0xfe0f, 0) == 0) return 0; else return g_strcmp0 (a_str, b->emoji); break; case EMOJI_NOVARIANT: if (strcmp_novariant (a_str, b->emoji, 0, 0xfe0e) == 0) return 0; else if (strcmp_novariant (a_str, b->emoji, 0, 0xfe0f) == 0) return 0; else return g_strcmp0 (a_str, b->emoji); break; default:; } return g_strcmp0 (a_str, b->emoji); } static void emoji_data_update_object (EmojiData *data, IBusEmojiData *emoji) { GSList *src_annotations = data->annotations; GSList *dest_annotations = ibus_emoji_data_get_annotations (emoji); GSList *l; gboolean updated_annotations = FALSE; for (l = src_annotations; l; l = l->next) { GSList *duplicated = g_slist_find_custom (dest_annotations, l->data, (GCompareFunc) g_strcmp0); if (duplicated == NULL) { dest_annotations = g_slist_append (dest_annotations, g_strdup (l->data)); updated_annotations = TRUE; } } if (updated_annotations) { ibus_emoji_data_set_annotations ( emoji, g_slist_copy_deep (dest_annotations, (GCopyFunc) g_strdup, NULL)); } if (data->description) ibus_emoji_data_set_description (emoji, data->description); } static void emoji_data_new_object (EmojiData *data) { IBusEmojiData *emoji = ibus_emoji_data_new ("emoji", data->emoji, "annotations", data->annotations, "description", data->description ? data->description : g_strdup (""), "category", data->category ? data->category : g_strdup (""), NULL); data->list = g_slist_append (data->list, emoji); } static void update_emoji_list (EmojiData *data, gboolean base_update) { GSList *list; data->search_type = EMOJI_STRICT; list = g_slist_find_custom ( data->list, data, (GCompareFunc) find_emoji_data_list); if (list) { emoji_data_update_object (data, list->data); return; } else if (base_update) { emoji_data_new_object (data); return; } if (g_utf8_strchr (data->emoji, -1, 0xfe0e) == NULL && g_utf8_strchr (data->emoji, -1, 0xfe0f) == NULL) { data->search_type = EMOJI_VARIANT; list = g_slist_find_custom ( data->list, data, (GCompareFunc) find_emoji_data_list); if (list) { emoji_data_update_object (data, list->data); return; } } else { data->search_type = EMOJI_NOVARIANT; list = g_slist_find_custom ( data->list, data, (GCompareFunc) find_emoji_data_list); if (list) { emoji_data_update_object (data, list->data); return; } } emoji_data_new_object (data); } static void unicode_annotations_start_element_cb (GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer user_data, GError **error) { EmojiData *data = (EmojiData *) user_data; int i; const gchar *attribute; const gchar *value; g_assert (data != NULL); if (g_strcmp0 (element_name, "annotation") != 0) return; reset_emoji_element (data); for (i = 0; (attribute = attribute_names[i]) != NULL; i++) { value = attribute_values[i]; if (g_strcmp0 (attribute, "cp") == 0) { if (value == NULL || *value == '\0') { g_warning ("cp='' in unicode.org annotations file"); return; } else if (value[0] == '[' && value[strlen(value) - 1] == ']') { g_warning ("cp!='[emoji]' is an old format in unicode.org" " annotations file"); data->emoji = g_strndup (value + 1, strlen(value) - 2); } else { data->emoji = g_strdup (value); } } /* tts seems 'text to speach' and it would be a description * instead of annotation. */ else if (g_strcmp0 (attribute, "type") == 0) { if (g_strcmp0 (value, "tts") == 0) { data->is_tts = TRUE; } } } data->is_annotation = TRUE; } static void unicode_annotations_end_element_cb (GMarkupParseContext *context, const gchar *element_name, gpointer user_data, GError **error) { EmojiData *data = (EmojiData *) user_data; g_assert (data != NULL); if (!data->is_annotation) return; update_emoji_list (data, FALSE); data->is_annotation = FALSE; data->is_tts = FALSE; } void unicode_annotations_text_cb (GMarkupParseContext *context, const gchar *text, gsize text_len, gpointer user_data, GError **error) { EmojiData *data = (EmojiData *) user_data; gchar **annotations = NULL; const gchar *annotation; int i; g_assert (data != NULL); if (!data->is_annotation) return; if (data->is_tts) { if (data->description) { g_warning ("Duplicated 'tts' is found: %s: %s", data->description, text); g_clear_pointer (&data->description, g_free); } data->description = g_strdup (text); return; } annotations = g_strsplit (text, " | ", -1); for (i = 0; (annotation = annotations[i]) != NULL; i++) { GSList *duplicated = g_slist_find_custom (data->annotations, annotation, (GCompareFunc) g_strcmp0); if (duplicated == NULL) { data->annotations = g_slist_prepend (data->annotations, g_strdup (annotation)); } } g_strfreev (annotations); } static gboolean unicode_annotations_parse_xml_file (const gchar *filename, GSList **list, gboolean is_derived) { gchar *content = NULL; gsize length = 0; GError *error = NULL; const static GMarkupParser parser = { unicode_annotations_start_element_cb, unicode_annotations_end_element_cb, unicode_annotations_text_cb, NULL, NULL }; GMarkupParseContext *context = NULL; EmojiData data = { 0, }; g_return_val_if_fail (filename != NULL, FALSE); g_return_val_if_fail (list != NULL, FALSE); if (!g_file_get_contents (filename, &content, &length, &error)) { g_warning ("Failed to load %s: %s", filename, error ? error->message : ""); goto failed_to_parse_unicode_annotations; } data.list = *list; data.is_derived = is_derived; context = g_markup_parse_context_new (&parser, 0, &data, NULL); if (!g_markup_parse_context_parse (context, content, length, &error)) { g_warning ("Failed to parse %s: %s", filename, error->message); goto failed_to_parse_unicode_annotations; } reset_emoji_element (&data); g_markup_parse_context_free (context); g_free (content); *list = data.list; return TRUE; failed_to_parse_unicode_annotations: if (error) g_error_free (error); if (data.list) g_slist_free (data.list); if (context) g_markup_parse_context_free (context); g_free (content); return FALSE; } static gboolean unicode_emoji_test_parse_unicode (const gchar *line, EmojiData *data) { GString *emoji = NULL; gchar *endptr = NULL; guint32 uch; static gchar outbuf[8] = { 0, }; g_return_val_if_fail (line != NULL, FALSE); emoji = g_string_new (NULL); while (line && *line) { uch = g_ascii_strtoull (line, &endptr, 16); outbuf[g_unichar_to_utf8 (uch, outbuf)] = '\0'; g_string_append (emoji, outbuf); if (*endptr == '\0') { break; } line = endptr + 1; while (*line == ' ') line++; endptr = NULL; } data->emoji = g_string_free (emoji, FALSE); return TRUE; } static gboolean unicode_emoji_test_parse_description (const gchar *line, EmojiData *data) { g_return_val_if_fail (line != NULL, FALSE); /* skip spaces */ while (*line == ' ') line++; /* skip emoji */ while (*line != ' ') line++; /* skip spaces */ while (*line == ' ') line++; if (*line == '\0') return FALSE; data->description = g_strdup (line); return TRUE; } #define EMOJI_VERSION_TAG "# Version: " #define EMOJI_GROUP_TAG "# group: " #define EMOJI_SUBGROUP_TAG "# subgroup: " #define EMOJI_NON_FULLY_QUALIFIED_TAG "non-fully-qualified" static gboolean unicode_emoji_test_parse_line (const gchar *line, EmojiData *data) { int tag_length; gchar **segments = NULL; g_return_val_if_fail (line != NULL, FALSE); tag_length = strlen (EMOJI_VERSION_TAG); if (strlen (line) > tag_length && g_ascii_strncasecmp (line, EMOJI_VERSION_TAG, tag_length) == 0) { unicode_emoji_version = g_strdup (line + tag_length); return TRUE; } tag_length = strlen (EMOJI_GROUP_TAG); if (strlen (line) > tag_length && g_ascii_strncasecmp (line, EMOJI_GROUP_TAG, tag_length) == 0) { g_free (data->category); g_clear_pointer (&data->subcategory, g_free); data->category = g_strdup (line + tag_length); return TRUE; } tag_length = strlen (EMOJI_SUBGROUP_TAG); if (strlen (line) > tag_length && g_ascii_strncasecmp (line, EMOJI_SUBGROUP_TAG, tag_length) == 0) { g_free (data->subcategory); data->subcategory = g_strdup (line + tag_length); return TRUE; } if (*line == '#') return TRUE; segments = g_strsplit (line, "; ", 2); if (segments[1] == NULL) { g_warning ("No qualified line\n"); goto failed_to_parse_unicode_emoji_test_line; return FALSE; } tag_length = strlen (EMOJI_NON_FULLY_QUALIFIED_TAG); /* Ignore the non-fully-qualified emoji */ if (g_ascii_strncasecmp (segments[1], EMOJI_NON_FULLY_QUALIFIED_TAG, tag_length) == 0) { g_strfreev (segments); return TRUE; } unicode_emoji_test_parse_unicode (segments[0], data); g_strfreev (segments); segments = g_strsplit (line, "# ", 2); if (segments[1] == NULL) { g_warning ("No description line\n"); goto failed_to_parse_unicode_emoji_test_line; return FALSE; } unicode_emoji_test_parse_description (segments[1], data); g_strfreev (segments); if (data->annotations == NULL) { if (data->subcategory) { int i; gchar *amp; segments = g_strsplit(data->subcategory, "-", -1); for (i = 0; segments && segments[i]; i++) { if ((amp = strchr (segments[i], '&')) != NULL) { if (amp - segments[i] <= 1) { g_warning ("Wrong ampersand"); goto failed_to_parse_unicode_emoji_test_line; } data->annotations = g_slist_append ( data->annotations, g_strndup (segments[i], amp - segments[i] - 1)); data->annotations = g_slist_append ( data->annotations, g_strdup (amp + 1)); continue; } data->annotations = g_slist_append (data->annotations, g_strdup (segments[i])); } g_strfreev (segments); } else { g_warning ("No subcategory line\n"); goto failed_to_parse_unicode_emoji_test_line; } } update_emoji_list (data, TRUE); reset_emoji_element (data); return TRUE; failed_to_parse_unicode_emoji_test_line: if (segments) g_strfreev (segments); reset_emoji_element (data); return FALSE; } #undef EMOJI_VERSION_TAG #undef EMOJI_GROUP_TAG #undef EMOJI_SUBGROUP_TAG #undef EMOJI_NON_FULLY_QUALIFIED_TAG static gboolean unicode_emoji_test_parse_file (const gchar *filename, GSList **list) { gchar *content = NULL; gsize length = 0; GError *error = NULL; gchar *head, *end, *line; int n = 1; EmojiData data = { 0, }; g_return_val_if_fail (filename != NULL, FALSE); g_return_val_if_fail (list != NULL, FALSE); if (!g_file_get_contents (filename, &content, &length, &error)) { g_warning ("Failed to load %s: %s", filename, error ? error->message : ""); goto failed_to_parse_unicode_emoji_test; } head = end = content; while (*end == '\n' && end - content < length) { end++; n++; } head = end; data.list = *list; while (end - content < length) { while (*end != '\n' && end - content < length) end++; if (end - content >= length) break; line = g_strndup (head, end - head); if (!unicode_emoji_test_parse_line (line, &data)) g_warning ("parse error #%d in %s version %s: %s", n, filename, unicode_emoji_version ? unicode_emoji_version : "(null)", line); while (*end == '\n' && end - content < length) { end++; n++; } g_free (line); head = end; } g_free (content); g_free (unicode_emoji_version); *list = data.list; return TRUE; failed_to_parse_unicode_emoji_test: if (error) g_error_free (error); g_clear_pointer (&content, g_free); return FALSE; } static gboolean unicode_emoji_parse_dir (const gchar *dirname, GSList **list) { gchar *filename = NULL; g_return_val_if_fail (dirname != NULL, FALSE); g_return_val_if_fail (list != NULL, FALSE); filename = g_build_path ("/", dirname, "emoji-test.txt", NULL); if (!unicode_emoji_test_parse_file (filename, list)) { g_free (filename); return FALSE; } g_free (filename); return TRUE; } #ifdef HAVE_JSON_GLIB1 static gboolean parse_emojione_unicode (JsonNode *node, EmojiData *data, gboolean is_alternates) { const gchar *str, *unicode; gchar *endptr = NULL; guint32 uch; static gchar outbuf[8] = { 0, }; GString *emoji; if (json_node_get_node_type (node) != JSON_NODE_VALUE) { g_warning ("'unicode' element is not string"); return FALSE; } emoji = g_string_new (NULL); str = unicode = json_node_get_string (node); while (str && *str) { uch = g_ascii_strtoull (str, &endptr, 16); outbuf[g_unichar_to_utf8 (uch, outbuf)] = '\0'; g_string_append (emoji, outbuf); if (*endptr == '\0') { break; } else { switch (*endptr) { case '-': endptr++; break; default: g_warning ("Failed to parse unicode %s", unicode); } } str = endptr; endptr = NULL; } if (is_alternates) data->emoji_alternates = g_string_free (emoji, FALSE); else data->emoji = g_string_free (emoji, FALSE); return TRUE; } static gboolean parse_emojione_shortname (JsonNode *node, EmojiData *data) { #if 0 const gchar *shortname; gchar *head, *s; int length; GSList *duplicated; if (json_node_get_node_type (node) != JSON_NODE_VALUE) { g_warning ("'shortname' element is not string"); return FALSE; } /* The format is ':short_name:' */ shortname = json_node_get_string (node); if (shortname == 0 || *shortname == '\0') return TRUE; if (*shortname != ':') { g_warning ("'shortname' format is different: %s", shortname); return FALSE; } length = strlen (shortname); head = g_new0 (gchar, length); strcpy (head, shortname + 1); for (s = head; *s; s++) { if (*s == ':') { *s = '\0'; break; } else if (*s == '_') { *s = ' '; } } if (head == NULL || *head == '\0') { g_warning ("'shortname' format is different: %s", shortname); g_free (head); return FALSE; } duplicated = g_slist_find_custom (data->annotations, head, (GCompareFunc) g_strcmp0); if (duplicated == NULL) { data->annotations = g_slist_prepend (data->annotations, head); } else { g_free (head); } #endif return TRUE; } static gboolean parse_emojione_name (JsonNode *node, EmojiData *data) { const gchar *name; if (json_node_get_node_type (node) != JSON_NODE_VALUE) { g_warning ("'name' element is not string"); return FALSE; } name = json_node_get_string (node); if (name == NULL || *name == '\0') return TRUE; data->description = g_strdup (name); return TRUE; } static gboolean parse_emojione_category (JsonNode *node, EmojiData *data) { const gchar *category; GSList *duplicated; if (json_node_get_node_type (node) != JSON_NODE_VALUE) { g_warning ("'category' element is not string"); return FALSE; } category = json_node_get_string (node); if (category == NULL || *category == '\0') return TRUE; data->category = g_strdup (category); duplicated = g_slist_find_custom (data->annotations, category, (GCompareFunc) g_strcmp0); if (duplicated == NULL) { data->annotations = g_slist_prepend (data->annotations, g_strdup (category)); } return TRUE; } #ifdef EMOJIONE_ALIASES_ASCII_PRINT static gchar * text_to_entity (const gchar *text) { gchar *p; GString *buff = g_string_new (NULL); for (p = text; *p; p++) { switch (*p) { case '<': g_string_append (buff, "<"); break; case '>': g_string_append (buff, ">"); break; case '&': g_string_append (buff, "&"); break; default: g_string_append_c (buff, *p); } } g_string_free (buff, FALSE); } #endif static gboolean parse_emojione_aliases_ascii (JsonNode *node, EmojiData *data) { JsonArray *aliases_ascii; guint i, length; if (json_node_get_node_type (node) != JSON_NODE_ARRAY) { g_warning ("'aliases_ascii' element is not array"); return FALSE; } aliases_ascii = json_node_get_array (node); length = json_array_get_length (aliases_ascii); for (i = 0; i < length; i++) { #ifdef EMOJIONE_ALIASES_ASCII_PRINT if (i == 0) printf (" ", data->emoji); #endif const gchar *alias = json_array_get_string_element (aliases_ascii, i); GSList *duplicated = g_slist_find_custom (data->annotations, alias, (GCompareFunc) g_strcmp0); if (duplicated == NULL) { #ifdef EMOJIONE_ALIASES_ASCII_PRINT gchar *entity = text_to_entity (alias); if (i != length - 1) printf ("%s | ", entity); else printf ("%s\n", entity); g_free (entity); #endif data->annotations = g_slist_prepend (data->annotations, g_strdup (alias)); } } return TRUE; } static gboolean parse_emojione_keywords (JsonNode *node, EmojiData *data) { #if 0 JsonArray *keywords; guint i, length; if (json_node_get_node_type (node) != JSON_NODE_ARRAY) { g_warning ("'keywords' element is not array"); return FALSE; } keywords = json_node_get_array (node); length = json_array_get_length (keywords); for (i = 0; i < length; i++) { const gchar *keyword = json_array_get_string_element (keywords, i); GSList *duplicated = g_slist_find_custom (data->annotations, keyword, (GCompareFunc) g_strcmp0); if (duplicated == NULL) { data->annotations = g_slist_prepend (data->annotations, g_strdup (keyword)); } } #endif return TRUE; } static gboolean parse_emojione_emoji_data (JsonNode *node, const gchar *member, EmojiData *data) { if (g_strcmp0 (member, "unicode") == 0) return parse_emojione_unicode (node, data, FALSE); else if (g_strcmp0 (member, "unicode_alt") == 0) return parse_emojione_unicode (node, data, TRUE); else if (g_strcmp0 (member, "unicode_alternates") == 0) return parse_emojione_unicode (node, data, TRUE); else if (g_strcmp0 (member, "shortname") == 0) return parse_emojione_shortname (node, data); else if (g_strcmp0 (member, "name") == 0) return parse_emojione_name (node, data); else if (g_strcmp0 (member, "category") == 0) return parse_emojione_category (node, data); else if (g_strcmp0 (member, "aliases_ascii") == 0) return parse_emojione_aliases_ascii (node, data); else if (g_strcmp0 (member, "keywords") == 0) return parse_emojione_keywords (node, data); return TRUE; } static gboolean parse_emojione_element (JsonNode *node, EmojiData *data) { JsonObject *object; GList *members, *m; if (json_node_get_node_type (node) != JSON_NODE_OBJECT) { return FALSE; } reset_emoji_element (data); object = json_node_get_object (node); m = members = json_object_get_members (object); while (m) { const gchar *member = (const gchar *) m->data; if (!parse_emojione_emoji_data (json_object_get_member (object, member), member, data)) { g_list_free (members); return FALSE; } m = m->next; } g_list_free (members); update_emoji_list (data, TRUE); return TRUE; } static gboolean emojione_parse_json_file (const gchar *filename, GSList **list) { JsonParser *parser = json_parser_new (); JsonNode *node; JsonObject *object; GList *members, *m; GError *error = NULL; EmojiData data = { 0, }; g_return_val_if_fail (filename != NULL, FALSE); g_return_val_if_fail (list != NULL, FALSE); if (!json_parser_load_from_file (parser, filename, &error)) { g_error ("%s", error->message); g_error_free (error); goto fail_to_json_file; } node = json_parser_get_root (parser); if (json_node_get_node_type (node) != JSON_NODE_OBJECT) { g_warning ("Json file does not have Json object %s", filename); goto fail_to_json_file; } object = json_node_get_object (node); members = json_object_get_members (object); data.list = *list; m = members; while (m) { const gchar *member = (const gchar *) m->data; if (!parse_emojione_element (json_object_get_member (object, member), &data)) { g_warning ("Failed to parse member '%s' in %s", member, filename); } m = m->next; } g_list_free (members); reset_emoji_element (&data); g_object_unref (parser); *list = data.list; return TRUE; fail_to_json_file: g_object_unref (parser); return FALSE; } #endif /* HAVE_JSON_GLIB1 */ static void emoji_data_list_unify_categories (IBusEmojiData *data, GSList **list) { g_return_if_fail (IBUS_IS_EMOJI_DATA (data)); g_return_if_fail (list != NULL); const gchar *category = ibus_emoji_data_get_category (data); if (*category == '\0') return; if (g_slist_find_custom (*list, category, (GCompareFunc)g_strcmp0) == NULL) *list = g_slist_append (*list, g_strdup (category)); } static void category_list_dump (const gchar *category, GString *buff) { g_return_if_fail (buff != NULL); const gchar *line = g_strdup_printf (" N_(\"%s\"),\n", category); g_string_append (buff, line); } static void category_file_save (const gchar *filename, GSList *list) { gchar *content = NULL; gsize length = 0; GError *error = NULL; gchar *p; GString *buff = NULL; int i; GSList *list_categories = NULL; g_return_if_fail (filename != NULL); g_return_if_fail (list != NULL); g_slist_foreach (list, (GFunc)emoji_data_list_unify_categories, &list_categories); if (list_categories == NULL) { g_warning ("Not found categories in IBusEmojiData list"); return; } if (!g_file_get_contents (__FILE__, &content, &length, &error)) { g_warning ("Failed to load %s: %s", __FILE__, error->message); g_clear_pointer (&error, g_error_free); return; } buff = g_string_new (NULL); p = content; for (i = 0; i < LICENSE_LINES; i++, p++) { if ((p = strchr (p, '\n')) == NULL) break; } if (p != NULL) { g_string_append (buff, g_strndup (content, p - content)); g_string_append_c (buff, '\n'); } g_clear_pointer (&content, g_free); g_string_append (buff, g_strdup ("\n")); g_string_append (buff, g_strdup_printf ("/* This file is generated by %s. */", __FILE__)); g_string_append (buff, g_strdup ("\n")); g_string_append (buff, g_strdup ("include \n")); g_string_append (buff, g_strdup ("\n")); g_string_append (buff, g_strdup ("#ifndef __IBUS_EMOJI_GEN_H_\n")); g_string_append (buff, g_strdup ("#define __IBUS_EMOJI_GEN_H_\n")); g_string_append (buff, g_strdup ("const static char *unicode_emoji_categories[] = {\n")); list_categories = g_slist_sort (list_categories, (GCompareFunc)g_strcmp0); g_slist_foreach (list_categories, (GFunc)category_list_dump, buff); g_slist_free (list_categories); g_string_append (buff, g_strdup ("};\n")); g_string_append (buff, g_strdup ("#endif\n")); if (!g_file_set_contents (filename, buff->str, -1, &error)) { g_warning ("Failed to save emoji category file %s: %s", filename, error->message); g_error_free (error); } g_string_free (buff, TRUE); } int main (int argc, char *argv[]) { gchar *prgname; #ifdef HAVE_JSON_GLIB1 gchar *json_file = NULL; #endif gchar *emoji_dir = NULL; gchar *xml_file = NULL; gchar *xml_derived_file = NULL; gchar *xml_ascii_file = NULL; gchar *output = NULL; gchar *output_category = NULL; GOptionEntry entries[] = { #ifdef HAVE_JSON_GLIB1 { "json", 'j', 0, G_OPTION_ARG_STRING, &json_file, "Parse Emoji One JSON file", "JSON" }, #endif { "unicode-emoji-dir", 'd', 0, G_OPTION_ARG_STRING, &emoji_dir, "Parse Emoji files in DIRECTORY which includes emoji-test.txt " \ "emoji-sequences.txt emoji-zwj-sequences.txt in unicode.org", "DIRECTORY" }, { "out", 'o', 0, G_OPTION_ARG_STRING, &output, "Save the emoji data as FILE", "FILE" }, { "out-category", 'C', 0, G_OPTION_ARG_STRING, &output_category, "Save the translatable categories as FILE", "FILE" }, { "xml", 'x', 0, G_OPTION_ARG_STRING, &xml_file, "Parse Unocode.org ANNOTATIONS file", "ANNOTATIONS" }, { "xml-derived", 'X', 0, G_OPTION_ARG_STRING, &xml_derived_file, "Parse Unocode.org derived ANNOTATIONS file", "ANNOTATIONS" }, { "xml-ascii", 'A', 0, G_OPTION_ARG_STRING, &xml_ascii_file, "Parse ASCII ANNOTATIONS file", "ANNOTATIONS" }, { NULL } }; GOptionContext *context; GError *error = NULL; GSList *list = NULL; gboolean is_en = TRUE; #ifdef HAVE_LOCALE_H /* To output emoji warnings. */ setlocale (LC_ALL, ""); #endif prgname = g_path_get_basename (argv[0]); g_set_prgname (prgname); g_free (prgname); context = g_option_context_new (NULL); g_option_context_add_main_entries (context, entries, NULL); if (argc < 3) { g_print ("%s", g_option_context_get_help (context, TRUE, NULL)); g_option_context_free (context); return -1; } if (!g_option_context_parse (context, &argc, &argv, &error)) { g_warning ("Failed options: %s", error->message); g_error_free (error); return -1; } g_option_context_free (context); #ifdef HAVE_JSON_GLIB1 if (json_file) emojione_parse_json_file (json_file, &list); #endif if (emoji_dir) unicode_emoji_parse_dir (emoji_dir, &list); if (list) { #define CHECK_IS_EN(file) if ((file)) { \ gchar *basename = g_path_get_basename ((file)); \ is_en = (g_ascii_strncasecmp (basename, "en.", 3) == 0) ? \ TRUE : FALSE; \ g_free (basename); \ } CHECK_IS_EN(xml_derived_file); CHECK_IS_EN(xml_file); #undef CHECK_IS_EN /* Use English emoji-test.txt to get fully-qualified. */ if (!is_en) g_slist_foreach (list, (GFunc)init_annotations, NULL); } if (xml_file) unicode_annotations_parse_xml_file (xml_file, &list, FALSE); if (xml_derived_file) unicode_annotations_parse_xml_file (xml_derived_file, &list, TRUE); if (xml_ascii_file) unicode_annotations_parse_xml_file (xml_ascii_file, &list, FALSE); if (list != NULL && !is_en) { /* If emoji-test.txt has an emoji but $lang.xml does not, clear it * since the language dicts do not want English annotations. */ NoTransData no_trans_data = { xml_file, xml_derived_file, NULL }; g_slist_foreach (list, (GFunc)check_no_trans, &no_trans_data); if (no_trans_data.emoji_list) { g_slist_foreach (no_trans_data.emoji_list, (GFunc)delete_emoji_from_list, &list); g_slist_free_full (no_trans_data.emoji_list, g_free); } } if (list != NULL && output) ibus_emoji_data_save (output, list); if (list != NULL && output_category) category_file_save (output_category, list); if (list) g_slist_free (list); return 0; } ibus-1.5.22/src/ibusservice.c0000644000000000000000000006330513623750431012723 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) 2015-2019 Takao Fujiwara * Copyright (C) 2008-2019 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) \ ((IBusServicePrivate *)ibus_service_get_instance_private (o)) 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; static gint ibus_service_private_offset; static inline gpointer ibus_service_get_instance_private (IBusService *self) { return (G_STRUCT_MEMBER_P (self, ibus_service_private_offset)); } 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 finalize */ 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); ibus_service_private_offset = g_type_add_instance_private (type, sizeof (IBusServicePrivate)); } 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)); if (ibus_service_private_offset) { g_type_class_adjust_private_offset (class, &ibus_service_private_offset); } 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) ); } 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) { GArray *array = NULL; GArray *interfaces; GDBusInterfaceInfo **p; 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); 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; } interfaces = IBUS_SERVICE_GET_CLASS (service)->interfaces; g_assert (interfaces); p = (GDBusInterfaceInfo **)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.22/src/ibusenginedesc.c0000644000000000000000000007675013623750431013377 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-2019 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) \ ((IBusEngineDescPrivate *)ibus_engine_desc_get_instance_private (o)) // 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_WITH_PRIVATE (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; /* 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.22/src/ibuslookuptable.c0000644000000000000000000003352613623750431013606 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.22/src/ibuskeysyms-compat.h0000644000000000000000000020351513623750431014254 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.22/src/ibusunicodegen.h0000644000000000000000000016466013623751563013425 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2018 Takao Fujiwara * Copyright (C) 2018 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 file is generated by unicode-parser.c. */ include #ifndef __IBUS_UNICODE_GEN_H_ #define __IBUS_UNICODE_GEN_H_ const static char *unicode_blocks[] = { /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Basic Latin"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Latin-1 Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Latin Extended-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Latin Extended-B"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("IPA Extensions"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Spacing Modifier Letters"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Combining Diacritical Marks"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Greek and Coptic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Cyrillic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Cyrillic Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Armenian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Hebrew"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Arabic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Syriac"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Arabic Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Thaana"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("NKo"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Samaritan"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Mandaic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Syriac Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Arabic Extended-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Devanagari"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Bengali"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Gurmukhi"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Gujarati"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Oriya"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tamil"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Telugu"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Kannada"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Malayalam"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Sinhala"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Thai"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Lao"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tibetan"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Myanmar"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Georgian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Hangul Jamo"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ethiopic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ethiopic Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Cherokee"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Unified Canadian Aboriginal Syllabics"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ogham"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Runic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tagalog"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Hanunoo"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Buhid"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tagbanwa"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Khmer"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Mongolian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Unified Canadian Aboriginal Syllabics Extended"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Limbu"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tai Le"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("New Tai Lue"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Khmer Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Buginese"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tai Tham"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Combining Diacritical Marks Extended"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Balinese"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Sundanese"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Batak"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Lepcha"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ol Chiki"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Cyrillic Extended-C"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Georgian Extended"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Sundanese Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Vedic Extensions"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Phonetic Extensions"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Phonetic Extensions Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Combining Diacritical Marks Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Latin Extended Additional"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Greek Extended"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("General Punctuation"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Superscripts and Subscripts"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Currency Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Combining Diacritical Marks for Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Letterlike Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Number Forms"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Arrows"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Mathematical Operators"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Miscellaneous Technical"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Control Pictures"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Optical Character Recognition"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Enclosed Alphanumerics"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Box Drawing"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Block Elements"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Geometric Shapes"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Miscellaneous Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Dingbats"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Miscellaneous Mathematical Symbols-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Supplemental Arrows-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Braille Patterns"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Supplemental Arrows-B"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Miscellaneous Mathematical Symbols-B"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Supplemental Mathematical Operators"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Miscellaneous Symbols and Arrows"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Glagolitic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Latin Extended-C"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Coptic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Georgian Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tifinagh"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ethiopic Extended"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Cyrillic Extended-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Supplemental Punctuation"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Radicals Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Kangxi Radicals"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ideographic Description Characters"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Symbols and Punctuation"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Hiragana"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Katakana"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Bopomofo"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Hangul Compatibility Jamo"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Kanbun"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Bopomofo Extended"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Strokes"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Katakana Phonetic Extensions"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Enclosed CJK Letters and Months"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Compatibility"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Unified Ideographs Extension A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Yijing Hexagram Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Unified Ideographs"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Yi Syllables"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Yi Radicals"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Lisu"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Vai"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Cyrillic Extended-B"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Bamum"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Modifier Tone Letters"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Latin Extended-D"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Syloti Nagri"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Common Indic Number Forms"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Phags-pa"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Saurashtra"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Devanagari Extended"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Kayah Li"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Rejang"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Hangul Jamo Extended-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Javanese"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Myanmar Extended-B"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Cham"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Myanmar Extended-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tai Viet"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Meetei Mayek Extensions"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ethiopic Extended-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Latin Extended-E"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Cherokee Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Meetei Mayek"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Hangul Syllables"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Hangul Jamo Extended-B"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("High Surrogates"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("High Private Use Surrogates"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Low Surrogates"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Private Use Area"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Compatibility Ideographs"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Alphabetic Presentation Forms"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Arabic Presentation Forms-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Variation Selectors"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Vertical Forms"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Combining Half Marks"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Compatibility Forms"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Small Form Variants"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Arabic Presentation Forms-B"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Halfwidth and Fullwidth Forms"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Specials"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Linear B Syllabary"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Linear B Ideograms"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Aegean Numbers"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ancient Greek Numbers"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ancient Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Phaistos Disc"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Lycian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Carian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Coptic Epact Numbers"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Old Italic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Gothic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Old Permic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ugaritic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Old Persian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Deseret"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Shavian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Osmanya"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Osage"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Elbasan"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Caucasian Albanian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Linear A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Cypriot Syllabary"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Imperial Aramaic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Palmyrene"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Nabataean"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Hatran"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Phoenician"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Lydian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Meroitic Hieroglyphs"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Meroitic Cursive"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Kharoshthi"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Old South Arabian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Old North Arabian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Manichaean"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Avestan"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Inscriptional Parthian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Inscriptional Pahlavi"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Psalter Pahlavi"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Old Turkic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Old Hungarian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Hanifi Rohingya"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Rumi Numeral Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Old Sogdian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Sogdian"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Elymaic"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Brahmi"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Kaithi"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Sora Sompeng"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Chakma"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Mahajani"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Sharada"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Sinhala Archaic Numbers"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Khojki"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Multani"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Khudawadi"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Grantha"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Newa"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tirhuta"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Siddham"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Modi"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Mongolian Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Takri"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ahom"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Dogra"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Warang Citi"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Nandinagari"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Zanabazar Square"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Soyombo"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Pau Cin Hau"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Bhaiksuki"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Marchen"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Masaram Gondi"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Gunjala Gondi"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Makasar"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tamil Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Cuneiform"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Cuneiform Numbers and Punctuation"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Early Dynastic Cuneiform"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Egyptian Hieroglyphs"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Egyptian Hieroglyph Format Controls"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Anatolian Hieroglyphs"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Bamum Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Mro"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Bassa Vah"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Pahawh Hmong"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Medefaidrin"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Miao"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ideographic Symbols and Punctuation"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tangut"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tangut Components"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Kana Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Kana Extended-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Small Kana Extension"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Nushu"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Duployan"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Shorthand Format Controls"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Byzantine Musical Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Musical Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ancient Greek Musical Notation"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Mayan Numerals"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tai Xuan Jing Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Counting Rod Numerals"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Mathematical Alphanumeric Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Sutton SignWriting"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Glagolitic Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Nyiakeng Puachue Hmong"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Wancho"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Mende Kikakui"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Adlam"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Indic Siyaq Numbers"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ottoman Siyaq Numbers"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Arabic Mathematical Alphabetic Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Mahjong Tiles"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Domino Tiles"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Playing Cards"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Enclosed Alphanumeric Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Enclosed Ideographic Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Miscellaneous Symbols and Pictographs"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Emoticons"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Ornamental Dingbats"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Transport and Map Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Alchemical Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Geometric Shapes Extended"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Supplemental Arrows-C"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Supplemental Symbols and Pictographs"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Chess Symbols"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Symbols and Pictographs Extended-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Unified Ideographs Extension B"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Unified Ideographs Extension C"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Unified Ideographs Extension D"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Unified Ideographs Extension E"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Unified Ideographs Extension F"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("CJK Compatibility Ideographs Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Tags"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Variation Selectors Supplement"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Supplementary Private Use Area-A"), /* TRANSLATORS: You might refer the translations from gucharmap with the following command: msgmerge -C gucharmap.po ibus.po ibus.pot */ N_("Supplementary Private Use Area-B"), }; #endif ibus-1.5.22/src/ibusversion.h0000644000000000000000000000361313623751273012756 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 (22) /** * 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.22/src/ibuskeysyms.h0000644000000000000000000023022413623750431012770 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.22/src/ibusfactory.c0000644000000000000000000003572513623750431012737 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-2019 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) \ ((IBusFactoryPrivate *)ibus_factory_get_instance_private (o)) 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_WITH_PRIVATE (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); /** * 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.22/src/ibusfactory.h0000644000000000000000000001211313623750431012726 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.22/src/ibuskeyuni.c0000644000000000000000000040156213623750431012570 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.22/src/ibusshare.h0000644000000000000000000002412313623750431012365 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) 2015-2018 Takao Fujiwara * Copyright (C) 2008-2018 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_PORTAL: * * Address of IBus portalservice. */ #define IBUS_SERVICE_PORTAL "org.freedesktop.portal.IBus" /** * IBUS_SERVICE_PANEL: * * Address of IBus panel service. */ #define IBUS_SERVICE_PANEL "org.freedesktop.IBus.Panel" /** * IBUS_SERVICE_PANEL_EXTENSION: * * Address of IBus panel extension service. */ #define IBUS_SERVICE_PANEL_EXTENSION "org.freedesktop.IBus.Panel.Extension" /** * IBUS_SERVICE_PANEL_EXTENSION_EMOJI: * * Address of IBus panel extension service for emoji. * This service provides emoji, Unicode code point, Unicode name features. */ #define IBUS_SERVICE_PANEL_EXTENSION_EMOJI \ "org.freedesktop.IBus.Panel.Extension.Emoji" /** * 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_PANEL_EXTENSION_EMOJI: * * D-Bus path for IBus extension panel for emoji. * This service provides emoji, Unicode code point, Unicode name features. */ #define IBUS_PATH_PANEL_EXTENSION_EMOJI \ "/org/freedesktop/IBus/Panel/Extension/Emoji" /** * 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_PORTAL: * * D-Bus interface for IBus portal. */ #define IBUS_INTERFACE_PORTAL "org.freedesktop.IBus.Portal" /** * 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. */ 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.22/src/ibuskeynames.c0000644000000000000000000002616613623750431013103 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 }; 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: 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_finalsmallsigma) xupper = IBUS_KEY_Greek_SIGMA; else if (symbol >= IBUS_KEY_Greek_alpha && symbol <= IBUS_KEY_Greek_omega) xupper -= (IBUS_KEY_Greek_alpha - IBUS_KEY_Greek_ALPHA); break; } if (lower) *lower = xlower; if (upper) *upper = xupper; } ibus-1.5.22/src/ibustext.c0000644000000000000000000001647113623750431012251 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.22/src/ibusattribute.c0000644000000000000000000001366013623750431013265 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.22/src/ibuscomposetable.h0000644000000000000000000000605313623750431013742 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-2019 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_ #include G_BEGIN_DECLS typedef struct _IBusComposeTable IBusComposeTable; typedef struct _IBusComposeTableEx IBusComposeTableEx; typedef struct _IBusComposeTablePrivate IBusComposeTablePrivate; typedef struct _IBusComposeTableCompact IBusComposeTableCompact; typedef struct _IBusComposeTableCompactEx IBusComposeTableCompactEx; typedef struct _IBusComposeTableCompactPrivate IBusComposeTableCompactPrivate; struct _IBusComposeTable { guint16 *data; gint max_seq_len; gint n_seqs; guint32 id; }; struct _IBusComposeTableEx { IBusComposeTablePrivate *priv; guint16 *data; gint max_seq_len; gint n_seqs; guint32 id; }; struct _IBusComposeTableCompact { const guint16 *data; gint max_seq_len; gint n_index_size; gint n_index_stride; }; struct _IBusComposeTableCompactEx { IBusComposeTableCompactPrivate *priv; const guint16 *data; gint max_seq_len; gint n_index_size; gint n_index_stride; }; IBusComposeTableEx * ibus_compose_table_new_with_file (const gchar *compose_file); IBusComposeTableEx * ibus_compose_table_load_cache (const gchar *compose_file); void ibus_compose_table_save_cache (IBusComposeTableEx *compose_table); GSList * ibus_compose_table_list_add_array (GSList *compose_tables, const guint16 *data, gint max_seq_len, gint n_seqs); GSList * ibus_compose_table_list_add_file (GSList *compose_tables, const gchar *compose_file); G_BEGIN_DECLS #endif ibus-1.5.22/src/ibusaccelgroup.h0000644000000000000000000000357413623750431013416 00000000000000/* GTK - The GIMP Toolkit * Copyright (C) 1998, 2001 Tim Janik * * This library is free software; you can redistribute it 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/. */ #ifndef __IBUS_ACCEL_GROUP_H_ #define __IBUS_ACCEL_GROUP_H_ #if !defined (__IBUS_H_INSIDE__) && !defined (IBUS_COMPILATION) #error "Only can be included directly" #endif #include #include G_BEGIN_DECLS /* --- Accelerators--- */ gboolean ibus_accelerator_valid (guint keyval, IBusModifierType modifiers) G_GNUC_CONST; void ibus_accelerator_parse (const gchar *accelerator, guint *accelerator_key, IBusModifierType *accelerator_mods); gchar* ibus_accelerator_name (guint accelerator_key, IBusModifierType accelerator_mods); G_END_DECLS #endif /* __IBUS_ACCEL_GROUP_H_ */ ibus-1.5.22/src/ibusattrlist.h0000644000000000000000000000675613623750431013145 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.22/src/ibushotkey.h0000644000000000000000000001535613623750431012576 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.22/src/ibusenumtypes.h0000644000000000000000000001531213623751421013314 00000000000000 /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ #ifndef __IBUS_ENUM_TYPES_H__ #define __IBUS_ENUM_TYPES_H__ #include G_BEGIN_DECLS /* 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 "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 "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 ()) /* enumerations from "ibusxevent.h" */ /** * ibus_xevent_type_get_type: * @returns: GType of IBUS_XEVENT_TYPE * * Returns the type of IBUS_XEVENT_TYPE as GType. */ GType ibus_xevent_type_get_type (void) G_GNUC_CONST; /** * IBUS_TYPE_XEVENT_TYPE: * @returns: GType of IBUS_XEVENT_TYPE * * Returns the type of IBUS_XEVENT_TYPE as GType. */ #define IBUS_TYPE_XEVENT_TYPE (ibus_xevent_type_get_type ()) G_END_DECLS #endif /* __IBUS_ENUM_TYPES_H__ */ /* Generated data ends here */ ibus-1.5.22/src/ibuskeys.h0000644000000000000000000000661613623750431012245 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.22/src/ibuslookuptable.h0000644000000000000000000003063513623750431013611 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.22/src/ibusunicode.h0000644000000000000000000002346713623750431012723 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* bus - The Input Bus * Copyright (C) 2018-2019 Takao Fujiwara * Copyright (C) 2018-2019 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_UNICODE_H_ #define __IBUS_UNICODE_H_ /** * SECTION: ibusunicode * @short_description: unicode utility. * @stability: Unstable * * miscellaneous unicode APIs. */ #include #include "ibusserializable.h" /* * Type macros. */ /* define GOBJECT macros */ #define IBUS_TYPE_UNICODE_DATA (ibus_unicode_data_get_type ()) #define IBUS_UNICODE_DATA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ IBUS_TYPE_UNICODE_DATA, IBusUnicodeData)) #define IBUS_UNICODE_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \ IBUS_TYPE_UNICODE_DATA, \ IBusUnicodeDataClass)) #define IBUS_IS_UNICODE_DATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ IBUS_TYPE_UNICODE_DATA)) #define IBUS_TYPE_UNICODE_BLOCK (ibus_unicode_block_get_type ()) #define IBUS_UNICODE_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ IBUS_TYPE_UNICODE_BLOCK, \ IBusUnicodeBlock)) #define IBUS_UNICODE_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), \ IBUS_TYPE_UNICODE_BLOCK, \ IBusUnicodeBlockClass)) #define IBUS_IS_UNICODE_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ IBUS_TYPE_UNICODE_BLOCK)) G_BEGIN_DECLS typedef struct _IBusUnicodeData IBusUnicodeData; typedef struct _IBusUnicodeDataPrivate IBusUnicodeDataPrivate; typedef struct _IBusUnicodeDataClass IBusUnicodeDataClass; typedef struct _IBusUnicodeBlock IBusUnicodeBlock; typedef struct _IBusUnicodeBlockPrivate IBusUnicodeBlockPrivate; typedef struct _IBusUnicodeBlockClass IBusUnicodeBlockClass; /** * IBusUnicodeDataLoadAsyncFinish: * @data_list: (transfer full) (element-type IBusUnicodeData): * * This callback can receive the list of #IBusUnicodeData. */ typedef void (*IBusUnicodeDataLoadAsyncFinish) (GSList *data_list, gpointer user_data); /** * IBusUnicodeData: * * Unicode data likes code, name, alias, block-name. * You can get extended values with g_object_get_properties. */ struct _IBusUnicodeData { IBusSerializable parent; /* instance members */ /*< public >*/ /*< private >*/ IBusUnicodeDataPrivate *priv; }; struct _IBusUnicodeDataClass { IBusSerializableClass parent; /* class members */ }; struct _IBusUnicodeBlock { IBusSerializable parent; /* instance members */ /*< public >*/ /*< private >*/ IBusUnicodeBlockPrivate *priv; }; struct _IBusUnicodeBlockClass { IBusSerializableClass parent; /* class members */ }; GType ibus_unicode_data_get_type (void); GType ibus_unicode_block_get_type (void); /** * ibus_unicode_data_new: * @first_property_name: Name of the first property. * @...: the NULL-terminated arguments of the properties and values. * * Creates a new #IBusUnicodeData. * code property is required. e.g. * ibus_unicode_data_new ("code", 0x3042, NULL) * * Returns: A newly allocated #IBusUnicodeData. */ IBusUnicodeData * ibus_unicode_data_new (const gchar *first_property_name, ...); /** * ibus_unicode_data_get_code: * @unicode: An #IBusUnicodeData * * Gets the code point in #IBusUnicodeData. * * Returns: code property in #IBusUnicodeData */ gunichar ibus_unicode_data_get_code (IBusUnicodeData *unicode); /** * ibus_unicode_data_get_name: * @unicode: An #IBusUnicodeData * * Gets the name in #IBusUnicodeData. It should not be freed. * * Returns: name property in #IBusUnicodeData */ const gchar * ibus_unicode_data_get_name (IBusUnicodeData *unicode); /** * ibus_unicode_data_get_alias: * @unicode: An #IBusUnicodeData * * Gets the alias in #IBusUnicodeData. It should not be freed. * * Returns: alias property in #IBusUnicodeData */ const gchar * ibus_unicode_data_get_alias (IBusUnicodeData *unicode); /** * ibus_unicode_data_get_block_name: * @unicode: An #IBusUnicodeData * * Gets the block name in #IBusUnicodeData. It should not be freed. * * Returns: block-name property in #IBusUnicodeData */ const gchar * ibus_unicode_data_get_block_name (IBusUnicodeData *unicode); /** * ibus_unicode_data_set_block_name: * @unicode: An #IBusUnicodeData * @block_name: A block name * * Sets the block name in #IBusUnicodeData. */ void ibus_unicode_data_set_block_name (IBusUnicodeData *unicode, const gchar *block_name); /** * ibus_unicode_data_save: * @path: A path of the saved Unicode data. * @list: (element-type IBusUnicodeData) (transfer none): A list of unicode * data. * * Save the list of #IBusUnicodeData to the cache file. */ void ibus_unicode_data_save (const gchar *path, GSList *list); /** * ibus_unicode_data_load: * @path: A path of the saved dictionary file. * @object: (nullable): If the #GObject has "unicode-deserialize-progress" * signal, this function will emit (the number of desrialized * #IBusUnicodeData, * the total number of #IBusUnicodeData) of uint values * with that signal by 100 times. Otherwise %NULL. * * Returns: (element-type IBusUnicodeData) (transfer full): * An #IBusUnicodeData list loaded from the saved cache file. */ GSList * ibus_unicode_data_load (const gchar *path, GObject *object); /** * ibus_unicode_data_load_async: * @path: A path of the saved dictionary file. * @object: (nullable): If the #GObject has "unicode-deserialize-progress" * signal, this function will emit (the number of desrialized * #IBusUnicodeData, * the total number of #IBusUnicodeData) of uint values * with that signal by 100 times. Otherwise %NULL. * @cancellable: cancellable. * @callback: (scope notified): IBusUnicodeDataLoadAsyncFinish. * @user_data: User data. * * IBusUnicodeDataLoadAsyncFinish can receive the list of #IBusUnicodeData. */ void ibus_unicode_data_load_async (const gchar *path, GObject *object, GCancellable *cancellable, IBusUnicodeDataLoadAsyncFinish callback, gpointer user_data); /** * ibus_unicode_block_new: * @first_property_name: Name of the first property. * @...: the NULL-terminated arguments of the properties and values. * * Creates a new #IBusUnicodeBlock. * block property is required. e.g. * ibus_unicode_block_new ("start", 0x0000, "end", "0x007f", "name", "basic", * NULL) * * Returns: A newly allocated #IBusUnicodeBlock. */ IBusUnicodeBlock *ibus_unicode_block_new (const gchar *first_property_name, ...); /** * ibus_unicode_block_get_start: * @block: An #IBusUnicodeData * * Gets the start code point in #IBusUnicodeBlock. * * Returns: start property in #IBusUnicodeBlock */ gunichar ibus_unicode_block_get_start (IBusUnicodeBlock *block); /** * ibus_unicode_block_get_end: * @block: An #IBusUnicodeData * * Gets the end code point in #IBusUnicodeBlock. * * Returns: end property in #IBusUnicodeBlock */ gunichar ibus_unicode_block_get_end (IBusUnicodeBlock *block); /** * ibus_unicode_block_get_name: * @block: An #IBusUnicodeBlock * * Gets the name in #IBusUnicodeBlock. It should not be freed. * * Returns: name property in #IBusUnicodeBlock */ const gchar * ibus_unicode_block_get_name (IBusUnicodeBlock *block); /** * ibus_unicode_block_save: * @path: A path of the saved Unicode block. * @list: (element-type IBusUnicodeBlock) (transfer none): A list of unicode * block. * * Save the list of #IBusUnicodeBlock to the cache file. */ void ibus_unicode_block_save (const gchar *path, GSList *list); /** * ibus_unicode_block_load: * @path: A path of the saved dictionary file. * * Returns: (element-type IBusUnicodeBlock) (transfer full): * An #IBusUnicodeBlock list loaded from the saved cache file. */ GSList * ibus_unicode_block_load (const gchar *path); G_END_DECLS #endif ibus-1.5.22/src/ibusutil.h0000644000000000000000000000343513623750431012243 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-2018 Takao Fujiwara * Copyright (C) 2008-2018 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 */ gchar * ibus_get_untranslated_language_name (const gchar *_locale); /** * ibus_get_language_name: * @_locale: A const locale name. * * Returns: translated language name */ gchar * ibus_get_language_name (const gchar *_locale); #endif ibus-1.5.22/src/ibusattribute.h0000644000000000000000000001600013623750431013261 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.22/src/ibusmarshalers.c0000644000000000000000000007756213623751420013435 00000000000000#include "ibusmarshalers.h" /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ #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: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 arg1, gint arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__STRING_INT callback; 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 arg1, guint arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__STRING_UINT callback; 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); } /* BOOLEAN:POINTER (./ibusmarshalers.list:7) */ void _ibus_marshal_BOOLEAN__POINTER (GClosure *closure, GValue *return_value, 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 arg1, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_BOOLEAN__POINTER callback; 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); } /* BOOLEAN:POINTER,POINTER (./ibusmarshalers.list:8) */ void _ibus_marshal_BOOLEAN__POINTER_POINTER (GClosure *closure, GValue *return_value, 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 arg1, gpointer arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_BOOLEAN__POINTER_POINTER callback; 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); } /* BOOLEAN:UINT,UINT (./ibusmarshalers.list:9) */ void _ibus_marshal_BOOLEAN__UINT_UINT (GClosure *closure, GValue *return_value, 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 arg1, guint arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_BOOLEAN__UINT_UINT callback; 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); } /* BOOLEAN:UINT,UINT,UINT (./ibusmarshalers.list:10) */ void _ibus_marshal_BOOLEAN__UINT_UINT_UINT (GClosure *closure, GValue *return_value, 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 arg1, guint arg2, guint arg3, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_BOOLEAN__UINT_UINT_UINT callback; 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); } /* BOOLEAN:ULONG (./ibusmarshalers.list:11) */ void _ibus_marshal_BOOLEAN__ULONG (GClosure *closure, GValue *return_value, 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 arg1, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_BOOLEAN__ULONG callback; 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 arg1, gint arg2, gint arg3, gint arg4, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__INT_INT_INT_INT callback; 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 arg1, guint arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__UINT_UINT callback; 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 arg1, guint arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__INT_UINT callback; 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 arg1, guint arg2, guint arg3, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__UINT_UINT_UINT callback; 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,BOOLEAN (./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 arg1, guint arg2, gboolean arg3, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN callback; 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 (./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 arg1, guint arg2, gboolean arg3, guint arg4, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__OBJECT_UINT_BOOLEAN_UINT callback; 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 arg1, guint arg2, guint arg3, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__OBJECT_UINT_UINT callback; 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,BOOLEAN (./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 arg1, gboolean arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__OBJECT_BOOLEAN callback; 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,BOOLEAN (./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 arg1, gboolean arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__BOXED_BOOLEAN callback; 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: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 arg1, gpointer arg2, gpointer arg3, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__STRING_STRING_VARIANT callback; 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 arg1, gpointer arg2, gpointer arg3, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__STRING_STRING_STRING callback; 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: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 arg1, guint arg2, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_VOID__POINTER_UINT callback; 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:28) */ void _ibus_marshal_OBJECT__STRING (GClosure *closure, GValue *return_value, 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 arg1, gpointer data2); GCClosure *cc = (GCClosure *) closure; gpointer data1, data2; GMarshalFunc_OBJECT__STRING callback; 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.22/src/ibusenginesimpleprivate.h0000644000000000000000000000377513623750431015347 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2016-2019 Takao Fujiwara * Copyright (C) 2016 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, see . */ #ifndef __IBUS_ENGINE_SIMPLE_PRIVATE_H__ #define __IBUS_ENGINE_SIMPLE_PRIVATE_H__ #include G_BEGIN_DECLS extern const IBusComposeTableCompactEx ibus_compose_table_compact; extern const IBusComposeTableCompactEx ibus_compose_table_compact_32bit; struct _IBusComposeTablePrivate { guint16 *data_first; guint32 *data_second; gsize first_n_seqs; gsize second_size; }; gboolean ibus_check_algorithmically (const guint16 *compose_buffer, gint n_compose, gunichar *output); gboolean ibus_check_compact_table (const IBusComposeTableCompactEx *table, guint16 *compose_buffer, gint n_compose, gboolean *compose_finish, gunichar **output_chars); G_END_DECLS #endif /* __IBUS_IM_CONTEXT_SIMPLE_PRIVATE_H__ */ ibus-1.5.22/src/ibusproxy.c0000644000000000000000000001675113623750431012447 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.22/src/ibushotkey.c0000644000000000000000000004034313623750431012563 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) 2018-2019 Takao Fujiwara * Copyright (C) 2008-2019 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) \ ((IBusHotkeyProfilePrivate *)ibus_hotkey_profile_get_instance_private (o)) 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); G_DEFINE_TYPE_WITH_PRIVATE (IBusHotkeyProfile, ibus_hotkey_profile, IBUS_TYPE_SERIALIZABLE) 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; } static void ibus_hotkey_profile_class_init (IBusHotkeyProfileClass *class) { IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class); IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class); 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 (ibus_hotkey_profile_parent_class)-> destroy ((IBusObject *)profile); } static gboolean ibus_hotkey_profile_serialize (IBusHotkeyProfile *profile, GVariantBuilder *builder) { gboolean retval; retval = IBUS_SERIALIZABLE_CLASS (ibus_hotkey_profile_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 = IBUS_SERIALIZABLE_CLASS (ibus_hotkey_profile_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 = IBUS_SERIALIZABLE_CLASS (ibus_hotkey_profile_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 && 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.22/src/ibusutil.c0000644000000000000000000001432613623750431012237 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-2019 Takao Fujiwara * Copyright (C) 2008-2016 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_3_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; gboolean has_common_name = FALSE; struct { const gchar *key; gchar *value; } entries[] = { { "id", NULL }, { "part1_code", NULL }, { "part2_code", NULL }, }; if (sub_node->attributes == NULL) { continue; } attributes = sub_node->attributes; for (i = 0; attributes[i]; i += 2) { if (!g_strcmp0 (attributes[i], "common_name")) { for (j = 0; j < G_N_ELEMENTS (entries); j++) { if (entries[j].value == NULL) continue; g_hash_table_replace (__languages_dict, g_strdup (entries[j].value), g_strdup (attributes[i + 1])); } has_common_name = TRUE; } else if (!g_strcmp0 (attributes[i], "name")) { if (has_common_name) continue; for (j = 0; j < G_N_ELEMENTS (entries); j++) { if (entries[j].value == NULL) continue; g_hash_table_replace (__languages_dict, g_strdup (entries[j].value), g_strdup (attributes[i + 1])); } } 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_3", LOCALEDIR); bind_textdomain_codeset ("iso_639_3", "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_3.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 static gchar * ibus_get_untranslated_raw_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"; } static char * get_first_item_in_semicolon_list (const char *list) { char **items; char *item; items = g_strsplit (list, "; ", 2); item = g_strdup (items[0]); g_strfreev (items); return item; } static char * capitalize_utf8_string (const char *str) { char first[8] = { 0 }; if (!str) return NULL; g_unichar_to_utf8 (g_unichar_totitle (g_utf8_get_char (str)), first); return g_strconcat (first, g_utf8_offset_to_pointer (str, 1), NULL); } gchar * ibus_get_untranslated_language_name (const gchar *_locale) { const gchar *raw = ibus_get_untranslated_raw_language_name (_locale); gchar *tmp = get_first_item_in_semicolon_list (raw); gchar *retval = capitalize_utf8_string (tmp); g_free (tmp); return retval; } gchar * ibus_get_language_name (const gchar *_locale) { const gchar *raw = ibus_get_untranslated_raw_language_name (_locale); const gchar *translation = NULL; gchar *tmp; gchar *retval; #ifdef ENABLE_NLS if (g_strcmp0 (raw, "Other") == 0) return g_strdup (dgettext (GETTEXT_PACKAGE, N_("Other"))); else translation = dgettext ("iso_639_3", raw); #else translation = raw; #endif tmp = get_first_item_in_semicolon_list (translation); retval = capitalize_utf8_string (tmp); g_free (tmp); return retval; } 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.22/src/ibusobject.c0000644000000000000000000001226113623750431012524 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-2019 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) \ ((IBusObjectPrivate *)ibus_object_get_instance_private (o)) 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_WITH_PRIVATE (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); #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.22/src/ibusemojigen.h0000644000000000000000000000255613623751562013074 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2016-2018 Takao Fujiwara * Copyright (C) 2016 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 file is generated by emoji-parser.c. */ include #ifndef __IBUS_EMOJI_GEN_H_ #define __IBUS_EMOJI_GEN_H_ const static char *unicode_emoji_categories[] = { N_("Activities"), N_("Animals & Nature"), N_("Component"), N_("Flags"), N_("Food & Drink"), N_("Objects"), N_("People & Body"), N_("Smileys & Emotion"), N_("Symbols"), N_("Travel & Places"), }; #endif ibus-1.5.22/src/ibusconfig.c0000644000000000000000000006214413623750431012530 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-2019 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) \ ((IBusConfigPrivate *)ibus_config_get_instance_private (o)) 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_ADD_PRIVATE (IBusConfig) 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); 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 (IBUS_CONFIG (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.22/src/ibuserror.h0000644000000000000000000000255613623750431012422 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.22/src/ibusengine.h0000644000000000000000000004004513623750431012531 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 committed 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.22/src/ibusenginesimple.h0000644000000000000000000001263113623750431013743 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) 2015-2019 Takao Fujiwara * Copyright (C) 2008-2017 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" #include "ibuskeysyms.h" G_BEGIN_DECLS #define IBUS_MAX_COMPOSE_LEN 0xFF /* * 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]; }; static const guint16 IBUS_COMPOSE_IGNORE_KEYLIST[] = { 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 }; 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. * * 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.22/src/ibuspanelservice.h0000644000000000000000000003534213623750431013750 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) 2017-2018 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 !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" #include "ibusxevent.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); void (* set_cursor_location_relative) (IBusPanelService *panel, gint x, gint y, gint w, gint h); void (* panel_extension_received) (IBusPanelService *panel, IBusExtensionEvent *event); gboolean (* process_key_event) (IBusPanelService *panel, guint keyval, guint keycode, guint state); void (* commit_text_received) (IBusPanelService *panel, IBusText *text); void (* candidate_clicked_lookup_table) (IBusPanelService *panel, guint index, guint button, guint state); /*< private >*/ /* padding */ gpointer pdummy[2]; // 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); /** * ibus_panel_service_commit_text: * @panel: An #IBusPanelService * @text: An #IBusText * * Notify that a text is sent * by sending a "CommitText" message to IBus service. */ void ibus_panel_service_commit_text (IBusPanelService *panel, IBusText *text); /** * ibus_panel_service_panel_extension: * @panel: An #IBusPanelService * @event: (transfer full): A #PanelExtensionEvent which is sent to a * panel extension. * * Enable or disable a panel extension with #IBusExtensionEvent. * Notify that a data is sent * by sending a "PanelExtension" message to IBus panel extension service. */ void ibus_panel_service_panel_extension (IBusPanelService *panel, IBusExtensionEvent *event); /** * ibus_panel_service_panel_extension_register_keys: * @panel: An #IBusPanelService * @first_property_name: the first name of the shortcut keys. This is %NULL " terminated. * * Register shortcut keys to enable panel extensions with #IBusExtensionEvent. * Notify that a data is sent * by sending a "PanelExtensionRegisterKeys" message to IBus panel extension * service. Seems Vala does not support uint[][3] and use * IBusProcessKeyEventData[]. E.g. * IBusProcessKeyEventData[] keys = {{ * IBUS_KEY_e, 0, IBUS_SHIFT_MASK | IBUS_SUPER_MASK }}; * ibus_panel_service_panel_extension_register_keys(panel, "emoji", keys, NULL); */ void ibus_panel_service_panel_extension_register_keys (IBusPanelService *panel, const gchar *first_property_name, ...); /** * ibus_panel_service_update_preedit_text_received: * @panel: An #IBusPanelService * @text: Update content. * @cursor_pos: Current position of cursor * @visible: Whether the pre-edit buffer is visible. * * Notify that the preedit is updated by the panel extension * * (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_panel_service_update_preedit_text_received (IBusPanelService *panel, IBusText *text, guint cursor_pos, gboolean visible); /** * ibus_panel_service_show_preedit_text_received: * @panel: An IBusPanelService * * Notify that the preedit is shown by the panel extension */ void ibus_panel_service_show_preedit_text_received (IBusPanelService *panel); /** * ibus_panel_service_hide_preedit_text_received: * @panel: An IBusPanelService * * Notify that the preedit is hidden by the panel extension */ void ibus_panel_service_hide_preedit_text_received (IBusPanelService *panel); /** * ibus_panel_service_update_auxiliary_text_received: * @panel: An #IBusPanelService * @text: An #IBusText * @visible: Whether the auxilirary text is visible. * * Notify that the auxilirary is updated by the panel extension. * * (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_panel_service_update_auxiliary_text_received (IBusPanelService *panel, IBusText *text, gboolean visible); /** * ibus_panel_service_update_lookup_table_received: * @panel: An #IBusPanelService * @table: An #IBusLookupTable * @visible: Whether the lookup table is visible. * * Notify that the lookup table is updated by the panel extension. * * (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_panel_service_update_lookup_table_received (IBusPanelService *panel, IBusLookupTable *table, gboolean visible); G_END_DECLS #endif ibus-1.5.22/src/ibusenumtypes.h.template0000644000000000000000000000145413623750431015130 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.22/src/ibusbus.h0000644000000000000000000013645613623750431012071 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) 2013-2019 Takao Fujiwara * Copyright (C) 2008-2019 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_new_async_client: * * Creates a new #IBusBus instance for client use only. It will possibly * be limited in what it can do. * * 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_client (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_get_service_name: * @bus: An #IBusBus. * * Return the main service name to use for calls on the ibus connection. * * Returns: at dbus name. */ const gchar * ibus_bus_get_service_name (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 successful, %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 successful, %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. * * Create an input context for client synchronously. * * Returns: (transfer full): A newly allocated #IBusInputContext if the * "CreateInputContext" call is succeeded, %NULL otherwise. */ 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): A newly allocated #IBusInputContext if the * "CreateInputContext" call is succeeded, %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: Name of the currently focused #IBusInputContext if the * "CurrentInputContext" call succeeded, %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: Name of the currently focused IBusInputContext if the * "CurrentInputContext" call succeeded, %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 component to an #IBusBus synchronously. * * Returns: %TRUE if the "RegisterComponent" call is successful, %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 component 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 successful, %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 full) (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 full) (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 full) (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 full) (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 full): 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.22/src/ibusxml.c0000644000000000000000000002052013623750431012053 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) 2018 Takao Fujiwara * Copyright (C) 2008-2018 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); if (error) { 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.22/src/ibusshare.c0000644000000000000000000002315613623750431012365 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) 2015-2018 Takao Fujiwara * Copyright (C) 2008-2018 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) { 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); /* Qt5 IBus module has a hard-coded path and we cannot change this * for the back compatibility. * XDG_RUNTIME_DIR is not useful because it's generated by * login but not `su` command and ibus-daemon can be run with `su` * and we may change the path to XDG_CACHE_HOME in the future. */ 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" "# This file allows processes on the machine to find the\n" "# ibus session bus with the below address.\n" "# If the IBUS_ADDRESS environment variable is set, it will\n" "# be used rather than this file.\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; IBUS_TYPE_X_EVENT; } 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.22/src/ibustext.h0000644000000000000000000001456013623750431012253 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.22/src/ibusxevent.c0000644000000000000000000012313013623750431012565 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2018-2019 Takao Fujiwara * Copyright (C) 2018-2019 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 "ibusxevent.h" #define IBUS_EXTENSION_EVENT_VERSION 1 #define IBUS_EXTENSION_EVENT_GET_PRIVATE(o) \ ((IBusExtensionEventPrivate *)ibus_extension_event_get_instance_private (o)) #define IBUS_X_EVENT_VERSION 1 #define IBUS_X_EVENT_GET_PRIVATE(o) \ ((IBusXEventPrivate *)ibus_x_event_get_instance_private (o)) enum { PROP_0, PROP_VERSION, PROP_NAME, PROP_IS_ENABLED, PROP_IS_EXTENSION, PROP_PARAMS, PROP_EVENT_TYPE, PROP_WINDOW, PROP_SEND_EVENT, PROP_SERIAL, PROP_TIME, PROP_STATE, PROP_KEYVAL, PROP_LENGTH, PROP_STRING, PROP_HARDWARE_KEYCODE, PROP_GROUP, PROP_IS_MODIFIER, PROP_ROOT, PROP_SUBWINDOW, PROP_X, PROP_Y, PROP_X_ROOT, PROP_Y_ROOT, PROP_SAME_SCREEN, PROP_PURPOSE }; struct _IBusExtensionEventPrivate { guint version; gchar *name; gboolean is_enabled; gboolean is_extension; gchar *params; }; struct _IBusXEventPrivate { guint version; guint32 time; guint state; guint keyval; gint length; gchar *string; guint16 hardware_keycode; guint8 group; gboolean is_modifier; guint root; guint subwindow; gint x; gint y; gint x_root; gint y_root; gboolean same_screen; gchar *purpose; }; /* functions prototype */ static void ibus_extension_event_destroy (IBusExtensionEvent *event); static void ibus_extension_event_set_property (IBusExtensionEvent *event, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_extension_event_get_property (IBusExtensionEvent *event, guint prop_id, GValue *value, GParamSpec *pspec); static gboolean ibus_extension_event_serialize (IBusExtensionEvent *event, GVariantBuilder *builder); static gint ibus_extension_event_deserialize (IBusExtensionEvent *event, GVariant *variant); static gboolean ibus_extension_event_copy (IBusExtensionEvent *dest, const IBusExtensionEvent *src); static void ibus_x_event_destroy (IBusXEvent *event); static void ibus_x_event_set_property (IBusXEvent *event, guint prop_id, const GValue *value, GParamSpec *pspec); static void ibus_x_event_get_property (IBusXEvent *event, guint prop_id, GValue *value, GParamSpec *pspec); static gboolean ibus_x_event_serialize (IBusXEvent *event, GVariantBuilder *builder); static gint ibus_x_event_deserialize (IBusXEvent *event, GVariant *variant); static gboolean ibus_x_event_copy (IBusXEvent *dest, const IBusXEvent *src); G_DEFINE_TYPE_WITH_PRIVATE (IBusExtensionEvent, ibus_extension_event, IBUS_TYPE_SERIALIZABLE) G_DEFINE_TYPE_WITH_PRIVATE (IBusXEvent, ibus_x_event, IBUS_TYPE_SERIALIZABLE) static void ibus_extension_event_class_init (IBusExtensionEventClass *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_extension_event_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_extension_event_get_property; object_class->destroy = (IBusObjectDestroyFunc) ibus_extension_event_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_extension_event_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_extension_event_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_extension_event_copy; /* install properties */ /** * IBusExtensionEvent:version: * * Version of the #IBusExtensionEvent. */ g_object_class_install_property (gobject_class, PROP_VERSION, g_param_spec_uint ("version", "version", "version", 0, G_MAXUINT32, IBUS_EXTENSION_EVENT_VERSION, G_PARAM_READABLE)); /** * IBusExtensionEvent:name: * * Name of the extension in the #IBusExtensionEvent. */ g_object_class_install_property (gobject_class, PROP_NAME, g_param_spec_string ("name", "name", "name of the extension", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusExtensionEvent:is-enabled: * * %TRUE if the extension is enabled in the #IBusExtensionEvent. */ g_object_class_install_property (gobject_class, PROP_IS_ENABLED, g_param_spec_boolean ("is-enabled", "is enabled", "if the extension is enabled", FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusExtensionEvent:is-extension: * * %TRUE if the #IBusExtensionEvent is called by an extension. * %FALSE if the #IBusExtensionEvent is called by an active engine or * panel. * If this value is %TRUE, the event is send to ibus-daemon, an active * engine. If it's %FALSE, the event is sned to ibus-daemon, panels. */ g_object_class_install_property (gobject_class, PROP_IS_EXTENSION, g_param_spec_boolean ("is-extension", "is extension", "if the event is called by an extension", FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusExtensionEvent:params: * * Parameters to enable the extension in the #IBusExtensionEvent. */ g_object_class_install_property (gobject_class, PROP_PARAMS, g_param_spec_string ("params", "params", "Parameters to enable the extension", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); } static void ibus_extension_event_init (IBusExtensionEvent *event) { event->priv = IBUS_EXTENSION_EVENT_GET_PRIVATE (event); event->priv->version = IBUS_EXTENSION_EVENT_VERSION; } static void ibus_extension_event_destroy (IBusExtensionEvent *event) { g_clear_pointer (&event->priv->name, g_free); IBUS_OBJECT_CLASS(ibus_extension_event_parent_class)-> destroy (IBUS_OBJECT (event)); } static void ibus_extension_event_set_property (IBusExtensionEvent *event, guint prop_id, const GValue *value, GParamSpec *pspec) { IBusExtensionEventPrivate *priv = event->priv; switch (prop_id) { case PROP_NAME: g_free (priv->name); priv->name = g_value_dup_string (value); break; case PROP_IS_ENABLED: priv->is_enabled = g_value_get_boolean (value); break; case PROP_IS_EXTENSION: priv->is_extension = g_value_get_boolean (value); break; case PROP_PARAMS: priv->params = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (event, prop_id, pspec); } } static void ibus_extension_event_get_property (IBusExtensionEvent *event, guint prop_id, GValue *value, GParamSpec *pspec) { IBusExtensionEventPrivate *priv = event->priv; switch (prop_id) { case PROP_VERSION: g_value_set_uint (value, priv->version); break; case PROP_NAME: g_value_set_string (value, priv->name); break; case PROP_IS_ENABLED: g_value_set_boolean (value, priv->is_enabled); break; case PROP_IS_EXTENSION: g_value_set_boolean (value, priv->is_extension); break; case PROP_PARAMS: g_value_set_string (value, priv->params); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (event, prop_id, pspec); } } static gboolean ibus_extension_event_serialize (IBusExtensionEvent *event, GVariantBuilder *builder) { gboolean retval; IBusExtensionEventPrivate *priv; retval = IBUS_SERIALIZABLE_CLASS (ibus_extension_event_parent_class)-> serialize ((IBusSerializable *)event, builder); g_return_val_if_fail (retval, FALSE); /* End dict iter */ priv = event->priv; #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, "u", priv->version); g_variant_builder_add (builder, "s", NOTNULL (priv->name)); g_variant_builder_add (builder, "b", priv->is_enabled); g_variant_builder_add (builder, "b", priv->is_extension); g_variant_builder_add (builder, "s", NOTNULL (priv->params)); #undef NOTNULL return TRUE; } static gint ibus_extension_event_deserialize (IBusExtensionEvent *event, GVariant *variant) { gint retval; IBusExtensionEventPrivate *priv; retval = IBUS_SERIALIZABLE_CLASS (ibus_extension_event_parent_class)-> deserialize ((IBusSerializable *)event, variant); g_return_val_if_fail (retval, 0); priv = event->priv; /* 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_get_child (variant, retval++, "u", &priv->version); ibus_g_variant_get_child_string (variant, retval++, &priv->name); g_variant_get_child (variant, retval++, "b", &priv->is_enabled); g_variant_get_child (variant, retval++, "b", &priv->is_extension); ibus_g_variant_get_child_string (variant, retval++, &priv->params); return retval; } static gboolean ibus_extension_event_copy (IBusExtensionEvent *dest, const IBusExtensionEvent *src) { gboolean retval; IBusExtensionEventPrivate *dest_priv = dest->priv; IBusExtensionEventPrivate *src_priv = src->priv; retval = IBUS_SERIALIZABLE_CLASS (ibus_extension_event_parent_class)-> copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); dest_priv->version = src_priv->version; dest_priv->name = g_strdup (src_priv->name); dest_priv->is_enabled = src_priv->is_enabled; dest_priv->is_extension = src_priv->is_extension; dest_priv->params = g_strdup (src_priv->params); return TRUE; } IBusExtensionEvent * ibus_extension_event_new (const gchar *first_property_name, ...) { va_list var_args; IBusExtensionEvent *event; va_start (var_args, first_property_name); event = (IBusExtensionEvent *) g_object_new_valist ( IBUS_TYPE_EXTENSION_EVENT, first_property_name, var_args); va_end (var_args); g_assert (event->priv->version != 0); return event; } guint ibus_extension_event_get_version (IBusExtensionEvent *event) { g_return_val_if_fail (IBUS_IS_EXTENSION_EVENT (event), 0); return event->priv->version; } const gchar * ibus_extension_event_get_name (IBusExtensionEvent *event) { g_return_val_if_fail (IBUS_IS_EXTENSION_EVENT (event), ""); return event->priv->name; } gboolean ibus_extension_event_is_enabled (IBusExtensionEvent *event) { g_return_val_if_fail (IBUS_IS_EXTENSION_EVENT (event), FALSE); return event->priv->is_enabled; } gboolean ibus_extension_event_is_extension (IBusExtensionEvent *event) { g_return_val_if_fail (IBUS_IS_EXTENSION_EVENT (event), FALSE); return event->priv->is_extension; } const gchar * ibus_extension_event_get_params (IBusExtensionEvent *event) { g_return_val_if_fail (IBUS_IS_EXTENSION_EVENT (event), ""); return event->priv->params; } static void ibus_x_event_class_init (IBusXEventClass *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_x_event_set_property; gobject_class->get_property = (GObjectGetPropertyFunc) ibus_x_event_get_property; object_class->destroy = (IBusObjectDestroyFunc) ibus_x_event_destroy; serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_x_event_serialize; serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_x_event_deserialize; serializable_class->copy = (IBusSerializableCopyFunc) ibus_x_event_copy; /* install properties */ /** * IBusXEvent:version: * * Version of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_VERSION, g_param_spec_uint ("version", "version", "version", 0, G_MAXUINT32, IBUS_X_EVENT_VERSION, G_PARAM_READABLE)); /** * IBusXEvent:event-type: * * IBusXEventType of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_EVENT_TYPE, g_param_spec_int ("event-type", "event type", "event type", -1, G_MAXINT32, -1, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:window: * * window of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_WINDOW, g_param_spec_uint ("window", "window", "window", 0, G_MAXUINT32, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:send-event: * * send_event of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_SEND_EVENT, g_param_spec_int ("send-event", "send event", "send event", 0, G_MAXINT8, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:serial: * * serial of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_SERIAL, g_param_spec_ulong ("serial", "serial", "serial", 0, G_MAXUINT64, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:time: * * time of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_TIME, g_param_spec_uint ("time", "time", "time", 0, G_MAXUINT32, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:state: * * state of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_STATE, g_param_spec_uint ("state", "state", "state", 0, G_MAXUINT32, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:keyval: * * keyval of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_KEYVAL, g_param_spec_uint ("keyval", "keyval", "keyval", 0, G_MAXUINT32, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:length: * * keyval of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_LENGTH, g_param_spec_int ("length", "length", "length", -1, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:string: * * string of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_STRING, g_param_spec_string ("string", "string", "string", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:hardware-keycode: * * hardware keycode of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_HARDWARE_KEYCODE, g_param_spec_uint ("hardware-keycode", "hardware keycode", "hardware keycode", 0, G_MAXUINT16, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:group: * * group of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_GROUP, g_param_spec_uint ("group", "group", "group", 0, G_MAXUINT8, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:is-modifier: * * is_modifier of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_IS_MODIFIER, g_param_spec_boolean ("is-modifier", "is modifier", "is modifier", FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:root: * * root window of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_ROOT, g_param_spec_uint ("root", "root", "root", 0, G_MAXUINT32, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:subwindow: * * subwindow of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_SUBWINDOW, g_param_spec_uint ("subwindow", "subwindow", "subwindow", 0, G_MAXUINT32, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:x: * * x of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_X, g_param_spec_int ("x", "x", "x", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:y: * * x of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_Y, g_param_spec_int ("y", "y", "y", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:x-root: * * root-x of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_X_ROOT, g_param_spec_int ("x-root", "x root", "x root", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:y-root: * * root-y of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_Y_ROOT, g_param_spec_int ("y-root", "y root", "y root", G_MININT32, G_MAXINT32, 0, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:same-screen: * * same_screen of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_SAME_SCREEN, g_param_spec_boolean ("same-screen", "same screen", "same screen", TRUE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * IBusXEvent:purpose: * * purpose of this IBusXEvent. */ g_object_class_install_property (gobject_class, PROP_PURPOSE, g_param_spec_string ("purpose", "purpose", "purpose", "", G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); } static void ibus_x_event_init (IBusXEvent *event) { event->priv = IBUS_X_EVENT_GET_PRIVATE (event); event->priv->version = IBUS_X_EVENT_VERSION; } static void ibus_x_event_destroy (IBusXEvent *event) { g_clear_pointer (&event->priv->string, g_free); g_clear_pointer (&event->priv->purpose, g_free); IBUS_OBJECT_CLASS(ibus_x_event_parent_class)->destroy (IBUS_OBJECT (event)); } static void ibus_x_event_set_property (IBusXEvent *event, guint prop_id, const GValue *value, GParamSpec *pspec) { IBusXEventPrivate *priv = event->priv; switch (prop_id) { case PROP_EVENT_TYPE: event->event_type = g_value_get_int (value); break; case PROP_WINDOW: event->window = g_value_get_uint (value); break; case PROP_SEND_EVENT: event->send_event = g_value_get_int (value); break; case PROP_SERIAL: event->serial = g_value_get_ulong (value); break; case PROP_TIME: priv->time = g_value_get_uint (value); break; case PROP_STATE: priv->state = g_value_get_uint (value); break; case PROP_KEYVAL: priv->keyval = g_value_get_uint (value); break; case PROP_LENGTH: priv->length = g_value_get_int (value); break; case PROP_STRING: g_free (priv->string); priv->string = g_value_dup_string (value); break; case PROP_HARDWARE_KEYCODE: priv->hardware_keycode = g_value_get_uint (value); break; case PROP_GROUP: priv->group = g_value_get_uint (value); break; case PROP_IS_MODIFIER: priv->is_modifier = g_value_get_boolean (value); break; case PROP_ROOT: priv->root = g_value_get_uint (value); break; case PROP_SUBWINDOW: priv->subwindow = g_value_get_uint (value); break; case PROP_X: priv->x = g_value_get_int (value); break; case PROP_Y: priv->y = g_value_get_int (value); break; case PROP_X_ROOT: priv->x_root = g_value_get_int (value); break; case PROP_Y_ROOT: priv->y_root = g_value_get_int (value); break; case PROP_SAME_SCREEN: priv->same_screen = g_value_get_boolean (value); break; case PROP_PURPOSE: g_free (priv->purpose); priv->purpose = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (event, prop_id, pspec); } } static void ibus_x_event_get_property (IBusXEvent *event, guint prop_id, GValue *value, GParamSpec *pspec) { IBusXEventPrivate *priv = event->priv; switch (prop_id) { case PROP_VERSION: g_value_set_uint (value, priv->version); break; case PROP_EVENT_TYPE: g_value_set_int (value, event->event_type); break; case PROP_WINDOW: g_value_set_uint (value, event->window); break; case PROP_SEND_EVENT: g_value_set_int (value, event->send_event); break; case PROP_SERIAL: g_value_set_ulong (value, event->serial); break; case PROP_TIME: g_value_set_uint (value, priv->time); break; case PROP_STATE: g_value_set_uint (value, priv->state); break; case PROP_KEYVAL: g_value_set_uint (value, priv->keyval); break; case PROP_LENGTH: g_value_set_int (value, priv->length); break; case PROP_STRING: g_value_set_string (value, priv->string); break; case PROP_HARDWARE_KEYCODE: g_value_set_uint (value, priv->hardware_keycode); break; case PROP_GROUP: g_value_set_uint (value, priv->group); break; case PROP_IS_MODIFIER: g_value_set_boolean (value, priv->is_modifier); break; case PROP_ROOT: g_value_set_uint (value, priv->root); break; case PROP_SUBWINDOW: g_value_set_uint (value, priv->subwindow); break; case PROP_X: g_value_set_int (value, priv->x); break; case PROP_Y: g_value_set_int (value, priv->y); break; case PROP_X_ROOT: g_value_set_int (value, priv->x_root); break; case PROP_Y_ROOT: g_value_set_int (value, priv->y_root); break; case PROP_SAME_SCREEN: g_value_set_boolean (value, priv->same_screen); break; case PROP_PURPOSE: g_value_set_string (value, priv->purpose); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (event, prop_id, pspec); } } static gboolean ibus_x_event_serialize (IBusXEvent *event, GVariantBuilder *builder) { gboolean retval; IBusXEventPrivate *priv; retval = IBUS_SERIALIZABLE_CLASS (ibus_x_event_parent_class)-> serialize ((IBusSerializable *)event, builder); g_return_val_if_fail (retval, FALSE); /* End dict iter */ priv = event->priv; #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, "u", priv->version); g_variant_builder_add (builder, "u", event->event_type); g_variant_builder_add (builder, "u", event->window); g_variant_builder_add (builder, "i", event->send_event); g_variant_builder_add (builder, "t", event->serial); g_variant_builder_add (builder, "u", priv->time); g_variant_builder_add (builder, "u", priv->state); g_variant_builder_add (builder, "u", priv->keyval); g_variant_builder_add (builder, "i", priv->length); g_variant_builder_add (builder, "s", NOTNULL (priv->string)); g_variant_builder_add (builder, "u", priv->hardware_keycode); g_variant_builder_add (builder, "u", priv->group); g_variant_builder_add (builder, "b", priv->is_modifier); g_variant_builder_add (builder, "u", priv->root); g_variant_builder_add (builder, "u", priv->subwindow); g_variant_builder_add (builder, "i", priv->x); g_variant_builder_add (builder, "i", priv->y); g_variant_builder_add (builder, "i", priv->x_root); g_variant_builder_add (builder, "i", priv->y_root); g_variant_builder_add (builder, "b", priv->same_screen); g_variant_builder_add (builder, "s", NOTNULL (priv->purpose)); #undef NOTNULL return TRUE; } static gint ibus_x_event_deserialize (IBusXEvent *event, GVariant *variant) { gint retval; IBusXEventPrivate *priv; retval = IBUS_SERIALIZABLE_CLASS (ibus_x_event_parent_class)-> deserialize ((IBusSerializable *)event, variant); g_return_val_if_fail (retval, 0); priv = event->priv; /* 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_get_child (variant, retval++, "u", &priv->version); g_variant_get_child (variant, retval++, "u", &event->event_type); g_variant_get_child (variant, retval++, "u", &event->window); g_variant_get_child (variant, retval++, "i", &event->send_event); g_variant_get_child (variant, retval++, "t", &event->serial); g_variant_get_child (variant, retval++, "u", &priv->time); g_variant_get_child (variant, retval++, "u", &priv->state); g_variant_get_child (variant, retval++, "u", &priv->keyval); g_variant_get_child (variant, retval++, "i", &priv->length); ibus_g_variant_get_child_string (variant, retval++, &priv->string); g_variant_get_child (variant, retval++, "u", &priv->hardware_keycode); g_variant_get_child (variant, retval++, "u", &priv->group); g_variant_get_child (variant, retval++, "b", &priv->is_modifier); g_variant_get_child (variant, retval++, "u", &priv->root); g_variant_get_child (variant, retval++, "u", &priv->subwindow); g_variant_get_child (variant, retval++, "i", &priv->x); g_variant_get_child (variant, retval++, "i", &priv->y); g_variant_get_child (variant, retval++, "i", &priv->x_root); g_variant_get_child (variant, retval++, "i", &priv->y_root); g_variant_get_child (variant, retval++, "b", &priv->same_screen); ibus_g_variant_get_child_string (variant, retval++, &priv->purpose); return retval; } static gboolean ibus_x_event_copy (IBusXEvent *dest, const IBusXEvent *src) { gboolean retval; IBusXEventPrivate *dest_priv = dest->priv; IBusXEventPrivate *src_priv = src->priv; retval = IBUS_SERIALIZABLE_CLASS (ibus_x_event_parent_class)-> copy ((IBusSerializable *)dest, (IBusSerializable *)src); g_return_val_if_fail (retval, FALSE); dest_priv->version = src_priv->version; dest->event_type = src->event_type; dest->window = src->window; dest->send_event = src->send_event; dest->serial = src->serial; dest_priv->time = src_priv->time; dest_priv->state = src_priv->state; dest_priv->keyval = src_priv->keyval; dest_priv->length = src_priv->length; dest_priv->string = g_strdup (src_priv->string); dest_priv->hardware_keycode = src_priv->hardware_keycode; dest_priv->group = src_priv->group; dest_priv->is_modifier = src_priv->is_modifier; dest_priv->root = src_priv->root; dest_priv->subwindow = src_priv->subwindow; dest_priv->x = src_priv->x; dest_priv->y = src_priv->y; dest_priv->x_root = src_priv->x_root; dest_priv->y_root = src_priv->y_root; dest_priv->same_screen = src_priv->same_screen; dest_priv->purpose = g_strdup (src_priv->purpose); return TRUE; } IBusXEvent * ibus_x_event_new (const gchar *first_property_name, ...) { va_list var_args; IBusXEvent *event; va_start (var_args, first_property_name); event = (IBusXEvent *) g_object_new_valist (IBUS_TYPE_X_EVENT, first_property_name, var_args); va_end (var_args); g_assert (event->priv->version != 0); g_assert (event->event_type != IBUS_X_EVENT_NOTHING); return event; } guint ibus_x_event_get_version (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); return event->priv->version; } IBusXEventType ibus_x_event_get_event_type (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); return event->event_type; } guint32 ibus_x_event_get_window (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); return event->window; } gint8 ibus_x_event_get_send_event (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), -1); return event->send_event; } gulong ibus_x_event_get_serial (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); return event->serial; } guint32 ibus_x_event_get_time (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->time; } guint ibus_x_event_get_state (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->state; } guint ibus_x_event_get_keyval (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->keyval; } gint ibus_x_event_get_length (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), -1); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (-1); } return event->priv->length; } const gchar * ibus_x_event_get_string (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), ""); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (""); } return event->priv->string; } guint16 ibus_x_event_get_hardware_keycode (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->hardware_keycode; } guint8 ibus_x_event_get_group (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->group; } gboolean ibus_x_event_get_is_modifier (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->is_modifier; } guint32 ibus_x_event_get_root (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->root; } guint32 ibus_x_event_get_subwindow (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->subwindow; } gint ibus_x_event_get_x (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->x; } gint ibus_x_event_get_y (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->y; } gint ibus_x_event_get_x_root (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->x_root; } gint ibus_x_event_get_y_root (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), 0); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (0); } return event->priv->y_root; } gboolean ibus_x_event_get_same_screen (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), TRUE); switch (event->event_type) { case IBUS_X_EVENT_KEY_PRESS: case IBUS_X_EVENT_KEY_RELEASE: break; default: g_return_val_if_reached (TRUE); } return event->priv->same_screen; } const gchar * ibus_x_event_get_purpose (IBusXEvent *event) { g_return_val_if_fail (IBUS_IS_X_EVENT (event), ""); return event->priv->purpose; } ibus-1.5.22/src/ibusproperty.h0000644000000000000000000002653213623750431013155 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 if update succeeded; FALSE otherwise. */ gboolean ibus_property_update (IBusProperty *prop, IBusProperty *prop_update); G_END_DECLS #endif ibus-1.5.22/src/ibusinputcontext.c0000644000000000000000000013742013623750431014027 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) 2018-2019 Takao Fujiwara * Copyright (C) 2008-2019 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) \ ((IBusInputContextPrivate *)ibus_input_context_get_instance_private (o)) enum { ENABLED, DISABLED, COMMIT_TEXT, FORWARD_KEY_EVENT, DELETE_SURROUNDING_TEXT, UPDATE_PREEDIT_TEXT, UPDATE_PREEDIT_TEXT_WITH_MODE, 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_WITH_PRIVATE (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); 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::update-preedit-text-with-mode: * @context: An IBusInputContext. * @text: Text to be updated. * @cursor_pos: Cursor position. * @visible: Whether the update is visible. * @mode: Preedit mode. * * Emitted to update preedit text with the mode. * * (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_WITH_MODE] = g_signal_new (I_("update-preedit-text-with-mode"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, _ibus_marshal_VOID__OBJECT_UINT_BOOLEAN_UINT, G_TYPE_NONE, 4, IBUS_TYPE_TEXT, G_TYPE_UINT, G_TYPE_BOOLEAN, G_TYPE_UINT); /** * 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; } if (g_strcmp0 (signal_name, "UpdatePreeditTextWithMode") == 0) { GVariant *variant = NULL; gint32 cursor_pos; gboolean visible; guint mode = 0; g_variant_get (parameters, "(vubu)", &variant, &cursor_pos, &visible, &mode); IBusText *text = IBUS_TEXT (ibus_serializable_deserialize (variant)); g_variant_unref (variant); g_signal_emit (context, context_signals[UPDATE_PREEDIT_TEXT_WITH_MODE], 0, text, cursor_pos, visible, mode); 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)); const gchar *service_name = IBUS_SERVICE_IBUS; GInitable *initable; GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; if (g_object_get_data (G_OBJECT (connection), "ibus-portal-connection")) service_name = IBUS_SERVICE_PORTAL; initable = g_initable_new (IBUS_TYPE_INPUT_CONTEXT, cancellable, error, "g-connection", connection, "g-name", service_name, "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); const gchar *service_name = IBUS_SERVICE_IBUS; GDBusProxyFlags flags = G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START; if (g_object_get_data (G_OBJECT (connection), "ibus-portal-connection")) service_name = IBUS_SERVICE_PORTAL; g_async_initable_new_async (IBUS_TYPE_INPUT_CONTEXT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-connection", connection, "g-name", service_name, "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_cursor_location_relative (IBusInputContext *context, gint32 x, gint32 y, gint32 w, gint32 h) { g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_dbus_proxy_call ((GDBusProxy *) context, "SetCursorLocationRelative", /* 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) { IBusInputContextPrivate *priv; g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (IBUS_IS_TEXT (text)); 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) { GVariant *cached_content_type; GVariant *content_type; g_assert (IBUS_IS_INPUT_CONTEXT (context)); cached_content_type = g_dbus_proxy_get_cached_property ((GDBusProxy *) context, "ContentType"); 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) { GVariant *variant; GVariant *engine_desc_variant; IBusEngineDesc *desc; g_assert (IBUS_IS_INPUT_CONTEXT (context)); g_assert (G_IS_ASYNC_RESULT (res)); g_assert (error == NULL || *error == NULL); variant = g_dbus_proxy_call_finish ((GDBusProxy *) context, res, error); if (variant == NULL) { return NULL; } engine_desc_variant = g_variant_get_child_value (variant, 0); 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) { GVariant *result = NULL; GError *error = NULL; GVariant *engine_desc_variant; IBusEngineDesc *desc; g_assert (IBUS_IS_INPUT_CONTEXT (context)); 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; } engine_desc_variant = g_variant_get_child_value (result, 0); 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 */ ); } void ibus_input_context_set_client_commit_preedit (IBusInputContext *context, gboolean client_commit) { GVariant *cached_content_type; GVariant *var_client_commit; g_assert (IBUS_IS_INPUT_CONTEXT (context)); cached_content_type = g_dbus_proxy_get_cached_property ((GDBusProxy *) context, "ClientCommitPreedit"); var_client_commit = g_variant_new ("(b)", client_commit); g_variant_ref_sink (var_client_commit); if (cached_content_type == NULL) { g_dbus_proxy_call ((GDBusProxy *) context, "org.freedesktop.DBus.Properties.Set", g_variant_new ("(ssv)", IBUS_INTERFACE_INPUT_CONTEXT, "ClientCommitPreedit", var_client_commit), 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 (var_client_commit); } #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.22/src/ibusobject.h0000644000000000000000000001042313623750431012527 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 "destroy" 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.22/src/ibusattrlist.c0000644000000000000000000001346113623750431013127 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.22/src/ibusbus.c0000644000000000000000000025235113623750431012055 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) 2015-2019 Takao Fujiwara * Copyright (C) 2008-2016 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 #include "ibusmarshalers.h" #include "ibusinternal.h" #include "ibusshare.h" #include "ibusenginedesc.h" #include "ibusserializable.h" #include "ibusconfig.h" #define IBUS_BUS_GET_PRIVATE(o) \ ((IBusBusPrivate *)ibus_bus_get_instance_private (o)) enum { CONNECTED, DISCONNECTED, GLOBAL_ENGINE_CHANGED, NAME_OWNER_CHANGED, LAST_SIGNAL, }; enum { PROP_0 = 0, PROP_CONNECT_ASYNC, PROP_CLIENT_ONLY, }; /* IBusBusPriv */ struct _IBusBusPrivate { GFileMonitor *monitor; GDBusConnection *connection; gboolean connected; 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; gboolean use_portal; gboolean client_only; GCancellable *cancellable; guint portal_name_watch_id; }; 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_connect_async (IBusBus *bus); 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_WITH_PRIVATE (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)); /** * IBusBus:client-only: * * Whether the #IBusBus object is for client use only. * */ g_object_class_install_property ( gobject_class, PROP_CLIENT_ONLY, g_param_spec_boolean ("client-only", "ClientOnly", "Client use only", 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); } 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); bus->priv->connected = FALSE; /* 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); bus->priv->connected = TRUE; /* 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_start_portal_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { IBusBus *bus = IBUS_BUS (user_data); GVariant *result; GError *error = NULL; result = g_dbus_connection_call_finish (G_DBUS_CONNECTION (source_object), res, &error); if (result != NULL) { ibus_bus_connect_completed (bus); g_variant_unref (result); } else { g_error_free (error); g_dbus_connection_close (bus->priv->connection, NULL, NULL, NULL); g_object_unref (bus->priv->connection); bus->priv->connection = NULL; g_free (bus->priv->bus_address); bus->priv->bus_address = NULL; } g_object_unref (bus); } 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) { if (bus->priv->use_portal) { g_object_set_data (G_OBJECT (bus->priv->connection), "ibus-portal-connection", GINT_TO_POINTER (TRUE)); g_dbus_connection_call ( bus->priv->connection, IBUS_SERVICE_PORTAL, IBUS_PATH_IBUS, "org.freedesktop.DBus.Peer", "Ping", g_variant_new ("()"), G_VARIANT_TYPE ("()"), G_DBUS_CALL_FLAGS_NONE, -1, bus->priv->cancellable, (GAsyncReadyCallback) _bus_connect_start_portal_cb, g_object_ref (bus)); } else { 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 gchar * ibus_bus_get_bus_address (IBusBus *bus) { if (_bus->priv->use_portal) return g_dbus_address_get_for_bus_sync (G_BUS_TYPE_SESSION, NULL, NULL); else return g_strdup (ibus_get_address ()); } static void ibus_bus_connect_async (IBusBus *bus) { gchar *bus_address = ibus_bus_get_bus_address (bus); if (bus_address == NULL) return; if (g_strcmp0 (bus->priv->bus_address, bus_address) == 0) { g_free (bus_address); return; } /* Close current connection and cancel ongoing connect request. */ ibus_bus_close_connection (bus); bus->priv->bus_address = 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 gboolean is_in_flatpak (void) { static gboolean flatpak_info_read; static gboolean in_flatpak; if (flatpak_info_read) return in_flatpak; flatpak_info_read = TRUE; if (g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS)) in_flatpak = TRUE; return in_flatpak; } static gboolean ibus_bus_should_connect_portal (IBusBus *bus) { return bus->priv->client_only && (is_in_flatpak () || g_getenv ("IBUS_USE_PORTAL") != NULL); } 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; 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->client_only = 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); 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; } if (buf.st_mode != (S_IFDIR | S_IRWXU)) { errno = 0; if (g_chmod (path, 0700)) g_warning ("chmod failed: %s", errno ? g_strerror (errno) : ""); } } 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; case PROP_CLIENT_ONLY: bus->priv->client_only = 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; case PROP_CLIENT_ONLY: g_value_set_boolean (value, bus->priv->client_only); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (bus, prop_id, pspec); } } static void portal_name_appeared (GDBusConnection *connection, const gchar *name, const gchar *owner, gpointer user_data) { IBusBus *bus = IBUS_BUS (user_data); if (bus->priv->connection == NULL) ibus_bus_connect_async (bus); } static void portal_name_vanished (GDBusConnection *connection, const gchar *name, gpointer user_data) { IBusBus *bus = IBUS_BUS (user_data); if (bus->priv->connection) g_dbus_connection_close (bus->priv->connection, NULL, NULL, NULL); } static GObject* ibus_bus_constructor (GType type, guint n_params, GObjectConstructParam *params) { GObject *object; GFile *file; /* 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); _bus->priv->use_portal = ibus_bus_should_connect_portal (_bus); if (!_bus->priv->use_portal) { 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); } else { _bus->priv->portal_name_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION, IBUS_SERVICE_PORTAL, G_BUS_NAME_WATCHER_FLAGS_NONE, portal_name_appeared, portal_name_vanished, _bus, NULL); } if (_bus->priv->connect_async) ibus_bus_connect_async (_bus); else ibus_bus_connect (_bus); } else { object = g_object_ref (G_OBJECT (_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; if (bus->priv->portal_name_watch_id) { g_bus_unwatch_name (bus->priv->portal_name_watch_id); bus->priv->portal_name_watch_id = 0; } IBUS_OBJECT_CLASS (ibus_bus_parent_class)->destroy (object); } static gboolean _async_finish_void (GTask *task, GError **error) { /* g_task_propagate_error() is not a public API and * g_task_had_error() needs to be called before * g_task_propagate_pointer() clears task->error. */ gboolean had_error = g_task_had_error (task); g_task_propagate_pointer (task, error); if (had_error) return FALSE; return TRUE; } static gchar * _async_finish_object_path (GTask *task, GError **error) { gboolean had_error = g_task_had_error (task); GVariant *result = g_task_propagate_pointer (task, error); GVariant *variant = NULL; gchar *path = NULL; if (had_error) { g_assert (result == NULL); return NULL; } g_return_val_if_fail (result != NULL, NULL); g_variant_get (result, "(v)", &variant); path = g_variant_dup_string (variant, NULL); g_variant_unref (variant); g_variant_unref (result); return path; } static gchar * _async_finish_string (GTask *task, GError **error) { gboolean had_error = g_task_had_error (task); GVariant *variant = g_task_propagate_pointer (task, error); gchar *s = NULL; if (had_error) { g_assert (variant == NULL); return NULL; } g_return_val_if_fail (variant != NULL, NULL); g_variant_get (variant, "(&s)", &s); g_variant_unref (variant); return s; } static gboolean _async_finish_gboolean (GTask *task, GError **error) { gboolean had_error = g_task_had_error (task); GVariant *variant = g_task_propagate_pointer (task, error); gboolean retval = FALSE; if (had_error) { g_assert (variant == NULL); return FALSE; } g_return_val_if_fail (variant != NULL, FALSE); g_variant_get (variant, "(b)", &retval); g_variant_unref (variant); return retval; } static guint _async_finish_guint (GTask *task, GError **error) { gboolean had_error = g_task_had_error (task); GVariant *variant = g_task_propagate_pointer (task, error); static const guint bad_id = 0; guint id = 0; if (had_error) { g_assert (variant == NULL); return bad_id; } g_return_val_if_fail (variant != NULL, bad_id); g_variant_get (variant, "(u)", &id); g_variant_unref (variant); return id; } IBusBus * ibus_bus_new (void) { IBusBus *bus = IBUS_BUS (g_object_new (IBUS_TYPE_BUS, "connect-async", FALSE, "client-only", FALSE, NULL)); return bus; } IBusBus * ibus_bus_new_async (void) { IBusBus *bus = IBUS_BUS (g_object_new (IBUS_TYPE_BUS, "connect-async", TRUE, "client-only", FALSE, NULL)); return bus; } IBusBus * ibus_bus_new_async_client (void) { IBusBus *bus = IBUS_BUS (g_object_new (IBUS_TYPE_BUS, "connect-async", TRUE, "client-only", 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 bus->priv->connected; } 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, GTask *task) { GError *error = NULL; IBusInputContext *context = ibus_input_context_new_async_finish (res, &error); if (context == NULL) g_task_return_error (task, error); else g_task_return_pointer (task, context, NULL); g_object_unref (task); } static void _create_input_context_async_step_one_done (GDBusConnection *connection, GAsyncResult *res, GTask *task) { GError *error = NULL; GVariant *variant = g_dbus_connection_call_finish (connection, res, &error); const gchar *path = NULL; IBusBus *bus; GCancellable *cancellable; if (variant == NULL) { g_task_return_error (task, error); g_object_unref (task); return; } if (g_dbus_connection_is_closed (connection)) { /* * The connection is closed, can not continue next steps, so complete * the asynchronous request with error. */ g_variant_unref(variant); g_task_return_new_error (task, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "Connection is closed."); return; } g_variant_get (variant, "(&o)", &path); g_variant_unref(variant); bus = (IBusBus *)g_task_get_source_object (task); g_assert (IBUS_IS_BUS (bus)); cancellable = g_task_get_cancellable (task); ibus_input_context_new_async (path, bus->priv->connection, cancellable, (GAsyncReadyCallback)_create_input_context_async_step_two_done, task); } void ibus_bus_create_input_context_async (IBusBus *bus, const gchar *client_name, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task; g_return_if_fail (IBUS_IS_BUS (bus)); g_return_if_fail (client_name != NULL); g_return_if_fail (callback != NULL); task = g_task_new (bus, cancellable, callback, user_data); g_task_set_source_tag (task, ibus_bus_create_input_context_async); /* do not use ibus_bus_call_async, instead 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_bus_get_service_name (bus), IBUS_PATH_IBUS, bus->priv->use_portal ? IBUS_INTERFACE_PORTAL : 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, task); } IBusInputContext * ibus_bus_create_input_context_async_finish (IBusBus *bus, GAsyncResult *res, GError **error) { GTask *task; gboolean had_error; IBusInputContext *context = NULL; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert (g_task_get_source_tag (task) == ibus_bus_create_input_context_async); had_error = g_task_had_error (task); context = g_task_propagate_pointer (task, error); if (had_error) { g_assert (context == NULL); return NULL; } 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert(g_task_get_source_tag (task) == ibus_bus_current_input_context_async); return _async_finish_object_path (task, 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert(g_task_get_source_tag (task) == ibus_bus_request_name_async); return _async_finish_guint (task, 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert(g_task_get_source_tag (task) == ibus_bus_release_name_async); return _async_finish_guint (task, 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert(g_task_get_source_tag (task) == ibus_bus_name_has_owner_async); return _async_finish_gboolean (task, 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert(g_task_get_source_tag (task) == ibus_bus_add_match_async); return _async_finish_void (task, 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert(g_task_get_source_tag (task) == ibus_bus_remove_match_async); return _async_finish_void (task, 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert(g_task_get_source_tag (task) == ibus_bus_get_name_owner_async); return g_strdup (_async_finish_string (task, error)); } GDBusConnection * ibus_bus_get_connection (IBusBus *bus) { g_return_val_if_fail (IBUS_IS_BUS (bus), NULL); return bus->priv->connection; } const gchar * ibus_bus_get_service_name (IBusBus *bus) { if (bus->priv->use_portal) return IBUS_SERVICE_PORTAL; return IBUS_SERVICE_IBUS; } 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert (g_task_get_source_tag (task) == ibus_bus_exit_async); return _async_finish_void (task, 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert ( g_task_get_source_tag (task) == ibus_bus_register_component_async); return _async_finish_void (task, 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) { GTask *task; gboolean had_error; GVariant *result = NULL; GVariant *variant = NULL; GList *retval = NULL; GVariantIter *iter = NULL; GVariant *var; g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); had_error = g_task_had_error (task); result = g_task_propagate_pointer (task, error); if (had_error) { g_assert (result == NULL); return NULL; } g_return_val_if_fail (result != NULL, NULL); g_variant_get (result, "(v)", &variant); iter = g_variant_iter_new (variant); 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; } #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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert(g_task_get_source_tag (task) == ibus_bus_get_use_sys_layout_async); return _async_finish_gboolean (task, 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert(g_task_get_source_tag (task) == ibus_bus_get_use_global_engine_async); return _async_finish_gboolean (task, 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert(g_task_get_source_tag (task) == ibus_bus_is_global_engine_enabled_async); return _async_finish_gboolean (task, 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) { GTask *task; gboolean had_error; GVariant *result = NULL; g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); had_error = g_task_had_error (task); result = g_task_propagate_pointer (task, error); if (had_error) { g_assert (result == NULL); return NULL; } 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); } g_variant_unref (result); 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert (g_task_get_source_tag (task) == ibus_bus_set_global_engine_async); return _async_finish_void (task, 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_assert (g_task_get_source_tag (task) == ibus_bus_preload_engines_async); return _async_finish_void (task, 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) { GTask *task; gboolean had_error; GVariant *result = NULL; g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); had_error = g_task_had_error (task); result = g_task_propagate_pointer (task, error); if (had_error) { g_assert (result == NULL); return NULL; } g_return_val_if_fail (result != NULL, NULL); GVariant *retval = NULL; g_variant_get (result, "(v)", &retval); g_variant_unref (result); 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (g_task_is_valid (res, bus)); task = G_TASK (res); g_return_val_if_fail ( g_task_get_source_tag (task) == ibus_bus_set_ibus_property_async, FALSE); return _async_finish_void (task, 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); if (bus->priv->use_portal && g_strcmp0 (bus_name, IBUS_SERVICE_IBUS) == 0) { bus_name = IBUS_SERVICE_PORTAL; if (g_strcmp0 (interface, IBUS_INTERFACE_IBUS) == 0) interface = IBUS_INTERFACE_PORTAL; } 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) { GTask *task; GError *error = NULL; GVariant *variant; g_assert (G_IS_DBUS_CONNECTION (connection)); task = (GTask* ) user_data; variant = g_dbus_connection_call_finish (connection, res, &error); if (variant == NULL) g_task_return_error (task, error); else g_task_return_pointer (task, variant, (GDestroyNotify) g_variant_unref); g_object_unref (task); } 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) { GTask *task; g_assert (IBUS_IS_BUS (bus)); g_assert (member != NULL); g_return_if_fail (ibus_bus_is_connected (bus)); task = g_task_new (bus, cancellable, callback, user_data); g_task_set_source_tag (task, source_tag); if (bus->priv->use_portal && g_strcmp0 (bus_name, IBUS_SERVICE_IBUS) == 0) { bus_name = IBUS_SERVICE_PORTAL; if (g_strcmp0 (interface, IBUS_INTERFACE_IBUS) == 0) interface = IBUS_INTERFACE_PORTAL; } 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, task); } ibus-1.5.22/src/ibusenumtypes.c0000644000000000000000000003045313623751421013312 00000000000000 /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */ #include "ibus.h" /* 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 "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 "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; } /* enumerations from "ibusxevent.h" */ GType ibus_xevent_type_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { IBUS_X_EVENT_NOTHING, "IBUS_X_EVENT_NOTHING", "nothing" }, { IBUS_X_EVENT_KEY_PRESS, "IBUS_X_EVENT_KEY_PRESS", "key-press" }, { IBUS_X_EVENT_KEY_RELEASE, "IBUS_X_EVENT_KEY_RELEASE", "key-release" }, { IBUS_X_EVENT_OTHER, "IBUS_X_EVENT_OTHER", "other" }, { IBUS_X_EVENT_EVENT_LAST, "IBUS_X_EVENT_EVENT_LAST", "event-last" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("IBusXEventType"), values); } return etype; } /* Generated data ends here */ ibus-1.5.22/src/tests/0000755000000000000000000000000013623751564011457 500000000000000ibus-1.5.22/src/tests/Makefile.am0000644000000000000000000001221713623750431013426 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2015 Peng Huang # Copyright (c) 2015-2019 Takao Fujiwara # Copyright (c) 2007-2018 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) CLEANFILES = if ENABLE_ENGINE TESTS += ibus-engine-switch endif if ENABLE_GTK3 TESTS += ibus-compose if ENABLE_XTEST TESTS += ibus-keypress endif endif TESTS_ENVIRONMENT = \ top_builddir=$(top_builddir) \ top_srcdir=$(top_srcdir) \ builddir=$(builddir) \ srcdir=$(srcdir) \ LD_LIBRARY_PATH="$(top_builddir)/src/.libs:$(top_builddir)/src" \ DISABLE_GUI_TESTS="$(DISABLE_GUI_TESTS)" \ DISABLE_DAEMONIZE_IN_TESTS="$(DISABLE_DAEMONIZE_IN_TESTS)" \ $(NULL) LOG_COMPILER = $(srcdir)/runtest test_metas_in = meta.test.in if ENABLE_INSTALL_TESTS bin_SCRIPTS = ibus-desktop-testing-runner test_execs = $(TESTS:ibus-compose=ibus-compose-locales) test_metas = $(addsuffix .test, $(test_execs)) test_sources_DATA = \ $(test_metas) \ ibus-compose.emoji \ ibus-compose.env \ $(NULL) test_sourcesdir = $(datadir)/installed-tests/ibus CLEANFILES += \ $(test_metas) \ ibus-desktop-testing-runner \ $(NULL) test_execs_PROGRAMS = $(TESTS) if ENABLE_GTK3 test_execs_SCRIPTS = ibus-compose-locales CLEANFILES += \ ibus-compose-locales \ $(NULL) endif test_execsdir = $(libexecdir)/installed-tests/ibus endif $(test_metas): $(test_metas_in) $(test_programs) f=`echo $@ | sed -e 's/\.test//'`; \ TEST_EXEC=$(test_execsdir)/$$f; \ sed -e "s|@TEST_EXEC[@]|$$TEST_EXEC|g" $(test_metas_in) > $@.tmp; \ mv $@.tmp $@; \ $(NULL) ibus-compose-locales: ibus-compose-locales.in SRCDIR=$(test_sourcesdir); \ sed -e "s|@SRCDIR[@]|$$SRCDIR|g" $< > $@.tmp; \ mv $@.tmp $@; \ $(NULL) ibus-desktop-testing-runner: ibus-desktop-testing-runner.in INSTALLEDDIR=$(datadir)/installed-tests; \ sed -e "s|@INSTALLEDDIR[@]|$$INSTALLEDDIR|g" $< > $@.tmp; \ mv $@.tmp $@; \ $(NULL) EXTRA_DIST = \ $(test_metas_in) \ runtest \ ibus-compose.emoji \ ibus-compose.env \ ibus-compose-locales.in \ ibus-desktop-testing-runner.in \ $(NULL) 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_keypress_SOURCES = ibus-keypress.c ibus_keypress_CFLAGS = @GTK3_CFLAGS@ @XTEST_CFLAGS@ ibus_keypress_LDADD = $(prog_ldadd) @GTK3_LIBS@ @XTEST_LIBS@ 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.22/src/tests/Makefile.in0000644000000000000000000020631413623751264013447 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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) 2015-2019 Takao Fujiwara # Copyright (c) 2007-2018 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_5) 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) $(am__EXEEXT_4) @ENABLE_ENGINE_TRUE@am__append_1 = ibus-engine-switch @ENABLE_GTK3_TRUE@am__append_2 = ibus-compose @ENABLE_GTK3_TRUE@@ENABLE_XTEST_TRUE@am__append_3 = ibus-keypress @ENABLE_INSTALL_TESTS_TRUE@am__append_4 = \ @ENABLE_INSTALL_TESTS_TRUE@ $(test_metas) \ @ENABLE_INSTALL_TESTS_TRUE@ ibus-desktop-testing-runner \ @ENABLE_INSTALL_TESTS_TRUE@ $(NULL) @ENABLE_INSTALL_TESTS_TRUE@test_execs_PROGRAMS = $(am__EXEEXT_5) @ENABLE_GTK3_TRUE@@ENABLE_INSTALL_TESTS_TRUE@am__append_5 = \ @ENABLE_GTK3_TRUE@@ENABLE_INSTALL_TESTS_TRUE@ ibus-compose-locales \ @ENABLE_GTK3_TRUE@@ENABLE_INSTALL_TESTS_TRUE@ $(NULL) subdir = src/tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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) @ENABLE_GTK3_TRUE@@ENABLE_XTEST_TRUE@am__EXEEXT_4 = \ @ENABLE_GTK3_TRUE@@ENABLE_XTEST_TRUE@ ibus-keypress$(EXEEXT) am__EXEEXT_5 = 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) $(am__EXEEXT_4) am__installdirs = "$(DESTDIR)$(test_execsdir)" "$(DESTDIR)$(bindir)" \ "$(DESTDIR)$(test_execsdir)" "$(DESTDIR)$(test_sourcesdir)" PROGRAMS = $(noinst_PROGRAMS) $(test_execs_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_keypress_OBJECTS = ibus_keypress-ibus-keypress.$(OBJEXT) ibus_keypress_OBJECTS = $(am_ibus_keypress_OBJECTS) ibus_keypress_DEPENDENCIES = $(am__DEPENDENCIES_2) ibus_keypress_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(ibus_keypress_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ 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__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; }; \ } SCRIPTS = $(bin_SCRIPTS) $(test_execs_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 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/ibus-bus.Po \ ./$(DEPDIR)/ibus-config.Po ./$(DEPDIR)/ibus-configservice.Po \ ./$(DEPDIR)/ibus-engine-switch.Po ./$(DEPDIR)/ibus-factory.Po \ ./$(DEPDIR)/ibus-inputcontext-create.Po \ ./$(DEPDIR)/ibus-inputcontext.Po ./$(DEPDIR)/ibus-keynames.Po \ ./$(DEPDIR)/ibus-registry.Po ./$(DEPDIR)/ibus-serializable.Po \ ./$(DEPDIR)/ibus-util.Po \ ./$(DEPDIR)/ibus_compose-ibus-compose.Po \ ./$(DEPDIR)/ibus_keypress-ibus-keypress.Po \ ./$(DEPDIR)/ibus_share-ibus-share.Po 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_keypress_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_keypress_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 DATA = $(test_sources_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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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) CLEANFILES = $(am__append_4) $(am__append_5) TESTS_ENVIRONMENT = \ top_builddir=$(top_builddir) \ top_srcdir=$(top_srcdir) \ builddir=$(builddir) \ srcdir=$(srcdir) \ LD_LIBRARY_PATH="$(top_builddir)/src/.libs:$(top_builddir)/src" \ DISABLE_GUI_TESTS="$(DISABLE_GUI_TESTS)" \ DISABLE_DAEMONIZE_IN_TESTS="$(DISABLE_DAEMONIZE_IN_TESTS)" \ $(NULL) LOG_COMPILER = $(srcdir)/runtest test_metas_in = meta.test.in @ENABLE_INSTALL_TESTS_TRUE@bin_SCRIPTS = ibus-desktop-testing-runner @ENABLE_INSTALL_TESTS_TRUE@test_execs = $(TESTS:ibus-compose=ibus-compose-locales) @ENABLE_INSTALL_TESTS_TRUE@test_metas = $(addsuffix .test, $(test_execs)) @ENABLE_INSTALL_TESTS_TRUE@test_sources_DATA = \ @ENABLE_INSTALL_TESTS_TRUE@ $(test_metas) \ @ENABLE_INSTALL_TESTS_TRUE@ ibus-compose.emoji \ @ENABLE_INSTALL_TESTS_TRUE@ ibus-compose.env \ @ENABLE_INSTALL_TESTS_TRUE@ $(NULL) @ENABLE_INSTALL_TESTS_TRUE@test_sourcesdir = $(datadir)/installed-tests/ibus @ENABLE_GTK3_TRUE@@ENABLE_INSTALL_TESTS_TRUE@test_execs_SCRIPTS = ibus-compose-locales @ENABLE_INSTALL_TESTS_TRUE@test_execsdir = $(libexecdir)/installed-tests/ibus EXTRA_DIST = \ $(test_metas_in) \ runtest \ ibus-compose.emoji \ ibus-compose.env \ ibus-compose-locales.in \ ibus-desktop-testing-runner.in \ $(NULL) 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_keypress_SOURCES = ibus-keypress.c ibus_keypress_CFLAGS = @GTK3_CFLAGS@ @XTEST_CFLAGS@ ibus_keypress_LDADD = $(prog_ldadd) @GTK3_LIBS@ @XTEST_LIBS@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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 install-test_execsPROGRAMS: $(test_execs_PROGRAMS) @$(NORMAL_INSTALL) @list='$(test_execs_PROGRAMS)'; test -n "$(test_execsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(test_execsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(test_execsdir)" || 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)$(test_execsdir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(test_execsdir)$$dir" || exit $$?; \ } \ ; done uninstall-test_execsPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(test_execs_PROGRAMS)'; test -n "$(test_execsdir)" || 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)$(test_execsdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(test_execsdir)" && rm -f $$files clean-test_execsPROGRAMS: @list='$(test_execs_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-keypress$(EXEEXT): $(ibus_keypress_OBJECTS) $(ibus_keypress_DEPENDENCIES) $(EXTRA_ibus_keypress_DEPENDENCIES) @rm -f ibus-keypress$(EXEEXT) $(AM_V_CCLD)$(ibus_keypress_LINK) $(ibus_keypress_OBJECTS) $(ibus_keypress_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) 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) install-test_execsSCRIPTS: $(test_execs_SCRIPTS) @$(NORMAL_INSTALL) @list='$(test_execs_SCRIPTS)'; test -n "$(test_execsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(test_execsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(test_execsdir)" || 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)$(test_execsdir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(test_execsdir)$$dir" || exit $$?; \ } \ ; done uninstall-test_execsSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(test_execs_SCRIPTS)'; test -n "$(test_execsdir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(test_execsdir)'; $(am__uninstall_files_from_dir) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-bus.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-config.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-configservice.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-engine-switch.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-factory.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-inputcontext-create.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-inputcontext.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-keynames.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-registry.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-serializable.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus-util.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_compose-ibus-compose.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_keypress-ibus-keypress.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_share-ibus-share.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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_keypress-ibus-keypress.o: ibus-keypress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_keypress_CFLAGS) $(CFLAGS) -MT ibus_keypress-ibus-keypress.o -MD -MP -MF $(DEPDIR)/ibus_keypress-ibus-keypress.Tpo -c -o ibus_keypress-ibus-keypress.o `test -f 'ibus-keypress.c' || echo '$(srcdir)/'`ibus-keypress.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_keypress-ibus-keypress.Tpo $(DEPDIR)/ibus_keypress-ibus-keypress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibus-keypress.c' object='ibus_keypress-ibus-keypress.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_keypress_CFLAGS) $(CFLAGS) -c -o ibus_keypress-ibus-keypress.o `test -f 'ibus-keypress.c' || echo '$(srcdir)/'`ibus-keypress.c ibus_keypress-ibus-keypress.obj: ibus-keypress.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(ibus_keypress_CFLAGS) $(CFLAGS) -MT ibus_keypress-ibus-keypress.obj -MD -MP -MF $(DEPDIR)/ibus_keypress-ibus-keypress.Tpo -c -o ibus_keypress-ibus-keypress.obj `if test -f 'ibus-keypress.c'; then $(CYGPATH_W) 'ibus-keypress.c'; else $(CYGPATH_W) '$(srcdir)/ibus-keypress.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_keypress-ibus-keypress.Tpo $(DEPDIR)/ibus_keypress-ibus-keypress.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ibus-keypress.c' object='ibus_keypress-ibus-keypress.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_keypress_CFLAGS) $(CFLAGS) -c -o ibus_keypress-ibus-keypress.obj `if test -f 'ibus-keypress.c'; then $(CYGPATH_W) 'ibus-keypress.c'; else $(CYGPATH_W) '$(srcdir)/ibus-keypress.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 install-test_sourcesDATA: $(test_sources_DATA) @$(NORMAL_INSTALL) @list='$(test_sources_DATA)'; test -n "$(test_sourcesdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(test_sourcesdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(test_sourcesdir)" || 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)$(test_sourcesdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(test_sourcesdir)" || exit $$?; \ done uninstall-test_sourcesDATA: @$(NORMAL_UNINSTALL) @list='$(test_sources_DATA)'; test -n "$(test_sourcesdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(test_sourcesdir)'; $(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 $$? 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) ibus-keypress.log: ibus-keypress$(EXEEXT) @p='ibus-keypress$(EXEEXT)'; \ b='ibus-keypress'; \ $(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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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) $(SCRIPTS) $(DATA) installdirs: for dir in "$(DESTDIR)$(test_execsdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(test_execsdir)" "$(DESTDIR)$(test_sourcesdir)"; 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: -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 clean-noinstPROGRAMS \ clean-test_execsPROGRAMS mostlyclean-am distclean: distclean-am -rm -f ./$(DEPDIR)/ibus-bus.Po -rm -f ./$(DEPDIR)/ibus-config.Po -rm -f ./$(DEPDIR)/ibus-configservice.Po -rm -f ./$(DEPDIR)/ibus-engine-switch.Po -rm -f ./$(DEPDIR)/ibus-factory.Po -rm -f ./$(DEPDIR)/ibus-inputcontext-create.Po -rm -f ./$(DEPDIR)/ibus-inputcontext.Po -rm -f ./$(DEPDIR)/ibus-keynames.Po -rm -f ./$(DEPDIR)/ibus-registry.Po -rm -f ./$(DEPDIR)/ibus-serializable.Po -rm -f ./$(DEPDIR)/ibus-util.Po -rm -f ./$(DEPDIR)/ibus_compose-ibus-compose.Po -rm -f ./$(DEPDIR)/ibus_keypress-ibus-keypress.Po -rm -f ./$(DEPDIR)/ibus_share-ibus-share.Po -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-test_sourcesDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binSCRIPTS install-test_execsPROGRAMS \ install-test_execsSCRIPTS 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 ./$(DEPDIR)/ibus-bus.Po -rm -f ./$(DEPDIR)/ibus-config.Po -rm -f ./$(DEPDIR)/ibus-configservice.Po -rm -f ./$(DEPDIR)/ibus-engine-switch.Po -rm -f ./$(DEPDIR)/ibus-factory.Po -rm -f ./$(DEPDIR)/ibus-inputcontext-create.Po -rm -f ./$(DEPDIR)/ibus-inputcontext.Po -rm -f ./$(DEPDIR)/ibus-keynames.Po -rm -f ./$(DEPDIR)/ibus-registry.Po -rm -f ./$(DEPDIR)/ibus-serializable.Po -rm -f ./$(DEPDIR)/ibus-util.Po -rm -f ./$(DEPDIR)/ibus_compose-ibus-compose.Po -rm -f ./$(DEPDIR)/ibus_keypress-ibus-keypress.Po -rm -f ./$(DEPDIR)/ibus_share-ibus-share.Po -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-binSCRIPTS uninstall-test_execsPROGRAMS \ uninstall-test_execsSCRIPTS uninstall-test_sourcesDATA .MAKE: check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \ check-am clean clean-generic clean-libtool \ clean-noinstPROGRAMS clean-test_execsPROGRAMS 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-binSCRIPTS \ 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-test_execsPROGRAMS install-test_execsSCRIPTS \ install-test_sourcesDATA 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-binSCRIPTS \ uninstall-test_execsPROGRAMS uninstall-test_execsSCRIPTS \ uninstall-test_sourcesDATA .PRECIOUS: Makefile $(test_metas): $(test_metas_in) $(test_programs) f=`echo $@ | sed -e 's/\.test//'`; \ TEST_EXEC=$(test_execsdir)/$$f; \ sed -e "s|@TEST_EXEC[@]|$$TEST_EXEC|g" $(test_metas_in) > $@.tmp; \ mv $@.tmp $@; \ $(NULL) ibus-compose-locales: ibus-compose-locales.in SRCDIR=$(test_sourcesdir); \ sed -e "s|@SRCDIR[@]|$$SRCDIR|g" $< > $@.tmp; \ mv $@.tmp $@; \ $(NULL) ibus-desktop-testing-runner: ibus-desktop-testing-runner.in INSTALLEDDIR=$(datadir)/installed-tests; \ sed -e "s|@INSTALLEDDIR[@]|$$INSTALLEDDIR|g" $< > $@.tmp; \ mv $@.tmp $@; \ $(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.22/src/tests/ibus-compose.c0000644000000000000000000002621713623750431014150 00000000000000#include #include "ibus.h" #include "ibuscomposetable.h" #include "ibusenginesimpleprivate.h" #define GREEN "\033[0;32m" #define RED "\033[0;31m" #define NC "\033[0m" IBusBus *m_bus; gchar *m_compose_file; IBusComposeTableEx *m_compose_table; IBusEngine *m_engine; gchar *m_srcdir; static gboolean window_focus_in_event_cb (GtkWidget *entry, GdkEventFocus *event, gpointer data); static gchar * get_compose_path () { const gchar * const *langs; const gchar * const *l; gchar *compose_path = NULL; #if GLIB_CHECK_VERSION (2, 58, 0) langs = g_get_language_names_with_category ("LC_CTYPE"); #else langs = g_get_language_names (); #endif 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; } return compose_path; } 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; m_engine = ibus_engine_new_with_type (IBUS_TYPE_ENGINE_SIMPLE, name, engine_path, ibus_bus_get_connection (m_bus)); g_free (engine_path); if (m_compose_file) compose_path = g_build_filename (m_srcdir, m_compose_file, NULL); else compose_path = get_compose_path (); if (compose_path != NULL) { ibus_engine_simple_add_compose_file (IBUS_ENGINE_SIMPLE (m_engine), compose_path); m_compose_table = ibus_compose_table_load_cache (compose_path); if (m_compose_table == NULL) g_warning ("Your locale uses en_US compose table."); } g_free (compose_path); 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) { g_test_incomplete ("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; IBusComposeTablePrivate *priv; if (!ibus_bus_set_global_engine_async_finish (bus, res, &error)) { gchar *msg = g_strdup_printf ("set engine failed: %s", error->message); g_test_incomplete (msg); g_free (msg); 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); } } priv = m_compose_table->priv; if (priv) { for (i = 0; i < (priv->first_n_seqs * index_stride); i += index_stride) { for (j = i; j < i + (index_stride - 1); j++) { guint keyval = priv->data_first[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) { /* https://gitlab.gnome.org/GNOME/gtk/commit/9981f46e0b * The latest GTK does not emit "inserted-text" when the text is "". */ #if !GTK_CHECK_VERSION (3, 22, 16) static int n_loop = 0; #endif static guint stride = 0; static gboolean enable_32bit = FALSE; guint i; int seq; gunichar code = g_utf8_get_char (chars); const gchar *test; GtkEntry *entry = GTK_ENTRY (data); IBusComposeTablePrivate *priv; g_assert (m_compose_table != NULL); priv = m_compose_table->priv; #if !GTK_CHECK_VERSION (3, 22, 16) if (n_loop % 2 == 1) { n_loop = 0; return; } #endif i = stride + (m_compose_table->max_seq_len + 2) - 2; seq = (i + 2) / (m_compose_table->max_seq_len + 2); if (!enable_32bit) { if (m_compose_table->data[i] == code) { test = GREEN "PASS" NC; } else { test = RED "FAIL" NC; g_test_fail (); } g_print ("%05d/%05d %s expected: %04X typed: %04X\n", seq, m_compose_table->n_seqs, test, m_compose_table->data[i], code); } else { const gchar *p = chars; guint num = priv->data_first[i]; guint index = priv->data_first[i + 1]; guint j = 0; gboolean valid_output = TRUE; for (j = 0; j < num; j++) { if (priv->data_second[index + j] != code) { valid_output = FALSE; break; } p = g_utf8_next_char (p); code = g_utf8_get_char (p); } if (valid_output) { test = GREEN "PASS" NC; } else { test = RED "FAIL" NC; g_test_fail (); } g_print ("%05d/%05ld %s expected: %04X[%d] typed: %04X\n", seq, priv->first_n_seqs, test, valid_output ? priv->data_second[index] : priv->data_second[index + j], valid_output ? index + num : index + j, valid_output ? g_utf8_get_char (chars) : code); } stride += m_compose_table->max_seq_len + 2; if (!enable_32bit && seq == m_compose_table->n_seqs) { if (priv) { enable_32bit = TRUE; stride = 0; } else { gtk_main_quit (); return; } } if (enable_32bit && seq == priv->first_n_seqs) { gtk_main_quit (); return; } #if !GTK_CHECK_VERSION (3, 22, 16) n_loop++; #endif 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); } static void test_compose (void) { GLogLevelFlags flags; if (!register_ibus_engine ()) { g_test_fail (); return; } create_window (); /* FIXME: * IBusIMContext opens GtkIMContextSimple as the slave and * GtkIMContextSimple opens the compose table on el_GR.UTF-8, and the * multiple outputs in el_GR's compose causes a warning in gtkcomposetable * and the warning always causes a fatal in GTest: " "GTK+ supports to output one char only: " */ flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); gtk_main (); g_log_set_always_fatal (flags); } int main (int argc, char *argv[]) { const gchar *test_name; gchar *test_path; ibus_init (); /* Avoid a warning of "AT-SPI: Could not obtain desktop path or name" * with gtk_main(). */ g_setenv ("NO_AT_BRIDGE", "1", TRUE); g_test_init (&argc, &argv, NULL); gtk_init (&argc, &argv); m_srcdir = argc > 1 ? g_strdup (argv[1]) : g_strdup ("."); m_compose_file = g_strdup (g_getenv ("COMPOSE_FILE")); #if GLIB_CHECK_VERSION (2, 58, 0) test_name = g_get_language_names_with_category ("LC_CTYPE")[0]; #else test_name = g_getenv ("LANG"); #endif test_path = g_build_filename ("/ibus-compose", test_name, NULL); g_test_add_func (test_path, test_compose); g_free (test_path); return g_test_run (); } ibus-1.5.22/src/tests/ibus-serializable.c0000644000000000000000000001707313623750431015151 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.22/src/tests/ibus-configservice.c0000644000000000000000000000152213623750431015321 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.22/src/tests/ibus-compose.emoji0000644000000000000000000000134513623750431015024 00000000000000 : "♌" U264C # LEO : "♍" U264D # VIRGO : "∫" : "∬" : "🗼"

: "(゜∀゜)" : "*・゜゜・*:.。..。.:*・゜(n‘Д‘)η゜・*:.。. .。.:*・ ゜゜・* !!!!!" : "∭" : "∮" : "∯" : "∰" ibus-1.5.22/src/tests/ibus-desktop-testing-runner.in0000755000000000000000000002555213623750431017326 00000000000000#!/bin/sh # -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- # vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2018-2019 Takao Fujiwara # Copyright (c) 2018 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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # This test runs /usr/bin/ibus-daemon after install ibus # # # init 3 # Login as root # # /root/ibus/tests/test-console.sh --tests ibus-compose \ # --builddir /root/ibus/src/tests --srcdir /root/ibus/src/tests # POSIX sh has no 'echo -e' : ${ECHO:='/usr/bin/echo'} # POSIX sh has $UID : ${UID:='`id -u`'} PROGNAME=`basename $0` VERSION=0.1 DISPLAY=:99.0 BUILDDIR="." SRCDIR="." TEST_LOG="test-suite.log" TEST_LOG_STDOUT=0 RESULT_LOG="" HAVE_GRAPHICS=1 DESKTOP_COMMAND="dbus-launch --exit-with-session gnome-session" PID_XORG=0 PID_GNOME_SESSION=0 TESTING_RUNNER="default" TESTS="" GREEN='\033[0;32m' RED='\033[0;31m' NC='\033[0m' print_log() { if [ x"$RESULT_LOG" != x ] ; then # avoid 'echo -e' before call 'sed'. if [ x"$1" = x'-e' ] ; then shift fi NO_ESCAPE=`echo "$@" | sed -e 's/\\\033\\[0;3.m//g' -e 's/\\\033\\[0m//g'` $ECHO $NO_ESCAPE >> $RESULT_LOG else $ECHO "$@" fi } usage() { $ECHO -e \ "This test runs /usr/bin/ibus-daemon after install ibus\n" \ "$PROGNAME [OPTIONS…]\n" \ "\n" \ "OPTIONS:\n" \ "-h, --help This help\n" \ "-v, --version Show version\n" \ "-b, --builddir=BUILDDIR Set the BUILDDIR\n" \ "-s, --srcdir=SOURCEDIR Set the SOURCEDIR\n" \ "-c, --no-graphics Use Xvfb instead of Xorg\n" \ "-d, --desktop=DESKTOP Run DESTKTOP. The default is gnome-session\n" \ "-t, --tests=\"TESTS...\" Run TESTS programs which is separated by space\n" \ "-r, --runner=RUNNER Run TESTS programs with a test RUNNER.\n" \ " RUNNDER = gnome or default.\n" \ " default is an embedded runner.\n" \ "-o, --output=OUTPUT_FILE OUtput the log to OUTPUT_FILE\n" \ "-O, --result=RESULT_FILE OUtput the result to RESULT_FILE\n" \ "" } parse_args() { # This is GNU getopt. "sudo port getopt" in BSD? ARGS=`getopt -o hvb:s:cd:t:r:o:O: --long \ help,version,builddir:,srcdir:,no-graphics,desktop:,tests:,runner:,output:,result:\ -- "$@"`; eval set -- "$ARGS" while [ 1 ] ; do case "$1" in -h | --help ) usage; exit 0;; -v | --version ) $ECHO -e "$VERSION"; exit 0;; -b | --builddir ) BUILDDIR="$2"; shift 2;; -s | --srcdir ) SRCDIR="$2"; shift 2;; -c | --no-graphics ) HAVE_GRAPHICS=0; shift;; -d | --desktop ) DESKTOP_COMMAND="$2"; shift 2;; -t | --tests ) TESTS="$2"; shift 2;; -r | --runner ) TESTING_RUNNER="$2"; shift 2;; -o | --output ) TEST_LOG="$2"; shift 2;; -O | --result ) RESULT_LOG="$2"; shift 2;; -- ) shift; break;; * ) usage; exit 1;; esac done } init_desktop() { if [ "$RESULT_LOG" != "" ] ; then if [ -f $RESULT_LOG ] ; then rm $RESULT_LOG fi fi HAS_STDOUT=`echo "$TEST_LOG" | grep ':stdout'` if [ x"$HAS_STDOUT" != x ] ; then TEST_LOG=`echo "$TEST_LOG" | sed -e 's|:stdout||'` TEST_LOG_STDOUT=1 fi if [ "$TEST_LOG" = "" ] ; then print_log -e "${RED}FAIL${NC}: ${RED}ERROR${NC}: a log file is required to get return value with 'read' command" exit 255 elif [ -f $TEST_LOG ] ; then rm $TEST_LOG fi if [ x$FORCE_TEST != x ] ; then RUN_ARGS="$RUN_ARGS --force" fi if [ ! -f $HOME/.config/gnome-initial-setup-done ] ; then IS_SYSTEM_ACCOUNT=false if [ "$USER" = "root" ] ; then IS_SYSTEM_ACCOUNT=true fi if test ! -f /var/lib/AccountsService/users/$USER ; then mkdir -p /var/lib/AccountsService/users cat >> /var/lib/AccountsService/users/$USER << _EOF [User] Language=ja_JP.UTF-8 XSession=gnome SystemAccount=$IS_SYSTEM_ACCOUNT _EOF fi mkdir -p $HOME/.config touch $HOME/.config/gnome-initial-setup-done fi # Prevent from launching a XDG dialog XDG_LOCALE_FILE="$HOME/.config/user-dirs.locale" if [ -f $XDG_LOCALE_FILE ] ; then XDG_LANG_ORIG=`cat $XDG_LOCALE_FILE` XDG_LANG_NEW=`echo $LANG | sed -e 's/\(.*\)\..*/\1/'` if [ "$XDG_LANG_ORIG" != "$XDG_LANG_NEW" ] ; then echo "# Overriding XDG locale $XDG_LANG_ORIG with $XDG_LANG_NEW" echo "$XDG_LANG_NEW" > $XDG_LOCALE_FILE fi fi # `su` command does not run loginctl export XDG_SESSION_TYPE='x11' } run_dbus_daemon() { # Use dbus-launch --exit-with-session later instead of --sh-syntax export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus } run_desktop() { if test $HAVE_GRAPHICS -eq 1 ; then /usr/libexec/Xorg.wrap -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./xorg.log -config ./xorg.conf -configdir . $DISPLAY & else /usr/bin/Xvfb $DISPLAY -noreset +extension GLX +extension RANDR +extension RENDER -screen 0 1280x1024x24 & fi PID_XORG=$! sleep 1 export DISPLAY=$DISPLAY echo "Running $DESKTOP_COMMAND with $USER in `tty`" $DESKTOP_COMMAND & PID_GNOME_SESSION=$! sleep 30 HAS_GNOME=`echo $DESKTOP_COMMAND | grep gnome-session` if [ x"$HAS_GNOME" = x ] ; then ibus-daemon --daemonize --verbose sleep 3 fi } count_case_result() { retval=$1 pass=$2 fail=$3 if test $retval -eq 0 ; then pass=`expr $pass + 1` else fail=`expr $fail + 1` fi echo $pass $fail } echo_case_result() { retval=$1 tst=$2 subtst=${3:-''} if test $retval -eq 0 ; then echo "PASS: $tst $subtst" >>$TEST_LOG else echo "FAIL: $tst $subtst" >>$TEST_LOG fi } run_direct_test_cases() { pass=0 fail=0 for tst in $TESTS; do ENVS= if test -f $SRCDIR/${tst}.env ; then ENVS="`cat $SRCDIR/${tst}.env`" fi if test x"$ENVS" = x ; then $BUILDDIR/$tst $SRCDIR 2>>$TEST_LOG 1>>$TEST_LOG retval=$? read pass fail << EOF_COUNT `count_case_result $retval $pass $fail` EOF_COUNT echo_case_result $retval $tst CACHE_FILES=`ls *.cache` if [ x"$CACHE_FILES" != x ] ; then echo "# Clean $CACHE_FILES" >>$TEST_LOG rm $CACHE_FILES fi else i=1 # Deleted for var in "$ENVS" because IFS=$'\n' is not supported # in POSIX sh while read e ; do first=`echo "$e" | grep '^#'` if test x"$first" = x"#" ; then continue fi echo "# Starting $e $BUILDDIR/$tst $SRCDIR" >>$TEST_LOG env $e $BUILDDIR/$tst $SRCDIR 2>>$TEST_LOG 1>>$TEST_LOG retval=$? echo "# Finished $e $BUILDDIR/$tst $SRCDIR with $retval" >>$TEST_LOG read pass fail << EOF_COUNT `count_case_result $retval $pass $fail` EOF_COUNT echo_case_result $retval $tst $e CACHE_FILES=`ls *.cache` if [ x"$CACHE_FILES" != x ] ; then echo "# Clean $CACHE_FILES" >>$TEST_LOG rm $CACHE_FILES fi i=`expr $i + 1` done << EOF_ENVS `echo "$ENVS"` EOF_ENVS fi done echo $pass $fail } run_gnome_desktop_testing_runner() { pass=0 fail=0 if [ x"$TESTS" = x ] ; then TESTS='ibus' fi for tst in $TESTS; do tst_dir="@INSTALLEDDIR@/$tst" if [ ! -d "$tst_dir" ] ; then print_log -e "${RED}FAIL${NC}: Not found %tst_dir" fail=1 continue fi gnome-desktop-testing-runner $tst 2>>$TEST_LOG 1>>$TEST_LOG retval=$? read pass fail << EOF `count_case_result $retval $pass $fail` EOF done child_pass=`grep '^PASS:' $TEST_LOG | wc -l` child_fail=`grep '^FAIL:' $TEST_LOG | wc -l` if [ $child_pass -ne 0 ] || [ $child_fail -ne 0 ] ; then pass=$child_pass if [ $child_fail -ne 0 ] ; then fail=`expr $child_fail / 2` else fail=0 fi fi echo $pass $fail } run_test_suite() { pass=0 fail=0 export GTK_IM_MODULE=ibus export IBUS_COMPOSE_CACHE_DIR=$PWD if [ x"$TESTING_RUNNER" = x ] ; then TESTING_RUNNER="default" fi case $TESTING_RUNNER in default) # Get only the last value with do-while. read pass fail << EOF_RUNNER `run_direct_test_cases` EOF_RUNNER ;; gnome) read pass fail << EOF_RUNNER `run_gnome_desktop_testing_runner` EOF_RUNNER ;; esac echo "" print_log -e "${GREEN}PASS${NC}: $pass" print_log -e "${RED}FAIL${NC}: $fail" echo "" if [ $TEST_LOG_STDOUT -eq 1 ] ; then cat $TEST_LOG else echo "# See $TEST_LOG" fi } finit() { echo "# Killing left gnome-session and Xorg" kill $PID_GNOME_SESSION $PID_XORG ibus exit SUSER=`echo "$USER" | cut -c 1-7` LEFT_CALENDAR=`ps -ef | grep gnome-shell-calendar-server | grep $SUSER | grep -v grep` if [ x"$LEFT_CALENDAR" != x ] ; then echo "# Killing left gnome-shell-calendar-server" echo "$LEFT_CALENDAR" echo "$LEFT_CALENDAR" | awk '{print $2}' | xargs kill fi echo "# Finished $PROGNAME testing" } main() { parse_args "$@" init_desktop run_dbus_daemon 2>>$TEST_LOG 1>>$TEST_LOG run_desktop 2>>$TEST_LOG 1>>$TEST_LOG run_test_suite finit } # Need to enclose $@ with double quotes not to split the array. main "$@" ibus-1.5.22/src/tests/ibus-compose.env0000644000000000000000000000014413623750431014505 00000000000000LANG=el_GR.UTF-8 LANG=fi_FI.UTF-8 LANG=pt_BR.UTF-8 LANG=en_US.UTF-8 COMPOSE_FILE=ibus-compose.emoji ibus-1.5.22/src/tests/ibus-inputcontext.c0000644000000000000000000001633113623750431015243 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 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) { IBusInputContext *context; GLogLevelFlags flags; IBusEngineDesc *engine_desc; gchar *active_engine_name = NULL; gchar *current_ic; context = ibus_bus_create_input_context (bus, "test"); call_basic_ipcs (context); /* "No global engine." warning is not critical message. */ flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); engine_desc = ibus_bus_get_global_engine (bus); g_log_set_always_fatal (flags); if (engine_desc != NULL) { active_engine_name = g_strdup (ibus_engine_desc_get_name(engine_desc)); g_object_unref (engine_desc); engine_desc = NULL; } 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); } 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.22/src/tests/ibus-util.c0000644000000000000000000000052413623750431013451 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.22/src/tests/ibus-registry.c0000644000000000000000000000022513623750431014342 00000000000000#include int main() { ibus_init (); IBusRegistry *registry = ibus_registry_new (); g_object_unref (registry); return 0; } ibus-1.5.22/src/tests/runtest0000755000000000000000000001241513623750431013024 00000000000000#!/bin/sh # -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- # vim:set et sts=4: # 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:=.} : ${srcdir:=.} : ${DISABLE_GUI_TESTS:=''} : ${DISABLE_DAEMONIZE_IN_TESTS:=''} BUS_REQUIRED_TESTS=" ibus-bus ibus-config ibus-configservice ibus-factory ibus-inputcontext ibus-inputcontext-create ibus-engine-switch ibus-compose ibus-keypress test-stress " IBUS_SCHEMA_FILE='org.freedesktop.ibus.gschema.xml' GTK_QUERY_MODULE=gtk-query-immodules-3.0-32 MACHINE=`uname -m` if test x"$MACHINE" = xx86_64 ; then GTK_QUERY_MODULE=gtk-query-immodules-3.0-64 fi retval=0 # 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` libexecdir=`func_dirname $file` # top_srcdir != top_builddir in make dist libexecdir=`echo "$libexecdir" | sed -e "s|$top_srcdir|$top_builddir|"` if test -f $file.in; then mkdir -p components sed "s|@libexecdir@|$libexecdir|g" < $file.in > components/$base fi } trap 'func_cleanup $tstdir' 1 2 3 15 tst=$1; shift tstdir=tmp-`func_basename $tst` for t in $DISABLE_GUI_TESTS; do if test $t = `func_basename $tst`; then exit 77 fi done # IBusEngine has GSettings if test ! -f "$top_srcdir/data/dconf/$IBUS_SCHEMA_FILE" ; then echo "NOT FOUND $top_srcdir/data/dconf/$IBUS_SCHEMA_FILE" exit -1 fi run_test_case() { test -d $tstdir || mkdir $tstdir backup_dir=$PWD 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 if test ! -f "../$top_builddir/conf/memconf/ibus-memconf" ; then echo "NOT FOUNND ibus-memconf. Need configure --enable-memconf" exit -1 fi # func_copy_component replaces s/$top_srcdir/%top_builddir/ 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 if test -f "../$top_builddir/client/gtk3/.libs/im-ibus.so" ; then IM_IBUS_SO="../$top_builddir/client/gtk3/.libs/im-ibus.so" elif test -f "../$top_builddir/client/gtk3/im-ibus.so" ; then IM_IBUS_SO="../$top_builddir/client/gtk3/im-ibus.so" else echo "NOT FOUND $top_builddir/client/gtk3/im-ibus.so" exit -1 fi GTK_IM_MODULE_FILE=$PWD/imcache export GTK_IM_MODULE_FILE $GTK_QUERY_MODULE "$IM_IBUS_SO" > $GTK_IM_MODULE_FILE cp "../$top_srcdir/data/dconf/$IBUS_SCHEMA_FILE" $PWD glib-compile-schemas $PWD if test $? -ne 0 ; then echo "FAILED glib-compile-schemas" retval=1 return fi if test ! -f $PWD/gschemas.compiled ; then echo "NOT FOUND $PWD/gschemas.compiled" retval=1 return fi export GSETTINGS_SCHEMA_DIR=$PWD # Start ibus-daemon. DAEMON_ARGS=' --cache=none --panel=disable --emoji-extension=disable --config=default --verbose ' if test x"$DISABLE_DAEMONIZE_IN_TESTS" = x ; then ../$top_builddir/bus/ibus-daemon \ $DAEMON_ARGS --daemonize; else ../$top_builddir/bus/ibus-daemon \ $DAEMON_ARGS & fi # Wait until all necessary components are up. sleep 3 export GTK_IM_MODULE=ibus fi export IBUS_COMPOSE_CACHE_DIR=$PWD "../$tst" ../$top_srcdir/src/tests ${1+"$@"} retval=`expr $retval \| $?` cd $backup_dir func_cleanup $tstdir } envfile=$srcdir/`func_basename $tst`.env if test -f $envfile ; then ENVS="`cat $envfile`" fi; if test x"$ENVS" = x ; then run_test_case $@ else LANG_backup=$LANG i=1 for e in $ENVS; do first=`echo "$e" | cut -c1-1` if test x"$first" = x"#" ; then continue fi export $e echo "Run `func_basename $tst` on $e" echo "=======================" run_test_case $@ echo "" i=`expr $i + 1` done export LANG=$LANG_backup fi exit $retval ibus-1.5.22/src/tests/ibus-factory.c0000644000000000000000000000146613623750431014151 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.22/src/tests/ibus-keynames.c0000644000000000000000000000056713623750431014317 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.22/src/tests/ibus-share.c0000644000000000000000000000065413623750431013602 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.22/src/tests/meta.test.in0000644000000000000000000000006613623750431013625 00000000000000[Test] Type=session Exec=@TEST_EXEC@ --tap Output=TAP ibus-1.5.22/src/tests/ibus-inputcontext-create.c0000644000000000000000000000623213623750431016503 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.22/src/tests/ibus-engine-switch.c0000644000000000000000000001473513623750431015251 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 const gchar *engine_names2[] = { AFTER_ENGINE, BEFORE_ENGINE }; static void change_global_engine (gboolean reverse) { gint i; for (i = 0; i < G_N_ELEMENTS (engine_names); i++) { const gchar *engine_name = engine_names[i]; if (reverse) engine_name = engine_names2[i]; ibus_bus_set_global_engine (bus, engine_name); IBusEngineDesc *engine_desc = ibus_bus_get_global_engine (bus); g_assert_cmpstr (ibus_engine_desc_get_name (engine_desc), ==, engine_name); 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; guint timeout_id; guint idle_id; gboolean reverse; } GlobalEngineChangedData; static void global_engine_changed_cb (IBusBus *bus, gchar *name, gpointer user_data) { GlobalEngineChangedData *data = (GlobalEngineChangedData *) user_data; if (data->count++ == 0) ibus_quit (); } static gboolean timeout_cb (gpointer user_data) { GlobalEngineChangedData *data = (GlobalEngineChangedData *) user_data; if (data->count == 0) ibus_quit (); data->timeout_id = 0; return FALSE; } static gboolean change_global_engine_cb (gpointer user_data) { GlobalEngineChangedData *data = (GlobalEngineChangedData *) user_data; change_global_engine (data->reverse); data->idle_id = 0; return FALSE; } static void test_global_engine (void) { GLogLevelFlags flags; IBusEngineDesc *desc; GlobalEngineChangedData data; guint handler_id; if (!ibus_bus_get_use_global_engine (bus)) return; /* "No global engine." warning is not critical message. */ flags = g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); desc = ibus_bus_get_global_engine (bus); g_log_set_always_fatal (flags); if (desc && !g_strcmp0 (BEFORE_ENGINE, ibus_engine_desc_get_name (desc))) { data.reverse = TRUE; } else { data.reverse = FALSE; } data.count = 0; handler_id = g_signal_connect (bus, "global-engine-changed", G_CALLBACK (global_engine_changed_cb), &data); data.timeout_id = g_timeout_add_seconds (1, timeout_cb, &data); data.idle_id = g_idle_add ((GSourceFunc) change_global_engine_cb, &data); ibus_main (); g_assert_cmpint (data.count, ==, G_N_ELEMENTS (engine_names)); if (data.idle_id > 0) g_source_remove (data.idle_id); if (data.timeout_id > 0) g_source_remove (data.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 (FALSE); /* 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 (FALSE); /* 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.22/src/tests/ibus-config.c0000644000000000000000000001113613623750431013742 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); if (error) { g_message ("Failed to generate IBusConfig: %s", error->message); g_error_free (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 ("Unknown 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); } 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/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.22/src/tests/ibus-bus.c0000644000000000000000000007370413623750431013277 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_success (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_success, 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); /* create 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_success, loop); /* user_data */ ibus_bus_create_input_context_async (bus, "test-async", -1, /* timeout */ NULL, /* cancellable */ finish_create_input_context_async_success, 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) { /* When `./runtest ibus-bus` runs, ibus-daemon sometimes failed to * restart because closing a file descriptor was failed in * bus/server.c:_restart_server() with a following error: * "inotify read(): Bad file descriptor" * Now g_usleep() is added here to write down the buffer and not to * fail to restart ibus-daemon. */ g_usleep (G_USEC_PER_SEC); 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) { /* INFO: g_warning() causes SEGV with runtest script */ if (ibus_get_address () == NULL) g_warning ("ibus-daemon does not restart yet from start_exit_async()."); 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.22/src/tests/ibus-compose-locales.in0000755000000000000000000000151313623750431015747 00000000000000#!/bin/sh SRCDIR=@SRCDIR@ BUILDDIR=`dirname $0` export IBUS_COMPOSE_CACHE_DIR=$PWD retval=0 # Deleted for var in `cat *.env` because IFS=$'\n' is not supported in POSIX sh while read var do IS_COMMENT=`echo "$var" | grep "^#"` if [ "x$IS_COMMENT" != x ] ; then continue fi # Use $* instead of $@ not to mix strings and integers echo "# Starting $var $BUILDDIR/ibus-compose $SRCDIR $*" # Need to enclose $@ with double quotes not to split the array. env $var $BUILDDIR/ibus-compose $SRCDIR "$@" retval=`expr $retval + $?` echo "# Finished $var $BUILDDIR/ibus-compose $SRCDIR $* with $retval" CACHE_FILES=`ls *.cache` if [ x"$CACHE_FILES" != x ] ; then echo "Clean $CACHE_FILES" rm $CACHE_FILES fi done << EOF_ENVS `cat $SRCDIR/ibus-compose.env` EOF_ENVS exit $retval ibus-1.5.22/src/tests/ibus-keypress.c0000644000000000000000000002160113623750431014340 00000000000000#include #include #include "ibus.h" #include #include #include #define GREEN "\033[0;32m" #define RED "\033[0;31m" #define NC "\033[0m" typedef struct _KeyData { guint keyval; guint modifiers; } KeyData; static const KeyData test_cases[][30] = { { { IBUS_KEY_a, 0 }, { IBUS_KEY_comma, IBUS_SHIFT_MASK }, { IBUS_KEY_b, 0 }, { IBUS_KEY_period, IBUS_SHIFT_MASK }, { IBUS_KEY_c, 0 }, { IBUS_KEY_slash, IBUS_SHIFT_MASK }, { IBUS_KEY_d, 0 }, { IBUS_KEY_semicolon, IBUS_SHIFT_MASK }, { IBUS_KEY_e, 0 }, { IBUS_KEY_apostrophe, IBUS_SHIFT_MASK }, { IBUS_KEY_f, 0 }, { IBUS_KEY_bracketleft, IBUS_SHIFT_MASK }, { IBUS_KEY_g, 0 }, { IBUS_KEY_backslash, IBUS_SHIFT_MASK }, { 0, 0 } }, { { IBUS_KEY_grave, IBUS_SHIFT_MASK }, { IBUS_KEY_a, IBUS_SHIFT_MASK }, { IBUS_KEY_1, IBUS_SHIFT_MASK }, { IBUS_KEY_b, IBUS_SHIFT_MASK }, { IBUS_KEY_2, IBUS_SHIFT_MASK }, { IBUS_KEY_c, IBUS_SHIFT_MASK }, { IBUS_KEY_3, IBUS_SHIFT_MASK }, { IBUS_KEY_d, IBUS_SHIFT_MASK }, { IBUS_KEY_9, IBUS_SHIFT_MASK }, { IBUS_KEY_e, IBUS_SHIFT_MASK }, { IBUS_KEY_0, IBUS_SHIFT_MASK }, { IBUS_KEY_f, IBUS_SHIFT_MASK }, { IBUS_KEY_equal, IBUS_SHIFT_MASK }, { IBUS_KEY_g, IBUS_SHIFT_MASK }, { 0, 0 } }, { { 0, 0 } } }; KeyData test_end_key = { IBUS_KEY_z, IBUS_SHIFT_MASK }; static const gunichar test_results[][60] = { { 'a', '<', 'b', '>', 'c', '?', 'd', ':', 'e', '"', 'f', '{', 'g', '|', 0 }, { '~', 'A', '!', 'B', '@', 'C', '#', 'D', '(', 'E', ')', 'F', '+', 'G', 0 }, { 0 } }; IBusBus *m_bus; IBusEngine *m_engine; 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++); m_engine = ibus_engine_new_with_type (IBUS_TYPE_ENGINE_SIMPLE, name, engine_path, ibus_bus_get_connection (m_bus)); g_free (engine_path); 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) { g_critical ("time out"); gtk_main_quit (); return FALSE; } static void send_key_event (Display *xdisplay, guint keyval, guint modifiers) { static struct { guint state; KeySym keysym; } state2keysym[] = { { IBUS_CONTROL_MASK, XK_Control_L } , { IBUS_MOD1_MASK, XK_Alt_L }, { IBUS_MOD4_MASK, XK_Super_L }, { IBUS_SHIFT_MASK, XK_Shift_L }, { IBUS_LOCK_MASK, XK_Caps_Lock }, { 0, 0L } }; int i; guint keycode; guint state = modifiers; while (state) { for (i = 0; state2keysym[i].state; i++) { if ((state2keysym[i].state & state) != 0) { keycode = XKeysymToKeycode (xdisplay, state2keysym[i].keysym); XTestFakeKeyEvent (xdisplay, keycode, True, CurrentTime); XSync (xdisplay, False); state ^= state2keysym[i].state; break; } } } keycode = XKeysymToKeycode (xdisplay, keyval); XTestFakeKeyEvent (xdisplay, keycode, True, CurrentTime); XSync (xdisplay, False); XTestFakeKeyEvent (xdisplay, keycode, False, CurrentTime); XSync (xdisplay, False); state = modifiers; while (state) { for (i = G_N_ELEMENTS (state2keysym) - 1; i >= 0; i--) { if ((state2keysym[i].state & state) != 0) { keycode = XKeysymToKeycode (xdisplay, state2keysym[i].keysym); XTestFakeKeyEvent (xdisplay, keycode, False, CurrentTime); XSync (xdisplay, False); state ^= state2keysym[i].state; break; } } } } static void set_engine_cb (GObject *object, GAsyncResult *res, gpointer data) { IBusBus *bus = IBUS_BUS (object); GtkWidget *entry = GTK_WIDGET (data); GdkDisplay *display; Display *xdisplay = NULL; GError *error = NULL; int i, j; g_assert (GTK_IS_ENTRY (entry)); if (!ibus_bus_set_global_engine_async_finish (bus, res, &error)) { g_critical ("set engine failed: %s", error->message); g_error_free (error); return; } display = gtk_widget_get_display (entry); if (GDK_IS_X11_DISPLAY (display)) { xdisplay = gdk_x11_display_get_xdisplay (display); } else { #if 0 xdisplay = XOpenDisplay (NULL); #else g_critical ("No idea to simulate key events in Wayland\n"); #endif } g_return_if_fail (xdisplay); for (i = 0; test_cases[i][0].keyval; i++) { for (j = 0; test_cases[i][j].keyval; j++) { send_key_event (xdisplay, test_cases[i][j].keyval, test_cases[i][j].modifiers); } send_key_event (xdisplay, test_end_key.keyval, test_end_key.modifiers); } 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) { GtkWidget *entry = data; static int i = 0; static int j = 0; if (g_utf8_get_char (chars) == 'Z') { int k; g_print ("\n" GREEN "PASS" NC ": "); for (k = 0; k < j; k++) g_print ("%lc(%X) ", test_results[i][k], test_results[i][k]); g_print ("\n"); i++; j = 0; if (test_results[i][0] == 0) gtk_main_quit (); else gtk_entry_set_text (GTK_ENTRY (entry), ""); return; } g_assert (g_utf8_get_char (chars) == test_results[i][j]); j++; } 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); } static void test_keypress (void) { int status = 0; GError *error = NULL; g_spawn_command_line_sync ("setxkbmap -layout us", NULL, NULL, &status, &error); g_assert (register_ibus_engine ()); create_window (); gtk_main (); } int main (int argc, char *argv[]) { ibus_init (); /* Avoid a warning of "AT-SPI: Could not obtain desktop path or name" * with gtk_main(). */ g_setenv ("NO_AT_BRIDGE", "1", TRUE); g_test_init (&argc, &argv, NULL); gtk_init (&argc, &argv); g_test_add_func ("/ibus/keyrepss", test_keypress); return g_test_run (); } ibus-1.5.22/src/ibusproplist.c0000644000000000000000000001402713623750431013134 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.22/src/ibusdebug.h0000644000000000000000000000321513623750431012350 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.22/src/ibusversion.h.in0000644000000000000000000000370313623750431013356 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.22/src/ibuscomponent.c0000644000000000000000000007130613623750431013265 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-2019 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) \ ((IBusComponentPrivate *)ibus_component_get_instance_private (o)) // 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_WITH_PRIVATE (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); 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.22/src/ibusinputcontext.h0000644000000000000000000005114313623750431014031 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) 2018 Takao Fujiwara * Copyright (C) 2008-2018 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_cursor_location_relative: * @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 relative cursor location of IBus input context asynchronously. */ void ibus_input_context_set_cursor_location_relative (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); /** * ibus_input_context_set_client_commit_preedit: * @context: An #IBusInputContext. * @client_commit: %TRUE if your input context commits pre-edit texts * with Space or Enter key events or mouse click events. %FALSE if * ibus-daemon commits pre-edit texts with those events. * The default is %FALSE. The behavior is decided with * ibus_engine_update_preedit_text_with_mode() to commit, clear or * keep the pre-edit text and this API is important in ibus-hangul. * * Set whether #IBusInputContext commits pre-edit texts or not. * If %TRUE, 'update-preedit-text-with-mode' signal is emitted * instead of 'update-preedit-text' signal. * If your client receives the 'update-preedit-text-with-mode' signal, * the client needs to implement commit_text() of pre-edit text when * GtkIMContextClass.focus_out() is called in case an IME desires that * behavior but it depends on each IME. * * See also ibus_engine_update_preedit_text_with_mode(). */ void ibus_input_context_set_client_commit_preedit ( IBusInputContext *context, gboolean client_commit); G_END_DECLS #endif ibus-1.5.22/src/gtkimcontextsimpleseqs.h0000644000000000000000000075744013623750431015245 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, 10495, 14203, 16083, 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_P, 0x00B6, 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_p, 0x00B6, 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_A, 0x0102, IBUS_KEY_parenleft, IBUS_KEY_G, 0x011E, IBUS_KEY_parenleft, IBUS_KEY_a, 0x0103, IBUS_KEY_parenleft, IBUS_KEY_c, 0x00A9, IBUS_KEY_parenleft, IBUS_KEY_g, 0x011F, IBUS_KEY_parenleft, IBUS_KEY_r, 0x00AE, 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_N, 0x00D1, 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_n, 0x00F1, 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_U, 0x00B5, 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_C, 0x00A9, IBUS_KEY_0, IBUS_KEY_S, 0x00A7, IBUS_KEY_0, IBUS_KEY_X, 0x00A4, IBUS_KEY_0, IBUS_KEY_asciicircum, 0x00B0, IBUS_KEY_0, IBUS_KEY_c, 0x00A9, IBUS_KEY_0, IBUS_KEY_s, 0x00A7, IBUS_KEY_0, IBUS_KEY_x, 0x00A4, 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_S, 0x00B9, IBUS_KEY_1, IBUS_KEY_asciicircum, 0x00B9, IBUS_KEY_1, IBUS_KEY_s, 0x00B9, IBUS_KEY_2, IBUS_KEY_3, 0x2154, IBUS_KEY_2, IBUS_KEY_5, 0x2156, IBUS_KEY_2, IBUS_KEY_S, 0x00B2, IBUS_KEY_2, IBUS_KEY_asciicircum, 0x00B2, IBUS_KEY_2, IBUS_KEY_s, 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_S, 0x00B3, IBUS_KEY_3, IBUS_KEY_asciicircum, 0x00B3, IBUS_KEY_3, IBUS_KEY_s, 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_R, 0x20B9, 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_l, 0x00A3, IBUS_KEY_equal, IBUS_KEY_o, 0x0151, IBUS_KEY_equal, IBUS_KEY_r, 0x20B9, 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_0, 0x00A9, 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_minus, 0x00D1, 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_equal, 0x20B9, IBUS_KEY_R, IBUS_KEY_O, 0x00AE, 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_0, 0x00A7, IBUS_KEY_S, IBUS_KEY_1, 0x00B9, IBUS_KEY_S, IBUS_KEY_2, 0x00B2, IBUS_KEY_S, IBUS_KEY_3, 0x00B3, 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_S, IBUS_KEY_cedilla, 0x015E, 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_slash, 0x00B5, 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_0, 0x00A4, 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_underscore, 0x00AF, 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_0, 0x00A9, 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_equal, 0x00A3, 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_minus, 0x00F1, 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_r, IBUS_KEY_equal, 0x20B9, 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_0, 0x00A7, IBUS_KEY_s, IBUS_KEY_1, 0x00B9, IBUS_KEY_s, IBUS_KEY_2, 0x00B2, IBUS_KEY_s, IBUS_KEY_3, 0x00B3, 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_0, 0x00A4, 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_bet, 0xFB31, 0x05BC, IBUS_KEY_hebrew_gimel, 0xFB32, 0x05BC, IBUS_KEY_hebrew_dalet, 0xFB33, 0x05BC, IBUS_KEY_hebrew_he, 0xFB34, 0x05BC, IBUS_KEY_hebrew_waw, 0xFB35, 0x05BC, IBUS_KEY_hebrew_zain, 0xFB36, 0x05BC, IBUS_KEY_hebrew_tet, 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_samech, 0xFB41, 0x05BC, IBUS_KEY_hebrew_finalpe, 0xFB43, 0x05BC, IBUS_KEY_hebrew_pe, 0xFB44, 0x05BC, IBUS_KEY_hebrew_zade, 0xFB46, 0x05BC, IBUS_KEY_hebrew_kuf, 0xFB47, 0x05BC, IBUS_KEY_hebrew_resh, 0xFB48, 0x05BC, IBUS_KEY_hebrew_shin, 0xFB49, 0x05BC, IBUS_KEY_hebrew_taf, 0xFB4A, 0x05BF, IBUS_KEY_hebrew_bet, 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_apostrophe, 0x03AF, 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_apostrophe, IBUS_KEY_space, 0x0385, IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, IBUS_KEY_Greek_iota, 0x0390, IBUS_KEY_quotedbl, IBUS_KEY_apostrophe, IBUS_KEY_Greek_upsilon, 0x03B0, 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_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_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, IBUS_KEY_Greek_iota, IBUS_KEY_dead_tilde, IBUS_KEY_dead_dasia, IBUS_KEY_Greek_omega, 0x1FA7, }; static const guint16 gtk_compose_seqs_compact_32bit_first[] = { IBUS_KEY_dead_grave, 54, 123, 187, 187, 187, IBUS_KEY_dead_acute, 187, 268, 316, 316, 316, IBUS_KEY_dead_circumflex, 316, 388, 388, 388, 388, IBUS_KEY_dead_tilde, 388, 406, 406, 406, 406, IBUS_KEY_dead_macron, 406, 466, 466, 466, 466, IBUS_KEY_dead_caron, 466, 502, 502, 502, 502, IBUS_KEY_dead_doublegrave, 502, 538, 538, 538, 538, IBUS_KEY_dead_invertedbreve, 538, 574, 574, 574, 574, IBUS_KEY_Multi_key, 574, 574, 850, 920, 926, IBUS_KEY_M, 0, 2, IBUS_KEY_m, 2, 2, 0x0186, 4, 2, 0x018E, 6, 2, 0x0190, 8, 2, 0x0196, 10, 2, 0x01B1, 12, 2, 0x01B2, 14, 2, 0x01DD, 16, 2, 0x0254, 18, 2, 0x025B, 20, 2, 0x0269, 22, 2, 0x028A, 24, 2, 0x028B, 26, 2, IBUS_KEY_ENG, 28, 2, IBUS_KEY_Cyrillic_a, 30, 2, IBUS_KEY_Cyrillic_o, 32, 2, IBUS_KEY_Cyrillic_er, 34, 2, IBUS_KEY_Cyrillic_u, 36, 2, IBUS_KEY_Cyrillic_A, 38, 2, IBUS_KEY_Cyrillic_O, 40, 2, IBUS_KEY_Cyrillic_ER, 42, 2, IBUS_KEY_Cyrillic_U, 44, 2, IBUS_KEY_dead_tilde, IBUS_KEY_A, 46, 3, IBUS_KEY_dead_tilde, IBUS_KEY_E, 49, 3, IBUS_KEY_dead_tilde, IBUS_KEY_I, 52, 3, IBUS_KEY_dead_tilde, IBUS_KEY_O, 55, 3, IBUS_KEY_dead_tilde, IBUS_KEY_U, 58, 3, IBUS_KEY_dead_tilde, IBUS_KEY_a, 61, 3, IBUS_KEY_dead_tilde, IBUS_KEY_e, 64, 3, IBUS_KEY_dead_tilde, IBUS_KEY_i, 67, 3, IBUS_KEY_dead_tilde, IBUS_KEY_o, 70, 3, IBUS_KEY_dead_tilde, IBUS_KEY_u, 73, 3, IBUS_KEY_dead_tilde, 0x0186, 76, 3, IBUS_KEY_dead_tilde, 0x018E, 79, 3, IBUS_KEY_dead_tilde, 0x0190, 82, 3, IBUS_KEY_dead_tilde, 0x01DD, 85, 3, IBUS_KEY_dead_tilde, 0x0254, 88, 3, IBUS_KEY_dead_tilde, 0x025B, 91, 3, IBUS_KEY_J, 94, 2, IBUS_KEY_j, 96, 2, 0x0186, 98, 2, 0x018E, 100, 2, 0x0190, 102, 2, 0x0196, 104, 2, 0x01B1, 106, 2, 0x01B2, 108, 2, 0x01DD, 110, 2, 0x0254, 112, 2, 0x025B, 114, 2, 0x0269, 116, 2, 0x028A, 118, 2, 0x028B, 120, 2, IBUS_KEY_ENG, 122, 2, IBUS_KEY_Cyrillic_a, 124, 2, IBUS_KEY_Cyrillic_ie, 126, 2, IBUS_KEY_Cyrillic_i, 128, 2, IBUS_KEY_Cyrillic_o, 130, 2, IBUS_KEY_Cyrillic_er, 132, 2, IBUS_KEY_Cyrillic_u, 134, 2, IBUS_KEY_Cyrillic_A, 136, 2, IBUS_KEY_Cyrillic_IE, 138, 2, IBUS_KEY_Cyrillic_I, 140, 2, IBUS_KEY_Cyrillic_O, 142, 2, IBUS_KEY_Cyrillic_ER, 144, 2, IBUS_KEY_Cyrillic_U, 146, 2, IBUS_KEY_dead_tilde, IBUS_KEY_A, 148, 3, IBUS_KEY_dead_tilde, IBUS_KEY_E, 151, 3, IBUS_KEY_dead_tilde, IBUS_KEY_I, 154, 3, IBUS_KEY_dead_tilde, IBUS_KEY_a, 157, 3, IBUS_KEY_dead_tilde, IBUS_KEY_e, 160, 3, IBUS_KEY_dead_tilde, IBUS_KEY_i, 163, 3, IBUS_KEY_dead_tilde, 0x0186, 166, 3, IBUS_KEY_dead_tilde, 0x018E, 169, 3, IBUS_KEY_dead_tilde, 0x0190, 172, 3, IBUS_KEY_dead_tilde, 0x01DD, 175, 3, IBUS_KEY_dead_tilde, 0x0254, 178, 3, IBUS_KEY_dead_tilde, 0x025B, 181, 3, 0x0186, 184, 2, 0x018E, 186, 2, 0x0190, 188, 2, 0x0196, 190, 2, 0x01B1, 192, 2, 0x01B2, 194, 2, 0x01DD, 196, 2, 0x0254, 198, 2, 0x025B, 200, 2, 0x0269, 202, 2, 0x028A, 204, 2, 0x028B, 206, 2, IBUS_KEY_Cyrillic_a, 208, 2, IBUS_KEY_Cyrillic_ie, 210, 2, IBUS_KEY_Cyrillic_i, 212, 2, IBUS_KEY_Cyrillic_o, 214, 2, IBUS_KEY_Cyrillic_er, 216, 2, IBUS_KEY_Cyrillic_u, 218, 2, IBUS_KEY_Cyrillic_A, 220, 2, IBUS_KEY_Cyrillic_IE, 222, 2, IBUS_KEY_Cyrillic_I, 224, 2, IBUS_KEY_Cyrillic_O, 226, 2, IBUS_KEY_Cyrillic_ER, 228, 2, IBUS_KEY_Cyrillic_U, 230, 2, 0x0186, 232, 2, 0x018E, 234, 2, 0x0190, 236, 2, 0x01DD, 238, 2, 0x0254, 240, 2, 0x025B, 242, 2, 0x0186, 244, 2, 0x018E, 246, 2, 0x0190, 248, 2, 0x0196, 250, 2, 0x01B1, 252, 2, 0x01B2, 254, 2, 0x01DD, 256, 2, 0x0254, 258, 2, 0x025B, 260, 2, 0x0269, 262, 2, 0x028A, 264, 2, 0x028B, 266, 2, IBUS_KEY_Cyrillic_a, 268, 2, IBUS_KEY_Cyrillic_ie, 270, 2, IBUS_KEY_Cyrillic_o, 272, 2, IBUS_KEY_Cyrillic_er, 274, 2, IBUS_KEY_Cyrillic_A, 276, 2, IBUS_KEY_Cyrillic_IE, 278, 2, IBUS_KEY_Cyrillic_O, 280, 2, IBUS_KEY_Cyrillic_ER, 282, 2, 0x0186, 284, 2, 0x018E, 286, 2, 0x0190, 288, 2, 0x0196, 290, 2, 0x01B1, 292, 2, 0x01B2, 294, 2, 0x01DD, 296, 2, 0x0254, 298, 2, 0x025B, 300, 2, 0x0269, 302, 2, 0x028A, 304, 2, 0x028B, 306, 2, IBUS_KEY_Cyrillic_a, 308, 2, IBUS_KEY_Cyrillic_ie, 310, 2, IBUS_KEY_Cyrillic_i, 312, 2, IBUS_KEY_Cyrillic_o, 314, 2, IBUS_KEY_Cyrillic_er, 316, 2, IBUS_KEY_Cyrillic_u, 318, 2, IBUS_KEY_Cyrillic_A, 320, 2, IBUS_KEY_Cyrillic_IE, 322, 2, IBUS_KEY_Cyrillic_I, 324, 2, IBUS_KEY_Cyrillic_O, 326, 2, IBUS_KEY_Cyrillic_ER, 328, 2, IBUS_KEY_Cyrillic_U, 330, 2, IBUS_KEY_Cyrillic_a, 332, 2, IBUS_KEY_Cyrillic_ie, 334, 2, IBUS_KEY_Cyrillic_i, 336, 2, IBUS_KEY_Cyrillic_o, 338, 2, IBUS_KEY_Cyrillic_er, 340, 2, IBUS_KEY_Cyrillic_u, 342, 2, IBUS_KEY_Cyrillic_A, 344, 2, IBUS_KEY_Cyrillic_IE, 346, 2, IBUS_KEY_Cyrillic_I, 348, 2, IBUS_KEY_Cyrillic_O, 350, 2, IBUS_KEY_Cyrillic_ER, 352, 2, IBUS_KEY_Cyrillic_U, 354, 2, IBUS_KEY_apostrophe, IBUS_KEY_J, 356, 2, IBUS_KEY_apostrophe, IBUS_KEY_j, 358, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_a, 360, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ie, 362, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_i, 364, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_o, 366, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_er, 368, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_u, 370, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_A, 372, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_IE, 374, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_I, 376, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_O, 378, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_ER, 380, 2, IBUS_KEY_apostrophe, IBUS_KEY_Cyrillic_U, 382, 2, IBUS_KEY_F, IBUS_KEY_U, 384, 1, IBUS_KEY_J, IBUS_KEY_apostrophe, 385, 2, IBUS_KEY_J, IBUS_KEY_acute, 387, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_a, 389, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_ie, 391, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_i, 393, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_o, 395, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_er, 397, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_u, 399, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_A, 401, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_IE, 403, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_I, 405, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_O, 407, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_ER, 409, 2, IBUS_KEY_asciicircum, IBUS_KEY_Cyrillic_U, 411, 2, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_a, 413, 2, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_ie, 415, 2, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_o, 417, 2, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_er, 419, 2, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_A, 421, 2, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_IE, 423, 2, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_O, 425, 2, IBUS_KEY_underscore, IBUS_KEY_Cyrillic_ER, 427, 2, IBUS_KEY_grave, IBUS_KEY_Cyrillic_a, 429, 2, IBUS_KEY_grave, IBUS_KEY_Cyrillic_o, 431, 2, IBUS_KEY_grave, IBUS_KEY_Cyrillic_er, 433, 2, IBUS_KEY_grave, IBUS_KEY_Cyrillic_u, 435, 2, IBUS_KEY_grave, IBUS_KEY_Cyrillic_A, 437, 2, IBUS_KEY_grave, IBUS_KEY_Cyrillic_O, 439, 2, IBUS_KEY_grave, IBUS_KEY_Cyrillic_ER, 441, 2, IBUS_KEY_grave, IBUS_KEY_Cyrillic_U, 443, 2, IBUS_KEY_j, IBUS_KEY_apostrophe, 445, 2, IBUS_KEY_j, IBUS_KEY_acute, 447, 2, IBUS_KEY_macron, IBUS_KEY_Cyrillic_a, 449, 2, IBUS_KEY_macron, IBUS_KEY_Cyrillic_ie, 451, 2, IBUS_KEY_macron, IBUS_KEY_Cyrillic_o, 453, 2, IBUS_KEY_macron, IBUS_KEY_Cyrillic_er, 455, 2, IBUS_KEY_macron, IBUS_KEY_Cyrillic_A, 457, 2, IBUS_KEY_macron, IBUS_KEY_Cyrillic_IE, 459, 2, IBUS_KEY_macron, IBUS_KEY_Cyrillic_O, 461, 2, IBUS_KEY_macron, IBUS_KEY_Cyrillic_ER, 463, 2, IBUS_KEY_acute, IBUS_KEY_J, 465, 2, IBUS_KEY_acute, IBUS_KEY_j, 467, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_a, 469, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_ie, 471, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_i, 473, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_o, 475, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_er, 477, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_u, 479, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_A, 481, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_IE, 483, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_I, 485, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_O, 487, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_ER, 489, 2, IBUS_KEY_acute, IBUS_KEY_Cyrillic_U, 491, 2, IBUS_KEY_backslash, IBUS_KEY_o, IBUS_KEY_slash, 493, 1, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_a, 494, 2, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_ie, 496, 2, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_i, 498, 2, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_o, 500, 2, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_er, 502, 2, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_u, 504, 2, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_A, 506, 2, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_IE, 508, 2, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_I, 510, 2, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_O, 512, 2, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_ER, 514, 2, IBUS_KEY_grave, IBUS_KEY_grave, IBUS_KEY_Cyrillic_U, 516, 2, IBUS_KEY_p, IBUS_KEY_o, IBUS_KEY_o, 518, 1, IBUS_KEY_L, IBUS_KEY_L, IBUS_KEY_A, IBUS_KEY_P, 519, 1, }; static const guint32 gtk_compose_seqs_compact_32bit_second[] = { 0x004D, 0x0300, 0x006D, 0x0300, 0x0186, 0x0300, 0x018E, 0x0300, 0x0190, 0x0300, 0x0196, 0x0300, 0x01B1, 0x0300, 0x01B2, 0x0300, 0x01DD, 0x0300, 0x0254, 0x0300, 0x025B, 0x0300, 0x0269, 0x0300, 0x028A, 0x0300, 0x028B, 0x0300, 0x014A, 0x0300, 0x0430, 0x0300, 0x043E, 0x0300, 0x0440, 0x0300, 0x0443, 0x0300, 0x0410, 0x0300, 0x041E, 0x0300, 0x0420, 0x0300, 0x0423, 0x0300, 0x0041, 0x0303, 0x0300, 0x0045, 0x0303, 0x0300, 0x0049, 0x0303, 0x0300, 0x004F, 0x0303, 0x0300, 0x0055, 0x0303, 0x0300, 0x0061, 0x0303, 0x0300, 0x0065, 0x0303, 0x0300, 0x0069, 0x0303, 0x0300, 0x006F, 0x0303, 0x0300, 0x0075, 0x0303, 0x0300, 0x0186, 0x0303, 0x0300, 0x018E, 0x0303, 0x0300, 0x0190, 0x0303, 0x0300, 0x01DD, 0x0303, 0x0300, 0x0254, 0x0303, 0x0300, 0x025B, 0x0303, 0x0300, 0x004A, 0x0301, 0x006A, 0x0301, 0x0186, 0x0301, 0x018E, 0x0301, 0x0190, 0x0301, 0x0196, 0x0301, 0x01B1, 0x0301, 0x01B2, 0x0301, 0x01DD, 0x0301, 0x0254, 0x0301, 0x025B, 0x0301, 0x0269, 0x0301, 0x028A, 0x0301, 0x028B, 0x0301, 0x014A, 0x0301, 0x0430, 0x0301, 0x0435, 0x0301, 0x0438, 0x0301, 0x043E, 0x0301, 0x0440, 0x0301, 0x0443, 0x0301, 0x0410, 0x0301, 0x0415, 0x0301, 0x0418, 0x0301, 0x041E, 0x0301, 0x0420, 0x0301, 0x0423, 0x0301, 0x0041, 0x0303, 0x0301, 0x0045, 0x0303, 0x0301, 0x0049, 0x0303, 0x0301, 0x0061, 0x0303, 0x0301, 0x0065, 0x0303, 0x0301, 0x0069, 0x0303, 0x0301, 0x0186, 0x0303, 0x0301, 0x018E, 0x0303, 0x0301, 0x0190, 0x0303, 0x0301, 0x01DD, 0x0303, 0x0301, 0x0254, 0x0303, 0x0301, 0x025B, 0x0303, 0x0301, 0x0186, 0x0302, 0x018E, 0x0302, 0x0190, 0x0302, 0x0196, 0x0302, 0x01B1, 0x0302, 0x01B2, 0x0302, 0x01DD, 0x0302, 0x0254, 0x0302, 0x025B, 0x0302, 0x0269, 0x0302, 0x028A, 0x0302, 0x028B, 0x0302, 0x0430, 0x0302, 0x0435, 0x0302, 0x0438, 0x0302, 0x043E, 0x0302, 0x0440, 0x0302, 0x0443, 0x0302, 0x0410, 0x0302, 0x0415, 0x0302, 0x0418, 0x0302, 0x041E, 0x0302, 0x0420, 0x0302, 0x0423, 0x0302, 0x0186, 0x0303, 0x018E, 0x0303, 0x0190, 0x0303, 0x01DD, 0x0303, 0x0254, 0x0303, 0x025B, 0x0303, 0x0186, 0x0304, 0x018E, 0x0304, 0x0190, 0x0304, 0x0196, 0x0304, 0x01B1, 0x0304, 0x01B2, 0x0304, 0x01DD, 0x0304, 0x0254, 0x0304, 0x025B, 0x0304, 0x0269, 0x0304, 0x028A, 0x0304, 0x028B, 0x0304, 0x0430, 0x0304, 0x0435, 0x0304, 0x043E, 0x0304, 0x0440, 0x0304, 0x0410, 0x0304, 0x0415, 0x0304, 0x041E, 0x0304, 0x0420, 0x0304, 0x0186, 0x030C, 0x018E, 0x030C, 0x0190, 0x030C, 0x0196, 0x030C, 0x01B1, 0x030C, 0x01B2, 0x030C, 0x01DD, 0x030C, 0x0254, 0x030C, 0x025B, 0x030C, 0x0269, 0x030C, 0x028A, 0x030C, 0x028B, 0x030C, 0x0430, 0x030F, 0x0435, 0x030F, 0x0438, 0x030F, 0x043E, 0x030F, 0x0440, 0x030F, 0x0443, 0x030F, 0x0410, 0x030F, 0x0415, 0x030F, 0x0418, 0x030F, 0x041E, 0x030F, 0x0420, 0x030F, 0x0423, 0x030F, 0x0430, 0x0311, 0x0435, 0x0311, 0x0438, 0x0311, 0x043E, 0x0311, 0x0440, 0x0311, 0x0443, 0x0311, 0x0410, 0x0311, 0x0415, 0x0311, 0x0418, 0x0311, 0x041E, 0x0311, 0x0420, 0x0311, 0x0423, 0x0311, 0x004A, 0x0301, 0x006A, 0x0301, 0x0430, 0x0301, 0x0435, 0x0301, 0x0438, 0x0301, 0x043E, 0x0301, 0x0440, 0x0301, 0x0443, 0x0301, 0x0410, 0x0301, 0x0415, 0x0301, 0x0418, 0x0301, 0x041E, 0x0301, 0x0420, 0x0301, 0x0423, 0x0301, 0x1F595, 0x004A, 0x0301, 0x004A, 0x0301, 0x0430, 0x0302, 0x0435, 0x0302, 0x0438, 0x0302, 0x043E, 0x0302, 0x0440, 0x0302, 0x0443, 0x0302, 0x0410, 0x0302, 0x0415, 0x0302, 0x0418, 0x0302, 0x041E, 0x0302, 0x0420, 0x0302, 0x0423, 0x0302, 0x0430, 0x0304, 0x0435, 0x0304, 0x043E, 0x0304, 0x0440, 0x0304, 0x0410, 0x0304, 0x0415, 0x0304, 0x041E, 0x0304, 0x0420, 0x0304, 0x0430, 0x0300, 0x043E, 0x0300, 0x0440, 0x0300, 0x0443, 0x0300, 0x0410, 0x0300, 0x041E, 0x0300, 0x0420, 0x0300, 0x0423, 0x0300, 0x006A, 0x0301, 0x006A, 0x0301, 0x0430, 0x0304, 0x0435, 0x0304, 0x043E, 0x0304, 0x0440, 0x0304, 0x0410, 0x0304, 0x0415, 0x0304, 0x041E, 0x0304, 0x0420, 0x0304, 0x004A, 0x0301, 0x006A, 0x0301, 0x0430, 0x0301, 0x0435, 0x0301, 0x0438, 0x0301, 0x043E, 0x0301, 0x0440, 0x0301, 0x0443, 0x0301, 0x0410, 0x0301, 0x0415, 0x0301, 0x0418, 0x0301, 0x041E, 0x0301, 0x0420, 0x0301, 0x0423, 0x0301, 0x1F64C, 0x0430, 0x030F, 0x0435, 0x030F, 0x0438, 0x030F, 0x043E, 0x030F, 0x0440, 0x030F, 0x0443, 0x030F, 0x0410, 0x030F, 0x0415, 0x030F, 0x0418, 0x030F, 0x041E, 0x030F, 0x0420, 0x030F, 0x0423, 0x030F, 0x1F4A9, 0x1F596, }; #endif /* __GTK_IM_CONTEXT_SIMPLE_SEQS_H__ */ ibus-1.5.22/src/ibusconfig.h0000644000000000000000000003173213623750431012534 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.22/m4/0000755000000000000000000000000013623751576010051 500000000000000ibus-1.5.22/m4/Makefile.am0000644000000000000000000000207013623750431012011 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2018 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 \ ibuslocale.m4 \ vapigen.m4 \ $(NULL) GITIGNOREFILES = \ gtk-doc.m4 \ intltool.m4 \ libtool.m4 \ lt*.m4 \ $(NULL) -include $(top_srcdir)/git.mk ibus-1.5.22/m4/Makefile.in0000644000000000000000000004243113623751264012034 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ EXTRA_DIST = \ as-version.m4 \ ibuslocale.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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/m4/progtest.m40000644000000000000000000000602413623751246012076 00000000000000# progtest.m4 serial 7 (gettext-0.18.2) dnl Copyright (C) 1996-2003, 2005, 2008-2016 Free Software Foundation, 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 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 is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. AC_PREREQ([2.50]) # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [ # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which # contains only /bin. Note that ksh looks also at the FPATH variable, # so we have to set that as well for the test. 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 # Find out how to test for executable files. Don't use a zero-byte file, # as systems may use methods other than mode bits to determine executability. cat >conf$$.file <<_ASEOF #! /bin/sh exit 0 _ASEOF chmod +x conf$$.file if test -x conf$$.file >/dev/null 2>&1; then ac_executable_p="test -x" else ac_executable_p="test -f" fi rm -f conf$$.file # 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. ;; *) ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in ifelse([$5], , $PATH, [$5]); do IFS="$ac_save_IFS" test -z "$ac_dir" && ac_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" break 2 fi fi done 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 ]) ibus-1.5.22/m4/vapigen.m40000644000000000000000000000605113623750431011653 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.22/m4/lib-ld.m40000644000000000000000000000714313623751246011375 00000000000000# lib-ld.m4 serial 6 dnl Copyright (C) 1996-2003, 2009-2016 Free Software Foundation, 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 Subroutines of libtool.m4, dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid dnl collision with libtool.m4. dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], [# I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 /dev/null 2>&1 \ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ || PATH_SEPARATOR=';' } fi 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([acl_cv_path_LD], [if test -z "$LD"; then acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_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 `"$acl_cv_path_LD" -v 2>&1 @]], [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.22/m4/gettext.m40000644000000000000000000003676313623751246011730 00000000000000# gettext.m4 serial 68 (gettext-0.19.8) dnl Copyright (C) 1995-2014, 2016 Free Software Foundation, 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 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 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-2006, 2008-2010. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value '$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define([gt_included_intl], ifelse([$1], [external], ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), [yes])) define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) gt_NEEDS_INIT AM_GNU_GETTEXT_NEED([$2]) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. gt_INTL_MACOSX dnl Set USE_NLS. AC_REQUIRE([AM_NLS]) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl Add a version number to the cache macros. case " $gt_needs " in *" need-formatstring-macros "*) gt_api_version=3 ;; *" need-ngettext "*) gt_api_version=2 ;; *) gt_api_version=1 ;; esac gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH([included-gettext], [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. if test $gt_api_version -ge 3; then gt_revision_test_code=' #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ' else gt_revision_test_code= fi if test $gt_api_version -ge 2; then gt_expression_test_code=' + * ngettext ("", "", 0)' else gt_expression_test_code= fi AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], [AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [eval "$gt_func_gnugettext_libc=yes"], [eval "$gt_func_gnugettext_libc=no"])]) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], [$gt_func_gnugettext_libintl], [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [eval "$gt_func_gnugettext_libintl=yes"], [eval "$gt_func_gnugettext_libintl=no"]) dnl Now see whether libintl exists and depends on libiconv. if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #ifndef __GNU_GETTEXT_SUPPORTED_REVISION extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); #define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) #else #define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 #endif $gt_revision_test_code ]], [[ bindtextdomain ("", ""); return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION ]])], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" eval "$gt_func_gnugettext_libintl=yes" ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ && test "$PACKAGE" != gettext-runtime \ && test "$PACKAGE" != gettext-tools; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi CATOBJEXT= if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test -n "$INTL_MACOSX_LIBS"; then if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Some extra flags are needed during linking. LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" fi fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE([ENABLE_NLS], [1], [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi AC_MSG_CHECKING([whether to use NLS]) AC_MSG_RESULT([$USE_NLS]) if test "$USE_NLS" = "yes"; then AC_MSG_CHECKING([where the gettext function comes from]) if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then gt_source="external libintl" else gt_source="libc" fi else gt_source="included intl directory" fi AC_MSG_RESULT([$gt_source]) fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE([HAVE_GETTEXT], [1], [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE([HAVE_DCGETTEXT], [1], [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST([BUILD_INCLUDED_LIBINTL]) AC_SUBST([USE_INCLUDED_LIBINTL]) AC_SUBST([CATOBJEXT]) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST([DATADIRNAME]) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST([INSTOBJEXT]) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST([GENCAT]) dnl For backward compatibility. Some Makefiles may be using this. INTLOBJS= if test "$USE_INCLUDED_LIBINTL" = yes; then INTLOBJS="\$(GETTOBJS)" fi AC_SUBST([INTLOBJS]) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST([INTLLIBS]) dnl Make all documented variables known to autoconf. AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) AC_SUBST([POSUB]) ]) dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. m4_define([gt_NEEDS_INIT], [ m4_divert_text([DEFAULTS], [gt_needs=]) m4_define([gt_NEEDS_INIT], []) ]) dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) AC_DEFUN([AM_GNU_GETTEXT_NEED], [ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) ibus-1.5.22/m4/iconv.m40000644000000000000000000002207213623751246011346 00000000000000# iconv.m4 serial 19 (gettext-0.18.2) dnl Copyright (C) 2000-2002, 2007-2014, 2016 Free Software Foundation, 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 From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[ #include #include ]], [[iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);]])], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, dnl Solaris 10. am_save_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi am_cv_func_iconv_works=no for ac_iconv_const in '' 'const'; do AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[ #include #include #ifndef ICONV_CONST # define ICONV_CONST $ac_iconv_const #endif ]], [[int result = 0; /* Test against AIX 5.1 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); if (cd_utf8_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_utf8_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 1; iconv_close (cd_utf8_to_88591); } } /* Test against Solaris 10 bug: Failures are not distinguishable from successful returns. */ { iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); if (cd_ascii_to_88591 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\263"; char buf[10]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_ascii_to_88591, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res == 0) result |= 2; iconv_close (cd_ascii_to_88591); } } /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ { iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304"; static char buf[2] = { (char)0xDE, (char)0xAD }; ICONV_CONST char *inptr = input; size_t inbytesleft = 1; char *outptr = buf; size_t outbytesleft = 1; size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) result |= 4; iconv_close (cd_88591_to_utf8); } } #if 0 /* This bug could be worked around by the caller. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ { iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); if (cd_88591_to_utf8 != (iconv_t)(-1)) { static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; char buf[50]; ICONV_CONST char *inptr = input; size_t inbytesleft = strlen (input); char *outptr = buf; size_t outbytesleft = sizeof (buf); size_t res = iconv (cd_88591_to_utf8, &inptr, &inbytesleft, &outptr, &outbytesleft); if ((int)res > 0) result |= 8; iconv_close (cd_88591_to_utf8); } } #endif /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is provided. */ if (/* Try standardized names. */ iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) /* Try IRIX, OSF/1 names. */ && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) /* Try AIX names. */ && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) /* Try HP-UX names. */ && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) result |= 16; return result; ]])], [am_cv_func_iconv_works=yes], , [case "$host_os" in aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; *) am_cv_func_iconv_works="guessing yes" ;; esac]) test "$am_cv_func_iconv_works" = no || break done LIBS="$am_save_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; *) am_func_iconv=yes ;; esac else am_func_iconv=no am_cv_lib_iconv=no fi if test "$am_func_iconv" = yes; then AC_DEFINE([HAVE_ICONV], [1], [Define if you have the iconv() function and it works.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST([LIBICONV]) AC_SUBST([LTLIBICONV]) ]) dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to dnl avoid warnings like dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". dnl This is tricky because of the way 'aclocal' is implemented: dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. dnl Otherwise aclocal's initial scan pass would miss the macro definition. dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. dnl Otherwise aclocal would emit many "Use of uninitialized value $1" dnl warnings. m4_define([gl_iconv_AC_DEFUN], m4_version_prereq([2.64], [[AC_DEFUN_ONCE( [$1], [$2])]], [m4_ifdef([gl_00GNULIB], [[AC_DEFUN_ONCE( [$1], [$2])]], [[AC_DEFUN( [$1], [$2])]])])) gl_iconv_AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL([am_cv_proto_iconv], [ AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ]], [[]])], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"]) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([ $am_cv_proto_iconv]) AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], [Define as const if the declaration of iconv() needs const.]) dnl Also substitute ICONV_CONST in the gnulib generated . m4_ifdef([gl_ICONV_H_DEFAULTS], [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) if test -n "$am_cv_proto_iconv_arg1"; then ICONV_CONST="const" fi ]) fi ]) ibus-1.5.22/m4/intlmacosx.m40000644000000000000000000000474513623751246012420 00000000000000# intlmacosx.m4 serial 5 (gettext-0.18.2) dnl Copyright (C) 2004-2014, 2016 Free Software Foundation, 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 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 is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Checks for special options needed on Mac OS X. dnl Defines INTL_MACOSX_LIBS. AC_DEFUN([gt_INTL_MACOSX], [ dnl Check for API introduced in Mac OS X 10.2. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFPreferencesCopyAppValue(NULL, NULL)]])], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) fi dnl Check for API introduced in Mac OS X 10.3. AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], [gt_save_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#include ]], [[CFLocaleCopyCurrent();]])], [gt_cv_func_CFLocaleCopyCurrent=yes], [gt_cv_func_CFLocaleCopyCurrent=no]) LIBS="$gt_save_LIBS"]) if test $gt_cv_func_CFLocaleCopyCurrent = yes; then AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) fi INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) ibus-1.5.22/m4/libtool.m40000644000000000000000000112530613623751254011700 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 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) 2014 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 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 this program. If not, see . ]) # serial 58 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.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK 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_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _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 m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that 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 set != "${COLLECT_NAMES+set}"; 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\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) 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\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) 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 0 = "$lt_write_fail" && 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 yes = "$silent" && 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 that 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 # Generated automatically by $as_me ($PACKAGE) $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. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _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 set != "${COLLECT_NAMES+set}"; 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) 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' 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 0 = "$_lt_result"; 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 0 = "$_lt_result" && $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 yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; 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 no = "$lt_cv_ld_force_load"; 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 yes = "$lt_cv_ld_force_load"; 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*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; 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 yes != "$lt_cv_apple_cc_single_mod"; 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 set = "${lt_cv_aix_libpath+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 that will find a shell with a builtin # printf (that 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], [AS_HELP_STRING([--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 yes = "$GCC"; 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 where 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 no = "$enable_libtool_lock" || 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 what ABI is being produced by ac_compile, and set mode # options accordingly. 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 what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; 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* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. 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*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; 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 yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. 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*|x86_64-*-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 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; 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 bitrig* | 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" ## exclude from sc_useless_quotes_in_assignment # 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 yes = "[$]$2"; 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 yes = "[$]$2"; 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; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # 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" && \ test undefined != "$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 17 != "$i" # 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 yes = "$cross_compiling"; 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 -fvisibility=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 yes != "$enable_dlopen"; 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 ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) 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 no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && 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 yes = "$lt_cv_dlopen_self"; 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 no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; 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 no = "$hard_links"; 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 where 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 yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # 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 no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; 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 relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; 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_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _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 m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; 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` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac 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" elif test -n "$lt_multi_os_dir"; then 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 AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) 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 ia64 = "$host_cpu"; 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 # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # 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' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # 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' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac 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%'\''`; $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$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' 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 ;; 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=no 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 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; 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 yes = "$lt_cv_prog_gnu_ld"; 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 ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # 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 dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | 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" # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) 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* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi 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 shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec 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' ;; 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 yes = "$with_gnu_ld"; 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=sco 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 yes = "$with_gnu_ld"; 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 no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _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], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that 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 that 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 no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; 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 yes = "$with_gnu_ld"; 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 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [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 # that 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. if ( 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 ;; 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 | 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* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; 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 ;; os2*) 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 # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) 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 no != "$lt_cv_path_NM"; 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 -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) 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 one 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 yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # 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 yes = "$GCC"; 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 ia64 = "$host_cpu"; 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 if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # 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"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$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"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/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, # D for any global variable and I for any imported 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};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,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 can'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* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$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 yes = "$pipe_works"; 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_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _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_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _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 yes = "$GXX"; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; 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']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; 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 ia64 = "$host_cpu"; 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 ia64 != "$host_cpu"; 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 | 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 yes = "$GCC"; 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 ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; 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']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; 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 ia64 = "$host_cpu"; 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 ;; 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' case $cc_basename in 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' ;; esac ;; 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']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; 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 | 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' ;; tcc*) # Fabrice Bellard et al's Tiny 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)='-static' ;; 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 that 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 GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. 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) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | 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 yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) 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 yes = "$with_gnu_ld"; 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 yes = "$lt_use_gnu_ld_interface"; 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 | $SED -e 's/([^)]\+)\s\+//' 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 ia64 != "$host_cpu"; 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, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); 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 ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $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 linux-dietlibc = "$host_os"; 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 no = "$tmp_diet" 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' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-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 yes = "$supports_anon_versioning"; 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 tcc*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; 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 yes = "$supports_anon_versioning"; 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 cannot *** 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 no = "$_LT_TAGVAR(ld_shlibs, $1)"; 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 yes = "$GCC" && 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 ia64 = "$host_cpu"; 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 GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. 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) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; 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 yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; 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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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 yes = "$with_gnu_ld"; 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 _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' 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,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $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 yes = "$GCC"; 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 "x$output_objdir/$soname" = "x$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 "x$output_objdir/$soname" = "x$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 yes,no = "$GCC,$with_gnu_ld"; 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 no = "$with_gnu_ld"; 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 yes,no = "$GCC,$with_gnu_ld"; 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 no = "$with_gnu_ld"; 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 yes = "$GCC"; 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 yes = "$lt_cv_irix_exported_symbol"; 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 ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; 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* | bitrig*) 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__`"; 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 _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' 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 shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) if test yes = "$GCC"; 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 yes = "$GCC"; 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 yes = "$GCC"; 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 yes = "$GCC"; 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 sequent = "$host_vendor"; 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 yes = "$GCC"; 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 CANNOT 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 yes = "$GCC"; 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 sni = "$host_vendor"; 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 no = "$_LT_TAGVAR(ld_shlibs, $1)" && 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 yes,yes = "$GCC,$enable_shared"; 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 what 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 no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac 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 yes = "$enable_shared" || 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 no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); 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 yes != "$_lt_caught_CXX_error"; 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 yes = "$GXX"; 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 yes = "$GXX"; 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 yes = "$with_gnu_ld"; 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 ia64 = "$host_cpu"; 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 # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive 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 if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; 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,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; 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 yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; 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 yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' 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,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # 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 -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; 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 yes = "$with_gnu_ld"; 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 _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' 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,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $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, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); 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) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; 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 ;; 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 "x$output_objdir/$soname" = "x$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 yes = "$GXX"; 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 "x$output_objdir/$soname" = "x$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 no = "$with_gnu_ld"; 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 yes = "$GXX"; then if test no = "$with_gnu_ld"; 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 yes = "$GXX"; then if test no = "$with_gnu_ld"; 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 | 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 yes = "$supports_anon_versioning"; 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 ;; openbsd* | bitrig*) 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__`"; 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 yes,no = "$GXX,$with_gnu_ld"; 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 yes,no = "$GXX,$with_gnu_ld"; 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 $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 $wl-h $wl$soname -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 $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 $wl-h $wl$soname -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 CANNOT 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 no = "$_LT_TAGVAR(ld_shlibs, $1)" && 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 yes != "$_lt_caught_CXX_error" 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 @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@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 x-L = "$p" || test x-R = "$p"; 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 no = "$pre_test_object_deps_done"; 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 no = "$pre_test_object_deps_done"; 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)= ;; 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 no = "$F77"; 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 yes != "$_lt_disable_F77"; 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 no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac 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 yes = "$enable_shared" || 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 yes != "$_lt_disable_F77" 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 no = "$FC"; 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 yes != "$_lt_disable_FC"; 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 no = "$can_build_shared" && 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 yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac 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 yes = "$enable_shared" || 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 yes != "$_lt_disable_FC" 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 set = "${GCJFLAGS+set}" || 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 10 -lt "$lt_ac_count" && 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], [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_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what 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.22/m4/as-version.m40000644000000000000000000000377013623750431012315 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.22/m4/lib-prefix.m40000644000000000000000000002042213623751246012266 00000000000000# lib-prefix.m4 serial 7 (gettext-0.18) dnl Copyright (C) 2001-2005, 2008-2016 Free Software Foundation, 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 From Bruno Haible. dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't dnl require excessive bracketing. ifdef([AC_HELP_STRING], [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_LIB_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates dnl - a variable acl_libdirstem, containing the basename of the libdir, either dnl "lib" or "lib64" or "lib/64", dnl - a variable acl_libdirstem2, as a secondary possible value for dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or dnl "lib/amd64". AC_DEFUN([AC_LIB_PREPARE_MULTILIB], [ dnl There is no formal standard regarding lib and lib64. dnl On glibc systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine dnl the compiler's default mode by looking at the compiler's library search dnl path. If at least one of its elements ends in /lib64 or points to a dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. dnl Otherwise we use the default, namely "lib". dnl On Solaris systems, the current practice is that on a system supporting dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. AC_REQUIRE([AC_CANONICAL_HOST]) acl_libdirstem=lib acl_libdirstem2= case "$host_os" in solaris*) dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment dnl . dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the dnl symlink is missing, so we set acl_libdirstem2 too. AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], [AC_EGREP_CPP([sixtyfour bits], [ #ifdef _LP64 sixtyfour bits #endif ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) ]) if test $gl_cv_solaris_64bit = yes; then acl_libdirstem=lib/64 case "$host_cpu" in sparc*) acl_libdirstem2=lib/sparcv9 ;; i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; esac fi ;; *) searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` if test -n "$searchpath"; then acl_save_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; */../ | */.. ) # Better ignore directories of this form. They are misleading. ;; *) searchdir=`cd "$searchdir" && pwd` case "$searchdir" in */lib64 ) acl_libdirstem=lib64 ;; esac ;; esac fi done IFS="$acl_save_IFS" fi ;; esac test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" ]) ibus-1.5.22/m4/ltsugar.m40000644000000000000000000001044013623751255011705 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 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.22/m4/ibuslocale.m40000644000000000000000000000100213623750431012333 00000000000000AC_DEFUN([DEFINE_IBUS_LOCALEDIR], [ ibus_save_prefix="$prefix" ibus_save_datarootdir="$datarootdir" ibus_save_datadir="$datadir" ibus_save_localedir="$localedir" test "x$prefix" = xNONE && prefix=$ac_default_prefix datarootdir=`eval echo "$datarootdir"` datadir=`eval echo "$datadir"` test "x$localedir" = xNONE && localedir="${datadir}/locale" ibus_localedir=`eval echo "$localedir"` localedir="$ibus_save_localedir" datadir="$ibus_save_datadir" datarootdir="$ibus_save_datarootdir" prefix="$ibus_save_prefix" ]) ibus-1.5.22/m4/lib-link.m40000644000000000000000000010044313623751246011730 00000000000000# lib-link.m4 serial 26 (gettext-0.18.2) dnl Copyright (C) 2001-2016 Free Software Foundation, 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 From Bruno Haible. AC_PREREQ([2.54]) dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes popdef([NAME]) popdef([Name]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. The missing-message dnl defaults to 'no' and may contain additional hints for the user. dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) pushdef([Name],[m4_translit([$1],[./+-], [____])]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, dnl because these -l options might require -L options that are present in dnl LIBS. -l options benefit only from the -L options listed before it. dnl Otherwise, add it to the front of LIBS, because it may be a static dnl library that depends on another static library that is present in LIBS. dnl Static libraries benefit only from the static libraries listed after dnl it. case " $LIB[]NAME" in *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; *) LIBS="$LIB[]NAME $LIBS" ;; esac AC_LINK_IFELSE( [AC_LANG_PROGRAM([[$3]], [[$4]])], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) AC_SUBST([LIB]NAME[_PREFIX]) popdef([NAME]) popdef([Name]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl acl_libext, dnl acl_shlibext, dnl acl_libname_spec, dnl acl_library_names_spec, dnl acl_hardcode_libdir_flag_spec, dnl acl_hardcode_libdir_separator, dnl acl_hardcode_direct, dnl acl_hardcode_minus_L. AC_DEFUN([AC_LIB_RPATH], [ dnl Tell automake >= 1.10 to complain if config.rpath is missing. m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" acl_libext="$acl_cv_libext" acl_shlibext="$acl_cv_shlibext" acl_libname_spec="$acl_cv_libname_spec" acl_library_names_spec="$acl_cv_library_names_spec" acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE([rpath], [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_FROMPACKAGE(name, package) dnl declares that libname comes from the given package. The configure file dnl will then not have a --with-libname-prefix option but a dnl --with-package-prefix option. Several libraries can come from the same dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar dnl macro call that searches for libname. AC_DEFUN([AC_LIB_FROMPACKAGE], [ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_frompackage_]NAME, [$2]) popdef([NAME]) pushdef([PACK],[$2]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) define([acl_libsinpackage_]PACKUP, m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) popdef([PACKUP]) popdef([PACK]) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) dnl Autoconf >= 2.61 supports dots in --with options. pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH(P_A_C_K[-prefix], [[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" if test "$acl_libdirstem2" != "$acl_libdirstem" \ && ! test -d "$withval/$acl_libdirstem"; then additional_libdir="$withval/$acl_libdirstem2" fi fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= LIB[]NAME[]_PREFIX= dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been dnl computed. So it has to be reset here. HAVE_LIB[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= eval libname=\"$acl_libname_spec\" # typically: libname=lib$name if test -n "$acl_shlibext"; then shrext=".$acl_shlibext" # typically: shrext=.so else shrext= fi if test $use_additional = yes; then dir="$additional_libdir" dnl The same code as in the loop below: dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` dnl First look for a shared library. if test -n "$acl_shlibext"; then if test -f "$dir/$libname$shrext"; then found_dir="$dir" found_so="$dir/$libname$shrext" else if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then ver=`(cd "$dir" && \ for f in "$libname$shrext".*; do echo "$f"; done \ | sed -e "s,^$libname$shrext\\\\.,," \ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | sed 1q ) 2>/dev/null` if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then found_dir="$dir" found_so="$dir/$libname$shrext.$ver" fi else eval library_names=\"$acl_library_names_spec\" for f in $library_names; do if test -f "$dir/$f"; then found_dir="$dir" found_so="$dir/$f" break fi done fi fi fi dnl Then look for a static library. if test "X$found_dir" = "X"; then if test -f "$dir/$libname.$acl_libext"; then found_dir="$dir" found_a="$dir/$libname.$acl_libext" fi fi if test "X$found_dir" != "X"; then if test -f "$dir/$libname.la"; then found_la="$dir/$libname.la" fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no \ || test "X$found_dir" = "X/usr/$acl_libdirstem" \ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$acl_hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$acl_hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; */$acl_libdirstem2 | */$acl_libdirstem2/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` if test "$name" = '$1'; then LIB[]NAME[]_PREFIX="$basedir" fi additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then haveit= if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi popdef([P_A_C_K]) popdef([PACKLIBS]) popdef([PACKUP]) popdef([PACK]) popdef([NAME]) ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) dnl For those cases where a variable contains several -L and -l options dnl referring to unknown libraries and directories, this macro determines the dnl necessary additional linker options for the runtime path. dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) dnl sets LDADDVAR to linker options needed together with LIBSVALUE. dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, dnl otherwise linking without libtool is assumed. AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], [ AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) $1= if test "$enable_rpath" != no; then if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then dnl Use an explicit option to hardcode directories into the resulting dnl binary. rpathdirs= next= for opt in $2; do if test -n "$next"; then dir="$next" dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= else case $opt in -L) next=yes ;; -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` dnl No need to hardcode the standard /usr/lib. if test "X$dir" != "X/usr/$acl_libdirstem" \ && test "X$dir" != "X/usr/$acl_libdirstem2"; then rpathdirs="$rpathdirs $dir" fi next= ;; *) next= ;; esac fi done if test "X$rpathdirs" != "X"; then if test -n ""$3""; then dnl libtool is used for linking. Use -R options. for dir in $rpathdirs; do $1="${$1}${$1:+ }-R$dir" done else dnl The linker is used for linking directly. if test -n "$acl_hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user dnl must pass all path elements in one option. alldirs= for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" $1="${$1}${$1:+ }$flag" done fi fi fi fi fi AC_SUBST([$1]) ]) ibus-1.5.22/m4/ltoptions.m40000644000000000000000000003426213623751255012267 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 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 8 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_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _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_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --with-aix-soname flag, and support the `aix-soname=aix' # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT # is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_WITH([aix-soname], [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) with_aix_soname=$lt_cv_with_aix_soname]) AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _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=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.22/m4/ltversion.m40000644000000000000000000000127313623751255012255 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 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 4179 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.6]) m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) ibus-1.5.22/m4/nls.m40000644000000000000000000000230713623751246011023 00000000000000# nls.m4 serial 5 (gettext-0.18) dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016 Free Software dnl Foundation, 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 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 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]) ]) ibus-1.5.22/m4/po.m40000644000000000000000000004503113623751246010646 00000000000000# po.m4 serial 24 (gettext-0.19) dnl Copyright (C) 1995-2014, 2016 Free Software Foundation, 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 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 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.60]) dnl Checks for all prerequisites of the po subdirectory. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl AC_REQUIRE([AC_PROG_SED])dnl AC_REQUIRE([AM_NLS])dnl dnl Release version of the gettext macros. This is used to ensure that dnl the gettext macros and po/Makefile.in.in are in sync. AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) dnl Test whether it is GNU msgfmt >= 0.15. changequote(,)dnl case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; *) MSGFMT_015=$MSGFMT ;; esac changequote([,])dnl AC_SUBST([MSGFMT_015]) changequote(,)dnl case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; *) GMSGFMT_015=$GMSGFMT ;; esac changequote([,])dnl AC_SUBST([GMSGFMT_015]) dnl Search for GNU xgettext 0.12 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Test whether it is GNU xgettext >= 0.15. changequote(,)dnl case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; *) XGETTEXT_015=$XGETTEXT ;; esac changequote([,])dnl AC_SUBST([XGETTEXT_015]) dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) dnl Installation directories. dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we dnl have to define it here, so that it can be used in po/Makefile. test -n "$localedir" || localedir='${datadir}/locale' AC_SUBST([localedir]) dnl Support for AM_XGETTEXT_OPTION. test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) AC_CONFIG_COMMANDS([po-directories], [[ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Treat a directory as a PO directory if and only if it has a # POTFILES.in file. This allows packages to have multiple PO # directories under different names or in different locations. if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" gt_tab=`printf '\t'` cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$OBSOLETE_ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. # Hide the ALL_LINGUAS assignment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) # Compute UPDATEPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) # Compute DUMMYPOFILES # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) # Compute GMOFILES # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= UPDATEPOFILES= DUMMYPOFILES= GMOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; 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 INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done]], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it # from automake < 1.5. eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Postprocesses a Makefile in a directory containing PO files. AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], [ # When this code is run, in config.status, two variables have already been # set: # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, # - LINGUAS is the value of the environment variable LINGUAS at configure # time. changequote(,)dnl # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac # Find a way to echo strings without interpreting backslash. if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then gt_echo='echo' else if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then gt_echo='printf %s\n' else echo_func () { cat < "$ac_file.tmp" tab=`printf '\t'` if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` cat >> "$ac_file.tmp" < /dev/null; then # Add dependencies that cannot be formulated as a simple suffix rule. for lang in $ALL_LINGUAS; do frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` cat >> "$ac_file.tmp" <> "$ac_file.tmp" <. # # As a special exception, the above copyright owner gives unlimited # permission to copy, distribute and modify the configure scripts that # are the output of Autoconf when processing the Macro. You need not # follow the terms of the GNU General Public License when using or # distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # 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.22/m4/lt~obsolete.m40000644000000000000000000001377413623751255012613 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 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.22/config.guess0000755000000000000000000012617313623751263011774 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2018 Free Software Foundation, Inc. timestamp='2018-08-29' # 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: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # 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. Options: -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-2018 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 # 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. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15 trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0 set_cc_for_build() { : "${TMPDIR=/tmp}" # shellcheck disable=SC2039 { 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" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD="$driver" 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 } # 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 ; 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 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'`" # If ldd exists, use it to detect musl libc. if command -v ldd >/dev/null && \ ldd --version 2>&1 | grep -q ^musl then LIBC=musl fi ;; 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=`(uname -p 2>/dev/null || \ "/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 ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine="${arch}${endian}"-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) and ABI. case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) 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 # Determine ABI tags. case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; 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/[-_].*//' | cut -d. -f1,2` ;; 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}${abi-}" 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 ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" exit ;; *:MidnightBSD:*:*) echo "$UNAME_MACHINE"-unknown-midnightbsd"$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 ;; *:Sortix:*:*) echo "$UNAME_MACHINE"-unknown-sortix exit ;; *:Redox:*:*) echo "$UNAME_MACHINE"-unknown-redox exit ;; mips:OSF1:*.*) echo mips-dec-osf1 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 ;; 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.*:*) UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" case `isainfo -b` in 32) echo i386-pc-solaris2"$UNAME_REL" ;; 64) echo x86_64-pc-solaris2"$UNAME_REL" ;; esac 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) 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 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:4.4BSD:*) 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 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 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:*:*) 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 ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi else echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf fi exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" 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*: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 ;; i*:UWIN*:*) echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-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 "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; *:Minix:*:*) echo "$UNAME_MACHINE"-unknown-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:*:*) 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 ;; e2k:Linux:*:*) echo "$UNAME_MACHINE"-unknown-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 ;; k1om: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:*:*) 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; } ;; mips64el:Linux:*:*) echo "$UNAME_MACHINE"-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 ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo "$UNAME_MACHINE"-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"-pc-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.*:*) 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 configure 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 ;; SX-ACE:SUPER-UX:*:*) echo sxace-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 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 # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc 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 ;; NSV-*:NONSTOP_KERNEL:*:*) echo nsv-tandem-nsk"$UNAME_RELEASE" exit ;; NSX-*:NONSTOP_KERNEL:*:*) echo nsx-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. # shellcheck disable=SC2154 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 ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac echo "$0: unable to guess system type" >&2 case "$UNAME_MACHINE:$UNAME_SYSTEM" in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&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 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: ibus-1.5.22/python-config.py0000755000000000000000000000261213623750431012600 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.22/client/0000755000000000000000000000000013623751574011005 500000000000000ibus-1.5.22/client/Makefile.am0000644000000000000000000000214313623750431012750 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.22/client/Makefile.in0000644000000000000000000005710313623751264012774 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 distdir-am 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ @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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/client/gtk2/0000755000000000000000000000000013623751574011654 500000000000000ibus-1.5.22/client/gtk2/Makefile.am0000644000000000000000000000305013623750431013615 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.22/client/gtk2/Makefile.in0000644000000000000000000007056513623751264013652 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/im_ibus_la-ibusim.Plo \ ./$(DEPDIR)/im_ibus_la-ibusimcontext.Plo 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_ibus_la-ibusimcontext.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 -f ./$(DEPDIR)/im_ibus_la-ibusim.Plo -rm -f ./$(DEPDIR)/im_ibus_la-ibusimcontext.Plo -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 -f ./$(DEPDIR)/im_ibus_la-ibusim.Plo -rm -f ./$(DEPDIR)/im_ibus_la-ibusimcontext.Plo -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 am--depfiles 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.22/client/gtk2/ibusim.c0000644000000000000000000000427013623750431013222 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.22/client/gtk2/ibusimcontext.c0000644000000000000000000020760213623750431014633 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) 2015-2019 Takao Fujiwara * Copyright (C) 2008-2019 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" #ifdef GDK_WINDOWING_WAYLAND #include #endif #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; guint preedit_mode; GdkRectangle cursor_area; gboolean has_focus; guint32 time; gint caps; /* cancellable */ GCancellable *cancellable; GQueue *events_queue; #if !GTK_CHECK_VERSION (3, 93, 0) gboolean use_button_press_event; #endif }; 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 const gchar *_discard_password_apps = ""; static gboolean _use_discard_password = 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 _ibus_context_update_preedit_text_cb (IBusInputContext *ibuscontext, IBusText *text, gint cursor_pos, gboolean visible, guint mode, IBusIMContext *ibusimcontext); 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 gboolean _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 gboolean ibus_im_context_commit_event (IBusIMContext *ibusimcontext, GdkEventKey *event) { int i; GdkModifierType no_text_input_mask; gunichar ch; if (event->type == GDK_KEY_RELEASE) return FALSE; /* Ignore modifier key presses */ for (i = 0; i < G_N_ELEMENTS (IBUS_COMPOSE_IGNORE_KEYLIST); i++) if (event->keyval == IBUS_COMPOSE_IGNORE_KEYLIST[i]) return FALSE; #if GTK_CHECK_VERSION (3, 4, 0) no_text_input_mask = gdk_keymap_get_modifier_mask ( gdk_keymap_get_for_display (gdk_display_get_default ()), GDK_MODIFIER_INTENT_NO_TEXT_INPUT); #else # ifndef GDK_WINDOWING_QUARTZ # define _IBUS_NO_TEXT_INPUT_MOD_MASK (GDK_MOD1_MASK | GDK_CONTROL_MASK) # else # define _IBUS_NO_TEXT_INPUT_MOD_MASK (GDK_MOD2_MASK | GDK_CONTROL_MASK) # endif no_text_input_mask = _IBUS_NO_TEXT_INPUT_MOD_MASK; # undef _IBUS_NO_TEXT_INPUT_MOD_MASK #endif if (event->state & no_text_input_mask || event->keyval == GDK_KEY_Return || event->keyval == GDK_KEY_ISO_Enter || event->keyval == GDK_KEY_KP_Enter) { return FALSE; } ch = ibus_keyval_to_unicode (event->keyval); if (ch != 0 && !g_unichar_iscntrl (ch)) { IBusText *text = ibus_text_new_from_unichar (ch); g_signal_emit (ibusimcontext, _signal_commit_id, 0, text->text); g_object_unref (text); _request_surrounding_text (ibusimcontext); return TRUE; } 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) { /* #2054 firefox::IMContextWrapper::GetCurrentParagraph() could * fail with the first typing on firefox but it succeeds with * the second typing. */ g_warning ("%s has no capability of surrounding-text feature", g_get_prgname ()); } } } static gboolean _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); if (_use_discard_password) { if (purpose == GTK_INPUT_PURPOSE_PASSWORD || purpose == GTK_INPUT_PURPOSE_PIN) { return FALSE; } } ibus_input_context_set_content_type (context->ibuscontext, purpose, hints); } #endif return TRUE; } 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 (!g_strcmp0 (ibus_bus_get_service_name (_bus), IBUS_SERVICE_PORTAL)) { _daemon_is_running = TRUE; return; } /* 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); _use_discard_password = _get_boolean_env ("IBUS_DISCARD_PASSWORD", FALSE); #define CHECK_APP_IN_CSV_ENV_VARIABLES(retval, \ env_apps, \ fallback_apps, \ value_if_found) \ { \ const gchar * prgname = g_get_prgname (); \ gchar **p; \ gchar ** apps; \ if (g_getenv ((#env_apps))) { \ fallback_apps = g_getenv (#env_apps); \ } \ apps = g_strsplit ((fallback_apps), ",", 0); \ for (p = apps; *p != NULL; p++) { \ if (g_regex_match_simple (*p, prgname, 0, 0)) { \ retval = (value_if_found); \ break; \ } \ } \ g_strfreev (apps); \ } /* env IBUS_DISABLE_SNOOPER does not exist */ if (_use_key_snooper) { /* disable snooper if app is in _no_snooper_apps */ CHECK_APP_IN_CSV_ENV_VARIABLES (_use_key_snooper, IBUS_NO_SNOOPER_APPS, _no_snooper_apps, FALSE); } if (!_use_discard_password) { CHECK_APP_IN_CSV_ENV_VARIABLES (_use_discard_password, IBUS_DISCARD_PASSWORD_APPS, _discard_password_apps, TRUE); } #undef CHECK_APP_IN_CSV_ENV_VARIABLES /* init bus object */ if (_bus == NULL) { _bus = ibus_bus_new_async_client (); /* 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_bus_get_service_name (_bus), 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; ibusimcontext->preedit_mode = IBUS_ENGINE_PREEDIT_CLEAR; // 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 void ibus_im_context_clear_preedit_text (IBusIMContext *ibusimcontext) { gchar *preedit_string = NULL; g_assert (ibusimcontext->ibuscontext); if (ibusimcontext->preedit_visible && ibusimcontext->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) { preedit_string = g_strdup (ibusimcontext->preedit_string); } /* Clear the preedit_string but keep the preedit_cursor_pos and * preedit_visible because a time lag could happen, firefox commit * the preedit text before the preedit text is cleared and it cause * a double commits of the Hangul preedit in firefox if the preedit * would be located on the URL bar and click on anywhere of firefox * out of the URL bar. */ _ibus_context_update_preedit_text_cb (ibusimcontext->ibuscontext, ibus_text_new_from_string (""), ibusimcontext->preedit_cursor_pos, ibusimcontext->preedit_visible, IBUS_ENGINE_PREEDIT_CLEAR, ibusimcontext); if (preedit_string) { g_signal_emit (ibusimcontext, _signal_commit_id, 0, preedit_string); g_free (preedit_string); _request_surrounding_text (ibusimcontext); } } 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; /* Do not call gtk_im_context_filter_keypress() because * gtk_im_context_simple_filter_keypress() binds Ctrl-Shift-u */ if (event->state & IBUS_IGNORED_MASK) return ibus_im_context_commit_event (ibusimcontext, 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) { if (!_set_content_type (ibusimcontext)) { ibusimcontext->has_focus = FALSE; return; } 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; } /* If _use_discard_password is TRUE or GtkEntry has no visibility, * _focus_im_context is NULL. */ if (_focus_im_context) { g_object_remove_weak_pointer ((GObject *) context, (gpointer *) &_focus_im_context); _focus_im_context = NULL; } ibusimcontext->has_focus = FALSE; if (ibusimcontext->ibuscontext) { ibus_im_context_clear_preedit_text (ibusimcontext); 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) { /* Commented out ibus_im_context_clear_preedit_text(). * Hangul needs to receive the reset callback with button press * but other IMEs should avoid to receive the reset callback * by themselves. * IBus uses button-press-event instead until GTK is fixed. * https://gitlab.gnome.org/GNOME/gtk/issues/1534 */ 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); } #if !GTK_CHECK_VERSION (3, 93, 0) /* Use the button-press-event signal until GtkIMContext always emits the reset * signal. * https://gitlab.gnome.org/GNOME/gtk/merge_requests/460 */ static gboolean ibus_im_context_button_press_event_cb (GtkWidget *widget, GdkEventButton *event, IBusIMContext *ibusimcontext) { if (event->button != 1) return FALSE; if (ibusimcontext->ibuscontext) { ibus_im_context_clear_preedit_text (ibusimcontext); ibus_input_context_reset (ibusimcontext->ibuscontext); } return FALSE; } static void _connect_button_press_event (IBusIMContext *ibusimcontext, gboolean do_connect) { GtkWidget *widget = NULL; g_assert (ibusimcontext->client_window); gdk_window_get_user_data (ibusimcontext->client_window, (gpointer *)&widget); /* firefox needs GtkWidget instead of GtkWindow */ if (GTK_IS_WIDGET (widget)) { if (do_connect) { g_signal_connect ( widget, "button-press-event", G_CALLBACK (ibus_im_context_button_press_event_cb), ibusimcontext); ibusimcontext->use_button_press_event = TRUE; } else { g_signal_handlers_disconnect_by_func ( widget, G_CALLBACK (ibus_im_context_button_press_event_cb), ibusimcontext); ibusimcontext->use_button_press_event = FALSE; } } } #endif static void ibus_im_context_set_client_window (GtkIMContext *context, GdkWindow *client) { IBusIMContext *ibusimcontext; IDEBUG ("%s", __FUNCTION__); ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->client_window) { #if !GTK_CHECK_VERSION (3, 93, 0) if (ibusimcontext->use_button_press_event) _connect_button_press_event (ibusimcontext, FALSE); #endif g_object_unref (ibusimcontext->client_window); ibusimcontext->client_window = NULL; } if (client != NULL) { ibusimcontext->client_window = g_object_ref (client); #if !GTK_CHECK_VERSION (3, 93, 0) if (!ibusimcontext->use_button_press_event) _connect_button_press_event (ibusimcontext, TRUE); #endif } if (ibusimcontext->slave) gtk_im_context_set_client_window (ibusimcontext->slave, client); } static void _set_rect_scale_factor_with_window (GdkRectangle *area, GdkWindow *window) { #if GTK_CHECK_VERSION (3, 10, 0) int scale_factor; g_assert (area); g_assert (GDK_IS_WINDOW (window)); scale_factor = gdk_window_get_scale_factor (window); area->x *= scale_factor; area->y *= scale_factor; area->width *= scale_factor; area->height *= scale_factor; #endif } static gboolean _set_cursor_location_internal (IBusIMContext *ibusimcontext) { GdkRectangle area; if(ibusimcontext->client_window == NULL || ibusimcontext->ibuscontext == NULL) { return FALSE; } area = ibusimcontext->cursor_area; #ifdef GDK_WINDOWING_WAYLAND if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) { gdouble px, py; GdkWindow *parent; GdkWindow *window = ibusimcontext->client_window; while ((parent = gdk_window_get_effective_parent (window)) != NULL) { gdk_window_coords_to_parent (window, area.x, area.y, &px, &py); area.x = px; area.y = py; window = parent; } _set_rect_scale_factor_with_window (&area, ibusimcontext->client_window); ibus_input_context_set_cursor_location_relative ( ibusimcontext->ibuscontext, area.x, area.y, area.width, area.height); return FALSE; } #endif 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); _set_rect_scale_factor_with_window (&area, ibusimcontext->client_window); 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, guint mode, 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; } #if !GTK_CHECK_VERSION (3, 93, 0) if (!ibusimcontext->use_button_press_event && mode == IBUS_ENGINE_PREEDIT_COMMIT) { if (ibusimcontext->client_window) { _connect_button_press_event (ibusimcontext, TRUE); } } #endif 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; ibusimcontext->preedit_mode = mode; 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 { ibus_input_context_set_client_commit_preedit (context, TRUE); 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-with-mode", 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.22/client/gtk2/ibusimcontext.h0000644000000000000000000000621013623750431014630 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.22/client/gtk3/0000755000000000000000000000000013623751574011655 500000000000000ibus-1.5.22/client/gtk3/Makefile.am0000644000000000000000000000305013623750431013616 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.22/client/gtk3/Makefile.in0000644000000000000000000007056513623751264013653 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/im_ibus_la-ibusim.Plo \ ./$(DEPDIR)/im_ibus_la-ibusimcontext.Plo 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/im_ibus_la-ibusimcontext.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 -f ./$(DEPDIR)/im_ibus_la-ibusim.Plo -rm -f ./$(DEPDIR)/im_ibus_la-ibusimcontext.Plo -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 -f ./$(DEPDIR)/im_ibus_la-ibusim.Plo -rm -f ./$(DEPDIR)/im_ibus_la-ibusimcontext.Plo -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 am--depfiles 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.22/client/gtk3/ibusim.c0000644000000000000000000000427013623750431013223 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.22/client/gtk3/ibusimcontext.c0000644000000000000000000020760213623750431014634 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) 2015-2019 Takao Fujiwara * Copyright (C) 2008-2019 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" #ifdef GDK_WINDOWING_WAYLAND #include #endif #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; guint preedit_mode; GdkRectangle cursor_area; gboolean has_focus; guint32 time; gint caps; /* cancellable */ GCancellable *cancellable; GQueue *events_queue; #if !GTK_CHECK_VERSION (3, 93, 0) gboolean use_button_press_event; #endif }; 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 const gchar *_discard_password_apps = ""; static gboolean _use_discard_password = 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 _ibus_context_update_preedit_text_cb (IBusInputContext *ibuscontext, IBusText *text, gint cursor_pos, gboolean visible, guint mode, IBusIMContext *ibusimcontext); 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 gboolean _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 gboolean ibus_im_context_commit_event (IBusIMContext *ibusimcontext, GdkEventKey *event) { int i; GdkModifierType no_text_input_mask; gunichar ch; if (event->type == GDK_KEY_RELEASE) return FALSE; /* Ignore modifier key presses */ for (i = 0; i < G_N_ELEMENTS (IBUS_COMPOSE_IGNORE_KEYLIST); i++) if (event->keyval == IBUS_COMPOSE_IGNORE_KEYLIST[i]) return FALSE; #if GTK_CHECK_VERSION (3, 4, 0) no_text_input_mask = gdk_keymap_get_modifier_mask ( gdk_keymap_get_for_display (gdk_display_get_default ()), GDK_MODIFIER_INTENT_NO_TEXT_INPUT); #else # ifndef GDK_WINDOWING_QUARTZ # define _IBUS_NO_TEXT_INPUT_MOD_MASK (GDK_MOD1_MASK | GDK_CONTROL_MASK) # else # define _IBUS_NO_TEXT_INPUT_MOD_MASK (GDK_MOD2_MASK | GDK_CONTROL_MASK) # endif no_text_input_mask = _IBUS_NO_TEXT_INPUT_MOD_MASK; # undef _IBUS_NO_TEXT_INPUT_MOD_MASK #endif if (event->state & no_text_input_mask || event->keyval == GDK_KEY_Return || event->keyval == GDK_KEY_ISO_Enter || event->keyval == GDK_KEY_KP_Enter) { return FALSE; } ch = ibus_keyval_to_unicode (event->keyval); if (ch != 0 && !g_unichar_iscntrl (ch)) { IBusText *text = ibus_text_new_from_unichar (ch); g_signal_emit (ibusimcontext, _signal_commit_id, 0, text->text); g_object_unref (text); _request_surrounding_text (ibusimcontext); return TRUE; } 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) { /* #2054 firefox::IMContextWrapper::GetCurrentParagraph() could * fail with the first typing on firefox but it succeeds with * the second typing. */ g_warning ("%s has no capability of surrounding-text feature", g_get_prgname ()); } } } static gboolean _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); if (_use_discard_password) { if (purpose == GTK_INPUT_PURPOSE_PASSWORD || purpose == GTK_INPUT_PURPOSE_PIN) { return FALSE; } } ibus_input_context_set_content_type (context->ibuscontext, purpose, hints); } #endif return TRUE; } 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 (!g_strcmp0 (ibus_bus_get_service_name (_bus), IBUS_SERVICE_PORTAL)) { _daemon_is_running = TRUE; return; } /* 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); _use_discard_password = _get_boolean_env ("IBUS_DISCARD_PASSWORD", FALSE); #define CHECK_APP_IN_CSV_ENV_VARIABLES(retval, \ env_apps, \ fallback_apps, \ value_if_found) \ { \ const gchar * prgname = g_get_prgname (); \ gchar **p; \ gchar ** apps; \ if (g_getenv ((#env_apps))) { \ fallback_apps = g_getenv (#env_apps); \ } \ apps = g_strsplit ((fallback_apps), ",", 0); \ for (p = apps; *p != NULL; p++) { \ if (g_regex_match_simple (*p, prgname, 0, 0)) { \ retval = (value_if_found); \ break; \ } \ } \ g_strfreev (apps); \ } /* env IBUS_DISABLE_SNOOPER does not exist */ if (_use_key_snooper) { /* disable snooper if app is in _no_snooper_apps */ CHECK_APP_IN_CSV_ENV_VARIABLES (_use_key_snooper, IBUS_NO_SNOOPER_APPS, _no_snooper_apps, FALSE); } if (!_use_discard_password) { CHECK_APP_IN_CSV_ENV_VARIABLES (_use_discard_password, IBUS_DISCARD_PASSWORD_APPS, _discard_password_apps, TRUE); } #undef CHECK_APP_IN_CSV_ENV_VARIABLES /* init bus object */ if (_bus == NULL) { _bus = ibus_bus_new_async_client (); /* 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_bus_get_service_name (_bus), 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; ibusimcontext->preedit_mode = IBUS_ENGINE_PREEDIT_CLEAR; // 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 void ibus_im_context_clear_preedit_text (IBusIMContext *ibusimcontext) { gchar *preedit_string = NULL; g_assert (ibusimcontext->ibuscontext); if (ibusimcontext->preedit_visible && ibusimcontext->preedit_mode == IBUS_ENGINE_PREEDIT_COMMIT) { preedit_string = g_strdup (ibusimcontext->preedit_string); } /* Clear the preedit_string but keep the preedit_cursor_pos and * preedit_visible because a time lag could happen, firefox commit * the preedit text before the preedit text is cleared and it cause * a double commits of the Hangul preedit in firefox if the preedit * would be located on the URL bar and click on anywhere of firefox * out of the URL bar. */ _ibus_context_update_preedit_text_cb (ibusimcontext->ibuscontext, ibus_text_new_from_string (""), ibusimcontext->preedit_cursor_pos, ibusimcontext->preedit_visible, IBUS_ENGINE_PREEDIT_CLEAR, ibusimcontext); if (preedit_string) { g_signal_emit (ibusimcontext, _signal_commit_id, 0, preedit_string); g_free (preedit_string); _request_surrounding_text (ibusimcontext); } } 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; /* Do not call gtk_im_context_filter_keypress() because * gtk_im_context_simple_filter_keypress() binds Ctrl-Shift-u */ if (event->state & IBUS_IGNORED_MASK) return ibus_im_context_commit_event (ibusimcontext, 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) { if (!_set_content_type (ibusimcontext)) { ibusimcontext->has_focus = FALSE; return; } 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; } /* If _use_discard_password is TRUE or GtkEntry has no visibility, * _focus_im_context is NULL. */ if (_focus_im_context) { g_object_remove_weak_pointer ((GObject *) context, (gpointer *) &_focus_im_context); _focus_im_context = NULL; } ibusimcontext->has_focus = FALSE; if (ibusimcontext->ibuscontext) { ibus_im_context_clear_preedit_text (ibusimcontext); 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) { /* Commented out ibus_im_context_clear_preedit_text(). * Hangul needs to receive the reset callback with button press * but other IMEs should avoid to receive the reset callback * by themselves. * IBus uses button-press-event instead until GTK is fixed. * https://gitlab.gnome.org/GNOME/gtk/issues/1534 */ 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); } #if !GTK_CHECK_VERSION (3, 93, 0) /* Use the button-press-event signal until GtkIMContext always emits the reset * signal. * https://gitlab.gnome.org/GNOME/gtk/merge_requests/460 */ static gboolean ibus_im_context_button_press_event_cb (GtkWidget *widget, GdkEventButton *event, IBusIMContext *ibusimcontext) { if (event->button != 1) return FALSE; if (ibusimcontext->ibuscontext) { ibus_im_context_clear_preedit_text (ibusimcontext); ibus_input_context_reset (ibusimcontext->ibuscontext); } return FALSE; } static void _connect_button_press_event (IBusIMContext *ibusimcontext, gboolean do_connect) { GtkWidget *widget = NULL; g_assert (ibusimcontext->client_window); gdk_window_get_user_data (ibusimcontext->client_window, (gpointer *)&widget); /* firefox needs GtkWidget instead of GtkWindow */ if (GTK_IS_WIDGET (widget)) { if (do_connect) { g_signal_connect ( widget, "button-press-event", G_CALLBACK (ibus_im_context_button_press_event_cb), ibusimcontext); ibusimcontext->use_button_press_event = TRUE; } else { g_signal_handlers_disconnect_by_func ( widget, G_CALLBACK (ibus_im_context_button_press_event_cb), ibusimcontext); ibusimcontext->use_button_press_event = FALSE; } } } #endif static void ibus_im_context_set_client_window (GtkIMContext *context, GdkWindow *client) { IBusIMContext *ibusimcontext; IDEBUG ("%s", __FUNCTION__); ibusimcontext = IBUS_IM_CONTEXT (context); if (ibusimcontext->client_window) { #if !GTK_CHECK_VERSION (3, 93, 0) if (ibusimcontext->use_button_press_event) _connect_button_press_event (ibusimcontext, FALSE); #endif g_object_unref (ibusimcontext->client_window); ibusimcontext->client_window = NULL; } if (client != NULL) { ibusimcontext->client_window = g_object_ref (client); #if !GTK_CHECK_VERSION (3, 93, 0) if (!ibusimcontext->use_button_press_event) _connect_button_press_event (ibusimcontext, TRUE); #endif } if (ibusimcontext->slave) gtk_im_context_set_client_window (ibusimcontext->slave, client); } static void _set_rect_scale_factor_with_window (GdkRectangle *area, GdkWindow *window) { #if GTK_CHECK_VERSION (3, 10, 0) int scale_factor; g_assert (area); g_assert (GDK_IS_WINDOW (window)); scale_factor = gdk_window_get_scale_factor (window); area->x *= scale_factor; area->y *= scale_factor; area->width *= scale_factor; area->height *= scale_factor; #endif } static gboolean _set_cursor_location_internal (IBusIMContext *ibusimcontext) { GdkRectangle area; if(ibusimcontext->client_window == NULL || ibusimcontext->ibuscontext == NULL) { return FALSE; } area = ibusimcontext->cursor_area; #ifdef GDK_WINDOWING_WAYLAND if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) { gdouble px, py; GdkWindow *parent; GdkWindow *window = ibusimcontext->client_window; while ((parent = gdk_window_get_effective_parent (window)) != NULL) { gdk_window_coords_to_parent (window, area.x, area.y, &px, &py); area.x = px; area.y = py; window = parent; } _set_rect_scale_factor_with_window (&area, ibusimcontext->client_window); ibus_input_context_set_cursor_location_relative ( ibusimcontext->ibuscontext, area.x, area.y, area.width, area.height); return FALSE; } #endif 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); _set_rect_scale_factor_with_window (&area, ibusimcontext->client_window); 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, guint mode, 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; } #if !GTK_CHECK_VERSION (3, 93, 0) if (!ibusimcontext->use_button_press_event && mode == IBUS_ENGINE_PREEDIT_COMMIT) { if (ibusimcontext->client_window) { _connect_button_press_event (ibusimcontext, TRUE); } } #endif 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; ibusimcontext->preedit_mode = mode; 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 { ibus_input_context_set_client_commit_preedit (context, TRUE); 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-with-mode", 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.22/client/gtk3/ibusimcontext.h0000644000000000000000000000621013623750431014631 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.22/client/wayland/0000755000000000000000000000000013623751574012444 500000000000000ibus-1.5.22/client/wayland/Makefile.am0000644000000000000000000000325513623750431014414 00000000000000# vim:set noet ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2013 Peng Huang # Copyright (c) 2019 Takao Fujiwara # Copyright (c) 2007-2019 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-unstable-v1-client-protocol.h \ input-method-unstable-v1-protocol.c \ $(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 @wayland_scanner_rules@ -include $(top_srcdir)/git.mk ibus-1.5.22/client/wayland/Makefile.in0000644000000000000000000007456413623751264014445 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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) 2019 Takao Fujiwara # Copyright (c) 2007-2019 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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-unstable-v1-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__maybe_remake_depfiles = depfiles am__depfiles_remade = \ ./$(DEPDIR)/ibus_wayland-input-method-unstable-v1-protocol.Po \ ./$(DEPDIR)/ibus_wayland-main.Po 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ libibus = $(top_builddir)/src/libibus-@IBUS_API_VERSION@.la protocol_sources = \ input-method-unstable-v1-client-protocol.h \ input-method-unstable-v1-protocol.c \ $(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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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-unstable-v1-protocol.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_wayland-main.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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-unstable-v1-protocol.o: input-method-unstable-v1-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-unstable-v1-protocol.o -MD -MP -MF $(DEPDIR)/ibus_wayland-input-method-unstable-v1-protocol.Tpo -c -o ibus_wayland-input-method-unstable-v1-protocol.o `test -f 'input-method-unstable-v1-protocol.c' || echo '$(srcdir)/'`input-method-unstable-v1-protocol.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_wayland-input-method-unstable-v1-protocol.Tpo $(DEPDIR)/ibus_wayland-input-method-unstable-v1-protocol.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='input-method-unstable-v1-protocol.c' object='ibus_wayland-input-method-unstable-v1-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-unstable-v1-protocol.o `test -f 'input-method-unstable-v1-protocol.c' || echo '$(srcdir)/'`input-method-unstable-v1-protocol.c ibus_wayland-input-method-unstable-v1-protocol.obj: input-method-unstable-v1-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-unstable-v1-protocol.obj -MD -MP -MF $(DEPDIR)/ibus_wayland-input-method-unstable-v1-protocol.Tpo -c -o ibus_wayland-input-method-unstable-v1-protocol.obj `if test -f 'input-method-unstable-v1-protocol.c'; then $(CYGPATH_W) 'input-method-unstable-v1-protocol.c'; else $(CYGPATH_W) '$(srcdir)/input-method-unstable-v1-protocol.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/ibus_wayland-input-method-unstable-v1-protocol.Tpo $(DEPDIR)/ibus_wayland-input-method-unstable-v1-protocol.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='input-method-unstable-v1-protocol.c' object='ibus_wayland-input-method-unstable-v1-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-unstable-v1-protocol.obj `if test -f 'input-method-unstable-v1-protocol.c'; then $(CYGPATH_W) 'input-method-unstable-v1-protocol.c'; else $(CYGPATH_W) '$(srcdir)/input-method-unstable-v1-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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 -f ./$(DEPDIR)/ibus_wayland-input-method-unstable-v1-protocol.Po -rm -f ./$(DEPDIR)/ibus_wayland-main.Po -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 -f ./$(DEPDIR)/ibus_wayland-input-method-unstable-v1-protocol.Po -rm -f ./$(DEPDIR)/ibus_wayland-main.Po -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 am--depfiles 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 @wayland_scanner_rules@ -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.22/client/wayland/README0000644000000000000000000000115113623750431013231 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.22/client/wayland/input-method-unstable-v1-protocol.c0000644000000000000000000000741213623750431021136 00000000000000/* Generated by wayland-scanner 1.16.92 */ /* * Copyright © 2012, 2013 Intel Corporation * * 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 (including the next * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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. */ #include #include #include "wayland-util.h" extern const struct wl_interface wl_keyboard_interface; extern const struct wl_interface wl_output_interface; extern const struct wl_interface wl_surface_interface; extern const struct wl_interface zwp_input_method_context_v1_interface; extern const struct wl_interface zwp_input_panel_surface_v1_interface; static const struct wl_interface *types[] = { NULL, NULL, NULL, NULL, NULL, &wl_keyboard_interface, &zwp_input_method_context_v1_interface, &zwp_input_method_context_v1_interface, &zwp_input_panel_surface_v1_interface, &wl_surface_interface, &wl_output_interface, NULL, }; static const struct wl_message zwp_input_method_context_v1_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 zwp_input_method_context_v1_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 zwp_input_method_context_v1_interface = { "zwp_input_method_context_v1", 1, 14, zwp_input_method_context_v1_requests, 6, zwp_input_method_context_v1_events, }; static const struct wl_message zwp_input_method_v1_events[] = { { "activate", "n", types + 6 }, { "deactivate", "o", types + 7 }, }; WL_EXPORT const struct wl_interface zwp_input_method_v1_interface = { "zwp_input_method_v1", 1, 0, NULL, 2, zwp_input_method_v1_events, }; static const struct wl_message zwp_input_panel_v1_requests[] = { { "get_input_panel_surface", "no", types + 8 }, }; WL_EXPORT const struct wl_interface zwp_input_panel_v1_interface = { "zwp_input_panel_v1", 1, 1, zwp_input_panel_v1_requests, 0, NULL, }; static const struct wl_message zwp_input_panel_surface_v1_requests[] = { { "set_toplevel", "ou", types + 10 }, { "set_overlay_panel", "", types + 0 }, }; WL_EXPORT const struct wl_interface zwp_input_panel_surface_v1_interface = { "zwp_input_panel_surface_v1", 1, 2, zwp_input_panel_surface_v1_requests, 0, NULL, }; ibus-1.5.22/client/wayland/input-method-unstable-v1-client-protocol.h0000644000000000000000000006535313623750431022427 00000000000000/* Generated by wayland-scanner 1.16.92 */ #ifndef INPUT_METHOD_UNSTABLE_V1_CLIENT_PROTOCOL_H #define INPUT_METHOD_UNSTABLE_V1_CLIENT_PROTOCOL_H #include #include #include "wayland-client.h" #ifdef __cplusplus extern "C" { #endif /** * @page page_input_method_unstable_v1 The input_method_unstable_v1 protocol * @section page_ifaces_input_method_unstable_v1 Interfaces * - @subpage page_iface_zwp_input_method_context_v1 - input method context * - @subpage page_iface_zwp_input_method_v1 - input method * - @subpage page_iface_zwp_input_panel_v1 - interface for implementing keyboards * - @subpage page_iface_zwp_input_panel_surface_v1 - * @section page_copyright_input_method_unstable_v1 Copyright *

 *
 * Copyright © 2012, 2013 Intel Corporation
 *
 * 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 (including the next
 * paragraph) 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 AUTHORS OR COPYRIGHT HOLDERS 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.
 * 
*/ struct wl_keyboard; struct wl_output; struct wl_surface; struct zwp_input_method_context_v1; struct zwp_input_method_v1; struct zwp_input_panel_surface_v1; struct zwp_input_panel_v1; /** * @page page_iface_zwp_input_method_context_v1 zwp_input_method_context_v1 * @section page_iface_zwp_input_method_context_v1_desc Description * * Corresponds to a text input on the input method side. An input method context * is created on text input activation on the input method side. It allows * receiving information about the text input 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). * * Warning! The protocol described in this file is experimental and * backward incompatible changes may be made. Backward compatible changes * may be added together with the corresponding interface version bump. * Backward incompatible changes are done by bumping the version number in * the protocol and interface names and resetting the interface version. * Once the protocol is to be declared stable, the 'z' prefix and the * version number in the protocol and interface names are removed and the * interface version number is reset. * @section page_iface_zwp_input_method_context_v1_api API * See @ref iface_zwp_input_method_context_v1. */ /** * @defgroup iface_zwp_input_method_context_v1 The zwp_input_method_context_v1 interface * * Corresponds to a text input on the input method side. An input method context * is created on text input activation on the input method side. It allows * receiving information about the text input 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). * * Warning! The protocol described in this file is experimental and * backward incompatible changes may be made. Backward compatible changes * may be added together with the corresponding interface version bump. * Backward incompatible changes are done by bumping the version number in * the protocol and interface names and resetting the interface version. * Once the protocol is to be declared stable, the 'z' prefix and the * version number in the protocol and interface names are removed and the * interface version number is reset. */ extern const struct wl_interface zwp_input_method_context_v1_interface; /** * @page page_iface_zwp_input_method_v1 zwp_input_method_v1 * @section page_iface_zwp_input_method_v1_desc Description * * An input method object is responsible for composing 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 input. * @section page_iface_zwp_input_method_v1_api API * See @ref iface_zwp_input_method_v1. */ /** * @defgroup iface_zwp_input_method_v1 The zwp_input_method_v1 interface * * An input method object is responsible for composing 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 input. */ extern const struct wl_interface zwp_input_method_v1_interface; /** * @page page_iface_zwp_input_panel_v1 zwp_input_panel_v1 * @section page_iface_zwp_input_panel_v1_desc Description * * Only one client can bind this interface at a time. * @section page_iface_zwp_input_panel_v1_api API * See @ref iface_zwp_input_panel_v1. */ /** * @defgroup iface_zwp_input_panel_v1 The zwp_input_panel_v1 interface * * Only one client can bind this interface at a time. */ extern const struct wl_interface zwp_input_panel_v1_interface; /** * @page page_iface_zwp_input_panel_surface_v1 zwp_input_panel_surface_v1 * @section page_iface_zwp_input_panel_surface_v1_api API * See @ref iface_zwp_input_panel_surface_v1. */ /** * @defgroup iface_zwp_input_panel_surface_v1 The zwp_input_panel_surface_v1 interface */ extern const struct wl_interface zwp_input_panel_surface_v1_interface; /** * @ingroup iface_zwp_input_method_context_v1 * @struct zwp_input_method_context_v1_listener */ struct zwp_input_method_context_v1_listener { /** * surrounding text event * * 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 then anchor * is the same as cursor. */ void (*surrounding_text)(void *data, struct zwp_input_method_context_v1 *zwp_input_method_context_v1, const char *text, uint32_t cursor, uint32_t anchor); /** */ void (*reset)(void *data, struct zwp_input_method_context_v1 *zwp_input_method_context_v1); /** */ void (*content_type)(void *data, struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t hint, uint32_t purpose); /** */ void (*invoke_action)(void *data, struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t button, uint32_t index); /** * @param serial serial of text input state */ void (*commit_state)(void *data, struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial); /** */ void (*preferred_language)(void *data, struct zwp_input_method_context_v1 *zwp_input_method_context_v1, const char *language); }; /** * @ingroup iface_zwp_input_method_context_v1 */ static inline int zwp_input_method_context_v1_add_listener(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, const struct zwp_input_method_context_v1_listener *listener, void *data) { return wl_proxy_add_listener((struct wl_proxy *) zwp_input_method_context_v1, (void (**)(void)) listener, data); } #define ZWP_INPUT_METHOD_CONTEXT_V1_DESTROY 0 #define ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STRING 1 #define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STRING 2 #define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STYLING 3 #define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_CURSOR 4 #define ZWP_INPUT_METHOD_CONTEXT_V1_DELETE_SURROUNDING_TEXT 5 #define ZWP_INPUT_METHOD_CONTEXT_V1_CURSOR_POSITION 6 #define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_MAP 7 #define ZWP_INPUT_METHOD_CONTEXT_V1_KEYSYM 8 #define ZWP_INPUT_METHOD_CONTEXT_V1_GRAB_KEYBOARD 9 #define ZWP_INPUT_METHOD_CONTEXT_V1_KEY 10 #define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS 11 #define ZWP_INPUT_METHOD_CONTEXT_V1_LANGUAGE 12 #define ZWP_INPUT_METHOD_CONTEXT_V1_TEXT_DIRECTION 13 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_SURROUNDING_TEXT_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_RESET_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_CONTENT_TYPE_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_INVOKE_ACTION_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STATE_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_PREFERRED_LANGUAGE_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_DESTROY_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STRING_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STRING_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STYLING_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_CURSOR_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_DELETE_SURROUNDING_TEXT_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_CURSOR_POSITION_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_MAP_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_KEYSYM_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_GRAB_KEYBOARD_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_KEY_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_LANGUAGE_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_context_v1 */ #define ZWP_INPUT_METHOD_CONTEXT_V1_TEXT_DIRECTION_SINCE_VERSION 1 /** @ingroup iface_zwp_input_method_context_v1 */ static inline void zwp_input_method_context_v1_set_user_data(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, void *user_data) { wl_proxy_set_user_data((struct wl_proxy *) zwp_input_method_context_v1, user_data); } /** @ingroup iface_zwp_input_method_context_v1 */ static inline void * zwp_input_method_context_v1_get_user_data(struct zwp_input_method_context_v1 *zwp_input_method_context_v1) { return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_method_context_v1); } static inline uint32_t zwp_input_method_context_v1_get_version(struct zwp_input_method_context_v1 *zwp_input_method_context_v1) { return wl_proxy_get_version((struct wl_proxy *) zwp_input_method_context_v1); } /** * @ingroup iface_zwp_input_method_context_v1 */ static inline void zwp_input_method_context_v1_destroy(struct zwp_input_method_context_v1 *zwp_input_method_context_v1) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_DESTROY); wl_proxy_destroy((struct wl_proxy *) zwp_input_method_context_v1); } /** * @ingroup iface_zwp_input_method_context_v1 * * Send the commit string text for insertion to the application. * * The text to commit could be either just a single character after a key * press or the result of some composing (pre-edit). It could be also an * empty text when some text should be removed (see * delete_surrounding_text) or when the input cursor should be moved (see * cursor_position). * * Any previously set composing text will be removed. */ static inline void zwp_input_method_context_v1_commit_string(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, const char *text) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_COMMIT_STRING, serial, text); } /** * @ingroup iface_zwp_input_method_context_v1 * * Send the pre-edit string text to the application text input. * * The commit text can be used to replace the pre-edit text on reset (for * example on unfocus). * * Previously sent preedit_style and preedit_cursor requests are also * processed by the text_input. */ static inline void zwp_input_method_context_v1_preedit_string(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, const char *text, const char *commit) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STRING, serial, text, commit); } /** * @ingroup iface_zwp_input_method_context_v1 * * Set the styling information on composing text. The style is applied for * length in bytes from index relative to the beginning of * the composing text (as byte offset). Multiple styles can * be applied to a composing text. * * This request should be sent before sending a preedit_string request. */ static inline void zwp_input_method_context_v1_preedit_styling(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t index, uint32_t length, uint32_t style) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_STYLING, index, length, style); } /** * @ingroup iface_zwp_input_method_context_v1 * * Set the cursor position inside the composing text (as byte offset) * relative to the start of the composing text. * * When index is negative no cursor should be displayed. * * This request should be sent before sending a preedit_string request. */ static inline void zwp_input_method_context_v1_preedit_cursor(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, int32_t index) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_PREEDIT_CURSOR, index); } /** * @ingroup iface_zwp_input_method_context_v1 * * Remove the surrounding text. * * This request will be handled on the text_input side directly following * a commit_string request. */ static inline void zwp_input_method_context_v1_delete_surrounding_text(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, int32_t index, uint32_t length) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_DELETE_SURROUNDING_TEXT, index, length); } /** * @ingroup iface_zwp_input_method_context_v1 * * Set the cursor and anchor to a new position. Index is the new cursor * position in bytes (when >= 0 this is relative to the end of the inserted text, * otherwise it is relative to the beginning of the inserted text). Anchor is * the new anchor position in bytes (when >= 0 this is relative to the end of the * inserted text, otherwise it is relative to the beginning of the inserted * text). When there should be no selected text, anchor should be the same * as index. * * This request will be handled on the text_input side directly following * a commit_string request. */ static inline void zwp_input_method_context_v1_cursor_position(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, int32_t index, int32_t anchor) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_CURSOR_POSITION, index, anchor); } /** * @ingroup iface_zwp_input_method_context_v1 */ static inline void zwp_input_method_context_v1_modifiers_map(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, struct wl_array *map) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS_MAP, map); } /** * @ingroup iface_zwp_input_method_context_v1 * * Notify when a key event was sent. Key events should not be used for * normal text input operations, which should be done with commit_string, * delete_surrounding_text, etc. The key event follows the wl_keyboard key * event convention. Sym is an XKB keysym, state is a wl_keyboard key_state. */ static inline void zwp_input_method_context_v1_keysym(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t time, uint32_t sym, uint32_t state, uint32_t modifiers) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_KEYSYM, serial, time, sym, state, modifiers); } /** * @ingroup iface_zwp_input_method_context_v1 * * Allow an input method to receive hardware keyboard input and process * key events to generate text events (with pre-edit) over the wire. This * allows input methods which compose multiple key events for inputting * text like it is done for CJK languages. */ static inline struct wl_keyboard * zwp_input_method_context_v1_grab_keyboard(struct zwp_input_method_context_v1 *zwp_input_method_context_v1) { struct wl_proxy *keyboard; keyboard = wl_proxy_marshal_constructor((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_GRAB_KEYBOARD, &wl_keyboard_interface, NULL); return (struct wl_keyboard *) keyboard; } /** * @ingroup iface_zwp_input_method_context_v1 * * Forward a wl_keyboard::key event to the client that was not processed * by the input method itself. Should be used when filtering key events * with grab_keyboard. The arguments should be the ones from the * wl_keyboard::key event. * * For generating custom key events use the keysym request instead. */ static inline void zwp_input_method_context_v1_key(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t time, uint32_t key, uint32_t state) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_KEY, serial, time, key, state); } /** * @ingroup iface_zwp_input_method_context_v1 * * Forward a wl_keyboard::modifiers event to the client that was not * processed by the input method itself. Should be used when filtering * key events with grab_keyboard. The arguments should be the ones * from the wl_keyboard::modifiers event. */ static inline void zwp_input_method_context_v1_modifiers(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, uint32_t mods_locked, uint32_t group) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_MODIFIERS, serial, mods_depressed, mods_latched, mods_locked, group); } /** * @ingroup iface_zwp_input_method_context_v1 */ static inline void zwp_input_method_context_v1_language(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, const char *language) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_LANGUAGE, serial, language); } /** * @ingroup iface_zwp_input_method_context_v1 */ static inline void zwp_input_method_context_v1_text_direction(struct zwp_input_method_context_v1 *zwp_input_method_context_v1, uint32_t serial, uint32_t direction) { wl_proxy_marshal((struct wl_proxy *) zwp_input_method_context_v1, ZWP_INPUT_METHOD_CONTEXT_V1_TEXT_DIRECTION, serial, direction); } /** * @ingroup iface_zwp_input_method_v1 * @struct zwp_input_method_v1_listener */ struct zwp_input_method_v1_listener { /** * activate event * * A text input was activated. Creates an input method context * object which allows communication with the text input. */ void (*activate)(void *data, struct zwp_input_method_v1 *zwp_input_method_v1, struct zwp_input_method_context_v1 *id); /** * deactivate event * * The text input corresponding to the context argument was * deactivated. The input method context should be destroyed after * deactivation is handled. */ void (*deactivate)(void *data, struct zwp_input_method_v1 *zwp_input_method_v1, struct zwp_input_method_context_v1 *context); }; /** * @ingroup iface_zwp_input_method_v1 */ static inline int zwp_input_method_v1_add_listener(struct zwp_input_method_v1 *zwp_input_method_v1, const struct zwp_input_method_v1_listener *listener, void *data) { return wl_proxy_add_listener((struct wl_proxy *) zwp_input_method_v1, (void (**)(void)) listener, data); } /** * @ingroup iface_zwp_input_method_v1 */ #define ZWP_INPUT_METHOD_V1_ACTIVATE_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_method_v1 */ #define ZWP_INPUT_METHOD_V1_DEACTIVATE_SINCE_VERSION 1 /** @ingroup iface_zwp_input_method_v1 */ static inline void zwp_input_method_v1_set_user_data(struct zwp_input_method_v1 *zwp_input_method_v1, void *user_data) { wl_proxy_set_user_data((struct wl_proxy *) zwp_input_method_v1, user_data); } /** @ingroup iface_zwp_input_method_v1 */ static inline void * zwp_input_method_v1_get_user_data(struct zwp_input_method_v1 *zwp_input_method_v1) { return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_method_v1); } static inline uint32_t zwp_input_method_v1_get_version(struct zwp_input_method_v1 *zwp_input_method_v1) { return wl_proxy_get_version((struct wl_proxy *) zwp_input_method_v1); } /** @ingroup iface_zwp_input_method_v1 */ static inline void zwp_input_method_v1_destroy(struct zwp_input_method_v1 *zwp_input_method_v1) { wl_proxy_destroy((struct wl_proxy *) zwp_input_method_v1); } #define ZWP_INPUT_PANEL_V1_GET_INPUT_PANEL_SURFACE 0 /** * @ingroup iface_zwp_input_panel_v1 */ #define ZWP_INPUT_PANEL_V1_GET_INPUT_PANEL_SURFACE_SINCE_VERSION 1 /** @ingroup iface_zwp_input_panel_v1 */ static inline void zwp_input_panel_v1_set_user_data(struct zwp_input_panel_v1 *zwp_input_panel_v1, void *user_data) { wl_proxy_set_user_data((struct wl_proxy *) zwp_input_panel_v1, user_data); } /** @ingroup iface_zwp_input_panel_v1 */ static inline void * zwp_input_panel_v1_get_user_data(struct zwp_input_panel_v1 *zwp_input_panel_v1) { return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_panel_v1); } static inline uint32_t zwp_input_panel_v1_get_version(struct zwp_input_panel_v1 *zwp_input_panel_v1) { return wl_proxy_get_version((struct wl_proxy *) zwp_input_panel_v1); } /** @ingroup iface_zwp_input_panel_v1 */ static inline void zwp_input_panel_v1_destroy(struct zwp_input_panel_v1 *zwp_input_panel_v1) { wl_proxy_destroy((struct wl_proxy *) zwp_input_panel_v1); } /** * @ingroup iface_zwp_input_panel_v1 */ static inline struct zwp_input_panel_surface_v1 * zwp_input_panel_v1_get_input_panel_surface(struct zwp_input_panel_v1 *zwp_input_panel_v1, struct wl_surface *surface) { struct wl_proxy *id; id = wl_proxy_marshal_constructor((struct wl_proxy *) zwp_input_panel_v1, ZWP_INPUT_PANEL_V1_GET_INPUT_PANEL_SURFACE, &zwp_input_panel_surface_v1_interface, NULL, surface); return (struct zwp_input_panel_surface_v1 *) id; } #ifndef ZWP_INPUT_PANEL_SURFACE_V1_POSITION_ENUM #define ZWP_INPUT_PANEL_SURFACE_V1_POSITION_ENUM enum zwp_input_panel_surface_v1_position { ZWP_INPUT_PANEL_SURFACE_V1_POSITION_CENTER_BOTTOM = 0, }; #endif /* ZWP_INPUT_PANEL_SURFACE_V1_POSITION_ENUM */ #define ZWP_INPUT_PANEL_SURFACE_V1_SET_TOPLEVEL 0 #define ZWP_INPUT_PANEL_SURFACE_V1_SET_OVERLAY_PANEL 1 /** * @ingroup iface_zwp_input_panel_surface_v1 */ #define ZWP_INPUT_PANEL_SURFACE_V1_SET_TOPLEVEL_SINCE_VERSION 1 /** * @ingroup iface_zwp_input_panel_surface_v1 */ #define ZWP_INPUT_PANEL_SURFACE_V1_SET_OVERLAY_PANEL_SINCE_VERSION 1 /** @ingroup iface_zwp_input_panel_surface_v1 */ static inline void zwp_input_panel_surface_v1_set_user_data(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1, void *user_data) { wl_proxy_set_user_data((struct wl_proxy *) zwp_input_panel_surface_v1, user_data); } /** @ingroup iface_zwp_input_panel_surface_v1 */ static inline void * zwp_input_panel_surface_v1_get_user_data(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1) { return wl_proxy_get_user_data((struct wl_proxy *) zwp_input_panel_surface_v1); } static inline uint32_t zwp_input_panel_surface_v1_get_version(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1) { return wl_proxy_get_version((struct wl_proxy *) zwp_input_panel_surface_v1); } /** @ingroup iface_zwp_input_panel_surface_v1 */ static inline void zwp_input_panel_surface_v1_destroy(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1) { wl_proxy_destroy((struct wl_proxy *) zwp_input_panel_surface_v1); } /** * @ingroup iface_zwp_input_panel_surface_v1 * * Set the input_panel_surface type to keyboard. * * A keyboard surface is only shown when a text input is active. */ static inline void zwp_input_panel_surface_v1_set_toplevel(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1, struct wl_output *output, uint32_t position) { wl_proxy_marshal((struct wl_proxy *) zwp_input_panel_surface_v1, ZWP_INPUT_PANEL_SURFACE_V1_SET_TOPLEVEL, output, position); } /** * @ingroup iface_zwp_input_panel_surface_v1 * * Set the input_panel_surface to be an overlay panel. * * This is shown near the input cursor above the application window when * a text input is active. */ static inline void zwp_input_panel_surface_v1_set_overlay_panel(struct zwp_input_panel_surface_v1 *zwp_input_panel_surface_v1) { wl_proxy_marshal((struct wl_proxy *) zwp_input_panel_surface_v1, ZWP_INPUT_PANEL_SURFACE_V1_SET_OVERLAY_PANEL); } #ifdef __cplusplus } #endif #endif ibus-1.5.22/client/wayland/main.c0000644000000000000000000005740213623750431013453 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ /* vim:set et sts=4: */ /* ibus - The Input Bus * Copyright (C) 2019 Takao Fujiwara * Copyright (C) 2013 Intel Corporation * Copyright (C) 2013-2019 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-unstable-v1-client-protocol.h" struct _IBusWaylandIM { struct zwp_input_method_v1 *input_method; struct zwp_input_method_context_v1 *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 zwp_input_method_context_v1 *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) { zwp_input_method_context_v1_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; zwp_input_method_context_v1_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; zwp_input_method_context_v1_preedit_cursor (wlim->context, cursor); zwp_input_method_context_v1_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) { zwp_input_method_context_v1_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 zwp_input_method_context_v1 *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 zwp_input_method_context_v1 *context) { } static void handle_content_type (void *data, struct zwp_input_method_context_v1 *context, uint32_t hint, uint32_t purpose) { } static void handle_invoke_action (void *data, struct zwp_input_method_context_v1 *context, uint32_t button, uint32_t index) { } static void handle_commit_state (void *data, struct zwp_input_method_context_v1 *context, uint32_t serial) { IBusWaylandIM *wlim = data; wlim->serial = serial; } static void handle_preferred_language (void *data, struct zwp_input_method_context_v1 *context, const char *language) { } static const struct zwp_input_method_context_v1_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) { zwp_input_method_context_v1_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) { zwp_input_method_context_v1_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) { zwp_input_method_context_v1_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 zwp_input_method_context_v1 *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; zwp_input_method_context_v1_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 zwp_input_method_v1 *input_method, struct zwp_input_method_context_v1 *context) { IBusWaylandIM *wlim = data; if (wlim->context) { zwp_input_method_context_v1_destroy (wlim->context); wlim->context = NULL; } wlim->serial = 0; wlim->context = context; zwp_input_method_context_v1_add_listener (context, &context_listener, wlim); wlim->keyboard = zwp_input_method_context_v1_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 zwp_input_method_v1 *input_method, struct zwp_input_method_context_v1 *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) { zwp_input_method_context_v1_destroy (wlim->context); wlim->context = NULL; } } static const struct zwp_input_method_v1_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, "zwp_input_method_v1")) { wlim->input_method = wl_registry_bind (registry, name, &zwp_input_method_v1_interface, 1); zwp_input_method_v1_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 }; static void _bus_disconnected_cb (IBusBus *bus, gpointer user_data) { g_debug ("Connection closed by ibus-daemon\n"); g_clear_object (&_bus); ibus_quit (); } 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); g_signal_connect (_bus, "disconnected", G_CALLBACK (_bus_disconnected_cb), NULL); ibus_main (); return EXIT_SUCCESS; } ibus-1.5.22/client/x11/0000755000000000000000000000000013623751574011416 500000000000000ibus-1.5.22/client/x11/locales.h0000644000000000000000000000134513623750431013123 00000000000000/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */ #define LOCALES_STRING "aa,af,agr,ak,am,an,anp,ar,ayc,az,as,ast,be,bem,ber,bg,bhb,bho,bi,bn,bo,br,brx,bs,byn,C,ca,ce,chr,cmn,crh,cs,csb,cv,cy,da,de,doi,dsb,dv,dz,el,en,eo,es,et,eu,fa,ff,fi,fil,fo,fr,fur,fy,ga,gd,gez,gl,gu,gv,ha,hak,he,hi,hif,hne,hr,hsb,ht,hu,hy,ia,id,ig,ik,is,it,iu,ja,ka,kab,kk,kl,km,kn,ko,kok,ks,ku,kw,ky,lb,lg,li,lij,ln,lo,lt,lv,lzh,mag,mai,mfe,mg,mhr,mi,miq,mjw,mk,ml,mn,mni,mr,ms,mt,my,nan,nb,nds,ne,nhn,niu,nl,nn,no,nr,nso,oc,om,or,os,pa,pap,pl,ps,pt,quz,raj,ro,ru,rw,sa,sah,sat,sc,sd,se,sgs,shn,shs,si,sid,sk,sl,sm,so,sq,sr,ss,st,sv,sw,szl,ta,tcy,te,tg,th,the,ti,tig,tk,tl,tn,to,tpi,tr,ts,tt,ug,uk,unm,ur,uz,ve,vi,wa,wae,wal,wo,xh,yi,yo,yue,yuw,zh,zu" ibus-1.5.22/client/x11/Makefile.am0000644000000000000000000000360413623750431013364 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.22/client/x11/Makefile.in0000644000000000000000000007316713623751264013415 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/ibus_x11-gdk-private.Po \ ./$(DEPDIR)/ibus_x11-main.Po 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ibus_x11-main.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 -f ./$(DEPDIR)/ibus_x11-gdk-private.Po -rm -f ./$(DEPDIR)/ibus_x11-main.Po -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 -f ./$(DEPDIR)/ibus_x11-gdk-private.Po -rm -f ./$(DEPDIR)/ibus_x11-main.Po -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 am--depfiles 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.22/client/x11/gdk-private.c0000644000000000000000000000420613623750431013710 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.22/client/x11/gdk-private.h0000644000000000000000000000211213623750431013707 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.22/client/x11/main.c0000644000000000000000000010757113623750431012430 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) 2015-2019 Takao Fujiwara * 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; feedback && 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; 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 1; } 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_debug ("Connection closed by ibus-daemon\n"); g_clear_object (&_bus); ibus_quit (); } 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 server 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; } /* When log into GNOME3 desktop immediately after the system is booted, * ibus-daemon is sometimes alive but ibus-x11 is dead after log out * the session. Because gdk_x_io_error() is called as the callback of * XSetIOErrorHandler() in gtk/gdk/x11/gdkmain-x11.c in ibus-x11. * Now I assume the callback is called in logout. */ static int _xerror_io_handler (Display *dpy) { if (_kill_daemon) _atexit_cb (); return 0; } 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); XSetIOErrorHandler (_xerror_io_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 (); ibus_main(); exit (EXIT_SUCCESS); } ibus-1.5.22/install-sh0000755000000000000000000003601013623751263011446 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2018-03-11.20; # 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. 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 dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac 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. ;; *) # Note that $RANDOM variable is not portable (e.g. dash); Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p' feature. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/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. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 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=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_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 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: ibus-1.5.22/ABOUT-NLS0000644000000000000000000026747413623751245010715 000000000000001 Notes on the Free Translation Project *************************************** Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages. If you found this 'ABOUT-NLS' file inside a distribution, you may assume that the distributed package does use GNU 'gettext' internally, itself available at your nearest GNU archive site. But you do _not_ need to install GNU 'gettext' prior to configuring, installing or using this package with messages translated. Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team. 1.1 INSTALL Matters =================== Some packages are "localizable" when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU 'gettext'. Other packages have their own ways to internationalization, predating GNU 'gettext'. By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU 'gettext' functions. Installers may use special options at configuration time for changing the default behaviour. The command: ./configure --disable-nls will _totally_ disable translation of messages. When you already have GNU 'gettext' installed on your system and run configure without an option for your new package, 'configure' will probably detect the previously built and installed 'libintl' library and will decide to use it. If not, you may have to to use the '--with-libintl-prefix' option to tell 'configure' where to look for it. Internationalized packages usually have many 'po/LL.po' files, where LL gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at 'configure' time by using the '--disable-nls' switch, all available translations are installed together with the package. However, the environment variable 'LINGUAS' may be set, prior to configuration, to limit the installed set. 'LINGUAS' should then contain a space separated list of two-letter codes, stating which languages are allowed. 1.2 Using This Package ====================== As a user, if your language has been installed for this package, you only have to set the 'LANG' environment variable to the appropriate 'LL_CC' combination. If you happen to have the 'LC_ALL' or some other 'LC_xxx' environment variables set, you should unset them before setting 'LANG', otherwise the setting of 'LANG' will not have the desired effect. Here 'LL' is an ISO 639 two-letter language code, and 'CC' is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute 'setenv LANG de_DE' (in 'csh'), 'export LANG; LANG=de_DE' (in 'sh') or 'export LANG=de_DE' (in 'bash'). This can be done from your '.login' or '.profile' file, once and for all. You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, 'de_AT' is used for Austria, and 'pt_BR' for Brazil. The country code serves to distinguish the dialects. The locale naming convention of 'LL_CC', with 'LL' denoting the language and 'CC' denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as 'LL' or 'LL_CC.ENCODING'. You can get the list of locales supported by your system for your language by running the command 'locale -a | grep '^LL''. Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called 'LANGUAGE'. GNU 'gettext' gives preference to 'LANGUAGE' over 'LANG' for the purpose of message handling, but you still need to have 'LANG' set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set 'LANGUAGE' to 'sv:de' while leaving 'LANG' to 'sv_SE'. Special advice for Norwegian users: The language code for Norwegian bokma*l changed from 'no' to 'nb' recently (in 2003). During the transition period, while some message catalogs for this language are installed under 'nb' and some older ones under 'no', it's recommended for Norwegian users to set 'LANGUAGE' to 'nb:no' so that both newer and older translations are used. In the 'LANGUAGE' environment variable, but not in the 'LANG' environment variable, 'LL_CC' combinations can be abbreviated as 'LL' to denote the language's main dialect. For example, 'de' is equivalent to 'de_DE' (German as spoken in Germany), and 'pt' to 'pt_PT' (Portuguese as spoken in Portugal) in this context. 1.3 Translating Teams ===================== For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, 'http://translationproject.org/', in the "Teams" area. If you'd like to volunteer to _work_ at translating messages, you should become a member of the translating team for your own language. The subscribing address is _not_ the same as the list itself, it has '-request' appended. For example, speakers of Swedish can send a message to 'sv-request@li.org', having this message body: subscribe Keep in mind that team members are expected to participate _actively_ in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to 'coordinator@translationproject.org' to reach the coordinator for all translator teams. The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here. 1.4 Available Packages ====================== Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of Jun 2014. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%. Ready PO files af am an ar as ast az be bg bn bn_IN bs ca crh cs +---------------------------------------------------+ a2ps | [] [] [] | aegis | | anubis | | aspell | [] [] [] | bash | [] [] [] | bfd | | binutils | [] | bison | | bison-runtime | [] | buzztrax | [] | ccd2cue | | ccide | | cflow | | clisp | | coreutils | [] [] | cpio | | cppi | | cpplib | [] | cryptsetup | [] | datamash | | denemo | [] [] | dfarc | [] | dialog | [] [] [] | dico | | diffutils | [] | dink | [] | direvent | | doodle | [] | dos2unix | | dos2unix-man | | e2fsprogs | [] [] | enscript | [] | exif | [] | fetchmail | [] [] | findutils | [] | flex | [] | freedink | [] [] | fusionforge | | gas | | gawk | [] | gcal | [] | gcc | | gdbm | | gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] | gettext-tools | [] [] | gjay | | glunarclock | [] [] [] | gnubiff | [] | gnubik | [] | gnucash | () () [] | gnuchess | | gnulib | [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] | gprof | [] | gramadoir | | grep | [] [] [] | grub | [] | gsasl | | gss | | gst-plugins-bad | [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] | gst-plugins-ugly | [] [] [] | gstreamer | [] [] [] [] | gtick | [] | gtkam | [] [] | gtkspell | [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] | hello | [] | help2man | | help2man-texi | | hylafax | | idutils | | iso_15924 | [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | | iso_4217 | [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | iso_639_5 | | jwhois | | kbd | [] | klavaro | [] [] [] [] [] | ld | [] | leafpad | [] [] [] [] | libc | [] [] [] | libexif | () | libextractor | | libgnutls | [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | | libiconv | [] [] | libidn | [] | liferea | [] [] [] [] | lilypond | [] [] | lordsawar | [] | lprng | | lynx | [] [] | m4 | [] | mailfromd | | mailutils | | make | [] | man-db | [] [] | man-db-manpages | | midi-instruments | [] [] [] | minicom | [] | mkisofs | [] | myserver | [] | nano | [] [] [] | opcodes | | parted | [] | pies | | pnmixer | | popt | [] | procps-ng | | procps-ng-man | | psmisc | [] | pspp | [] | pushover | [] | pwdutils | | pyspread | | radius | [] | recode | [] [] [] | recutils | | rpm | | rush | | sarg | | sed | [] [] [] [] | sharutils | [] | shishi | | skribilo | | solfege | [] [] | solfege-manual | | spotmachine | | sudo | [] [] | sudoers | [] [] | sysstat | [] | tar | [] [] [] | texinfo | [] [] | texinfo_document | [] [] | tigervnc | [] | tin | | tin-man | | tracgoogleappsa... | | trader | | util-linux | [] | ve | | vice | | vmm | | vorbis-tools | [] | wastesedge | | wcd | | wcd-man | | wdiff | [] [] | wget | [] | wyslij-po | | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +---------------------------------------------------+ af am an ar as ast az be bg bn bn_IN bs ca crh cs 4 0 2 5 3 11 0 8 25 3 3 1 55 4 74 da de el en en_GB en_ZA eo es et eu fa fi fr +--------------------------------------------------+ a2ps | [] [] [] [] [] [] [] [] [] | aegis | [] [] [] [] | anubis | [] [] [] [] [] | aspell | [] [] [] [] [] [] [] | bash | [] [] [] | bfd | [] [] [] [] | binutils | [] [] [] | bison | [] [] [] [] [] [] [] [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | [] [] [] [] | ccd2cue | [] [] [] [] | ccide | [] [] [] [] [] [] | cflow | [] [] [] [] [] | clisp | [] [] [] [] [] | coreutils | [] [] [] [] [] | cpio | [] [] [] [] [] | cppi | [] [] [] [] [] | cpplib | [] [] [] [] [] [] | cryptsetup | [] [] [] [] [] | datamash | [] [] [] [] | denemo | [] | dfarc | [] [] [] [] [] [] | dialog | [] [] [] [] [] [] [] [] [] | dico | [] [] [] [] | diffutils | [] [] [] [] [] [] | dink | [] [] [] [] [] [] | direvent | [] [] [] [] | doodle | [] [] [] [] | dos2unix | [] [] [] [] [] | dos2unix-man | [] [] [] | e2fsprogs | [] [] [] [] [] | enscript | [] [] [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] () [] [] [] [] [] | findutils | [] [] [] [] [] [] [] [] | flex | [] [] [] [] [] [] | freedink | [] [] [] [] [] [] [] [] | fusionforge | [] [] [] | gas | [] [] [] | gawk | [] [] [] [] [] | gcal | [] [] [] [] | gcc | [] | gdbm | [] [] [] [] [] | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] | gjay | [] [] [] [] | glunarclock | [] [] [] [] [] | gnubiff | () [] [] () | gnubik | [] [] [] [] [] | gnucash | [] () () () () () () | gnuchess | [] [] [] [] | gnulib | [] [] [] [] [] [] [] | gnunet | [] | gnunet-gtk | [] | gold | [] [] [] | gphoto2 | [] () [] [] | gprof | [] [] [] [] [] [] | gramadoir | [] [] [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] [] | gtick | [] () [] [] [] | gtkam | [] () [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] | guix | [] [] | guix-packages | | gutenprint | [] [] [] [] | hello | [] [] [] [] [] [] [] [] | help2man | [] [] [] [] [] [] [] | help2man-texi | [] [] [] | hylafax | [] [] | idutils | [] [] [] [] [] | iso_15924 | [] () [] [] () [] () | iso_3166 | [] () [] [] [] [] () [] () | iso_3166_2 | [] () () () | iso_4217 | [] () [] [] [] () [] () | iso_639 | [] () [] [] () [] () | iso_639_3 | () () () | iso_639_5 | () () () | jwhois | [] [] [] [] [] | kbd | [] [] [] [] [] [] | klavaro | [] [] [] [] [] [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] [] () [] [] | libextractor | [] | libgnutls | [] [] [] [] | libgphoto2 | [] () [] | libgphoto2_port | [] () [] [] [] [] | libgsasl | [] [] [] [] [] | libiconv | [] [] [] [] [] [] [] | libidn | [] [] [] [] [] | liferea | [] () [] [] [] [] [] | lilypond | [] [] [] [] [] [] | lordsawar | [] [] | lprng | | lynx | [] [] [] [] [] [] | m4 | [] [] [] [] [] [] | mailfromd | [] | mailutils | [] [] [] [] | make | [] [] [] [] [] | man-db | [] [] [] [] | man-db-manpages | [] [] | midi-instruments | [] [] [] [] [] [] [] [] [] | minicom | [] [] [] [] [] | mkisofs | [] [] [] | myserver | [] [] [] [] | nano | [] [] [] [] [] [] [] | opcodes | [] [] [] [] [] | parted | [] [] [] | pies | [] | pnmixer | [] [] | popt | [] [] [] [] [] [] | procps-ng | [] [] | procps-ng-man | [] [] | psmisc | [] [] [] [] [] [] [] | pspp | [] [] [] | pushover | () [] [] [] | pwdutils | [] [] [] | pyspread | [] [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] | recutils | [] [] [] [] | rpm | [] [] [] [] [] | rush | [] [] [] | sarg | [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] [] [] | skribilo | [] [] [] | solfege | [] [] [] [] [] [] [] [] | solfege-manual | [] [] [] [] [] | spotmachine | [] [] [] [] [] | sudo | [] [] [] [] [] [] | sudoers | [] [] [] [] [] [] | sysstat | [] [] [] [] [] [] | tar | [] [] [] [] [] [] [] | texinfo | [] [] [] [] [] | texinfo_document | [] [] [] [] | tigervnc | [] [] [] [] [] [] | tin | [] [] [] [] | tin-man | [] | tracgoogleappsa... | [] [] [] [] [] | trader | [] [] [] [] [] [] | util-linux | [] [] [] [] | ve | [] [] [] [] [] | vice | () () () | vmm | [] [] | vorbis-tools | [] [] [] [] | wastesedge | [] | wcd | [] [] [] [] | wcd-man | [] | wdiff | [] [] [] [] [] [] [] | wget | [] [] [] [] [] [] | wyslij-po | [] [] [] [] | xboard | [] [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] [] | +--------------------------------------------------+ da de el en en_GB en_ZA eo es et eu fa fi fr 119 131 32 1 6 0 94 95 22 13 4 102 139 ga gd gl gu he hi hr hu hy ia id is it ja ka kk +-------------------------------------------------+ a2ps | [] [] [] [] | aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] [] | bash | [] [] [] [] | bfd | [] [] | binutils | [] [] [] | bison | [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | | ccd2cue | [] | ccide | [] [] | cflow | [] [] [] | clisp | | coreutils | [] [] | cpio | [] [] [] [] [] [] | cppi | [] [] [] [] [] | cpplib | [] [] | cryptsetup | [] | datamash | | denemo | [] | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] [] [] [] | dico | | diffutils | [] [] [] [] | dink | [] | direvent | [] | doodle | [] [] | dos2unix | [] [] | dos2unix-man | | e2fsprogs | [] [] | enscript | [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] | findutils | [] [] [] [] [] [] [] | flex | [] | freedink | [] [] [] [] | fusionforge | | gas | [] | gawk | [] () [] | gcal | | gcc | | gdbm | | gettext-examples | [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] | gettext-tools | [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] [] () | gnubik | [] [] [] | gnucash | () () () () () | gnuchess | | gnulib | [] [] [] [] [] | gnunet | | gnunet-gtk | | gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] [] [] | grub | [] [] [] | gsasl | [] [] [] [] [] | gss | [] [] [] [] [] | gst-plugins-bad | [] [] [] | gst-plugins-base | [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] [] [] | hello | [] [] [] [] [] | help2man | [] [] [] | help2man-texi | | hylafax | [] | idutils | [] [] | iso_15924 | [] [] [] [] [] [] | iso_3166 | [] [] [] [] [] [] [] [] [] [] [] [] [] | iso_3166_2 | [] [] | iso_4217 | [] [] [] [] [] [] | iso_639 | [] [] [] [] [] [] [] [] [] | iso_639_3 | [] [] | iso_639_5 | | jwhois | [] [] [] [] | kbd | [] [] [] | klavaro | [] [] [] [] [] | ld | [] [] [] [] | leafpad | [] [] [] [] [] [] [] () | libc | [] [] [] [] [] | libexif | [] | libextractor | | libgnutls | [] | libgphoto2 | [] [] | libgphoto2_port | [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] [] [] | libidn | [] [] [] [] | liferea | [] [] [] [] [] | lilypond | [] | lordsawar | | lprng | [] | lynx | [] [] [] [] | m4 | [] [] [] [] [] | mailfromd | | mailutils | | make | [] [] [] [] | man-db | [] [] | man-db-manpages | [] [] | midi-instruments | [] [] [] [] [] [] [] [] [] | minicom | [] [] [] | mkisofs | [] [] | myserver | [] | nano | [] [] [] [] [] [] | opcodes | [] [] [] | parted | [] [] [] [] [] | pies | | pnmixer | [] [] | popt | [] [] [] [] [] [] [] [] [] [] | procps-ng | | procps-ng-man | | psmisc | [] [] [] [] | pspp | [] [] | pushover | [] | pwdutils | [] | pyspread | | radius | [] | recode | [] [] [] [] [] [] [] | recutils | | rpm | [] | rush | [] | sarg | | sed | [] [] [] [] [] [] [] | sharutils | | shishi | | skribilo | [] | solfege | [] [] | solfege-manual | | spotmachine | | sudo | [] [] [] [] | sudoers | [] [] [] | sysstat | [] [] [] [] | tar | [] [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] [] [] | tigervnc | | tin | | tin-man | | tracgoogleappsa... | [] [] [] [] | trader | [] [] | util-linux | [] | ve | [] | vice | () () | vmm | | vorbis-tools | [] [] | wastesedge | [] | wcd | | wcd-man | | wdiff | [] [] [] | wget | [] [] [] [] | wyslij-po | [] [] [] | xboard | | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] [] [] | +-------------------------------------------------+ ga gd gl gu he hi hr hu hy ia id is it ja ka kk 35 2 47 4 8 2 60 71 2 6 81 11 87 57 0 3 kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl +--------------------------------------------------+ a2ps | [] [] | aegis | [] | anubis | [] [] [] | aspell | [] [] | bash | [] [] | bfd | | binutils | | bison | [] | bison-runtime | [] [] [] [] [] [] | buzztrax | | ccd2cue | | ccide | [] [] | cflow | [] | clisp | [] | coreutils | [] [] | cpio | [] | cppi | | cpplib | [] | cryptsetup | [] | datamash | [] [] | denemo | | dfarc | [] [] | dialog | [] [] [] [] [] [] | dico | | diffutils | [] [] [] | dink | [] | direvent | [] | doodle | [] | dos2unix | [] [] | dos2unix-man | [] | e2fsprogs | [] | enscript | [] | exif | [] [] [] | fetchmail | [] | findutils | [] [] | flex | [] | freedink | [] [] | fusionforge | | gas | | gawk | [] | gcal | | gcc | | gdbm | | gettext-examples | [] [] [] [] [] [] | gettext-runtime | [] [] [] | gettext-tools | [] | gjay | | glunarclock | [] [] | gnubiff | [] | gnubik | [] [] | gnucash | () () () () () () () [] | gnuchess | [] [] | gnulib | [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] | gprof | [] [] | gramadoir | [] | grep | [] [] | grub | [] [] [] | gsasl | [] | gss | | gst-plugins-bad | [] [] [] | gst-plugins-base | [] [] [] | gst-plugins-good | [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] [] | gtick | [] | gtkam | [] [] | gtkspell | [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] | hello | [] [] [] | help2man | [] | help2man-texi | | hylafax | [] | idutils | [] | iso_15924 | () [] [] | iso_3166 | [] [] [] () [] [] [] [] [] [] | iso_3166_2 | () [] | iso_4217 | () [] [] [] | iso_639 | [] [] () [] [] [] [] | iso_639_3 | [] () [] | iso_639_5 | () | jwhois | [] [] | kbd | [] | klavaro | [] [] | ld | | leafpad | [] [] [] [] [] | libc | [] [] | libexif | [] | libextractor | [] | libgnutls | [] [] | libgphoto2 | [] | libgphoto2_port | [] | libgsasl | [] | libiconv | [] [] | libidn | [] | liferea | [] [] [] | lilypond | [] | lordsawar | | lprng | | lynx | [] | m4 | [] | mailfromd | | mailutils | | make | [] [] | man-db | [] | man-db-manpages | [] | midi-instruments | [] [] [] [] [] [] [] | minicom | [] | mkisofs | [] | myserver | | nano | [] [] [] | opcodes | [] | parted | [] [] | pies | | pnmixer | [] | popt | [] [] [] [] [] | procps-ng | | procps-ng-man | | psmisc | [] | pspp | [] [] | pushover | | pwdutils | [] | pyspread | | radius | [] | recode | [] [] | recutils | [] | rpm | [] | rush | [] | sarg | | sed | [] [] | sharutils | [] | shishi | | skribilo | | solfege | [] [] | solfege-manual | [] | spotmachine | [] | sudo | [] [] [] | sudoers | [] [] [] | sysstat | [] [] | tar | [] [] [] | texinfo | [] | texinfo_document | [] | tigervnc | [] | tin | | tin-man | | tracgoogleappsa... | [] [] [] | trader | [] | util-linux | [] | ve | [] | vice | [] | vmm | [] | vorbis-tools | [] | wastesedge | [] | wcd | [] | wcd-man | [] | wdiff | [] | wget | [] [] | wyslij-po | [] | xboard | [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] | +--------------------------------------------------+ kn ko ku ky lg lt lv mk ml mn mr ms mt nb ne nl 5 15 4 6 0 13 23 3 3 3 4 11 2 42 1 125 nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr +------------------------------------------------+ a2ps | [] [] [] [] [] [] [] | aegis | [] [] | anubis | [] [] [] | aspell | [] [] [] [] [] [] [] | bash | [] [] [] [] [] [] | bfd | [] [] | binutils | [] [] | bison | [] [] [] | bison-runtime | [] [] [] [] [] [] [] [] | buzztrax | [] | ccd2cue | [] [] | ccide | [] [] [] | cflow | [] [] [] | clisp | [] | coreutils | [] [] [] [] | cpio | [] [] [] | cppi | [] [] [] | cpplib | [] [] [] | cryptsetup | [] [] [] | datamash | [] [] | denemo | | dfarc | [] [] [] | dialog | [] [] [] [] [] [] [] | dico | [] | diffutils | [] [] [] | dink | | direvent | [] [] [] | doodle | [] [] | dos2unix | [] [] [] [] | dos2unix-man | [] [] | e2fsprogs | [] | enscript | [] [] [] [] [] [] | exif | [] [] [] [] [] [] | fetchmail | [] [] [] | findutils | [] [] [] [] [] [] | flex | [] [] [] [] [] | freedink | [] [] [] [] [] | fusionforge | | gas | | gawk | [] | gcal | | gcc | | gdbm | [] [] [] | gettext-examples | [] [] [] [] [] [] [] [] | gettext-runtime | [] [] [] [] [] [] [] [] [] | gettext-tools | [] [] [] [] [] [] [] | gjay | [] | glunarclock | [] [] [] [] [] [] | gnubiff | [] | gnubik | [] [] [] [] | gnucash | () () () () () [] | gnuchess | [] [] | gnulib | [] [] [] [] [] | gnunet | | gnunet-gtk | | gold | | gphoto2 | [] [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] | grep | [] [] [] [] [] [] | grub | [] [] [] [] [] | gsasl | [] [] [] | gss | [] [] [] [] | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] [] [] | gstreamer | [] [] [] [] [] [] [] | gtick | [] [] [] [] [] | gtkam | [] [] [] [] [] [] | gtkspell | [] [] [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] [] | hello | [] [] [] [] [] [] | help2man | [] [] [] [] | help2man-texi | [] | hylafax | | idutils | [] [] [] | iso_15924 | [] () [] [] [] [] | iso_3166 | [] [] [] [] () [] [] [] [] [] [] [] [] | iso_3166_2 | [] () [] | iso_4217 | [] [] () [] [] [] [] [] | iso_639 | [] [] [] () [] [] [] [] [] [] | iso_639_3 | [] () | iso_639_5 | () [] | jwhois | [] [] [] [] | kbd | [] [] | klavaro | [] [] [] [] [] | ld | | leafpad | [] [] [] [] [] [] [] [] | libc | [] [] [] | libexif | [] () [] | libextractor | [] | libgnutls | [] | libgphoto2 | [] | libgphoto2_port | [] [] [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] | libidn | [] [] [] | liferea | [] [] [] [] () [] [] | lilypond | | lordsawar | | lprng | [] | lynx | [] [] | m4 | [] [] [] [] [] | mailfromd | [] | mailutils | [] | make | [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] [] | midi-instruments | [] [] [] [] [] [] [] [] | minicom | [] [] [] [] | mkisofs | [] [] [] | myserver | [] [] | nano | [] [] [] [] [] [] | opcodes | | parted | [] [] [] [] [] [] | pies | [] | pnmixer | [] | popt | [] [] [] [] [] [] | procps-ng | [] | procps-ng-man | [] | psmisc | [] [] [] [] | pspp | [] [] | pushover | | pwdutils | [] | pyspread | [] [] | radius | [] [] | recode | [] [] [] [] [] [] [] [] | recutils | [] [] | rpm | [] | rush | [] [] [] | sarg | [] [] | sed | [] [] [] [] [] [] [] [] | sharutils | [] [] [] | shishi | [] [] | skribilo | [] | solfege | [] [] [] | solfege-manual | [] [] | spotmachine | [] [] | sudo | [] [] [] [] [] [] | sudoers | [] [] [] [] | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] [] | tigervnc | [] [] [] | tin | [] | tin-man | | tracgoogleappsa... | [] [] [] [] | trader | [] [] | util-linux | [] [] | ve | [] [] [] | vice | | vmm | | vorbis-tools | [] [] [] | wastesedge | | wcd | | wcd-man | | wdiff | [] [] [] [] [] | wget | [] [] [] [] [] | wyslij-po | [] [] [] [] | xboard | [] [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +------------------------------------------------+ nn or pa pl ps pt pt_BR ro ru rw sk sl sq sr 7 3 6 114 1 12 88 32 82 3 40 45 7 101 sv sw ta te tg th tr uk ur vi wa wo zh_CN +----------------------------------------------+ a2ps | [] [] [] [] [] | aegis | [] | anubis | [] [] [] [] | aspell | [] [] [] [] [] | bash | [] [] [] [] | bfd | [] [] [] | binutils | [] [] [] | bison | [] [] [] [] | bison-runtime | [] [] [] [] [] [] | buzztrax | [] [] [] | ccd2cue | [] [] [] | ccide | [] [] [] [] | cflow | [] [] [] [] | clisp | | coreutils | [] [] [] | cpio | [] [] [] [] [] | cppi | [] [] [] [] | cpplib | [] [] [] [] [] | cryptsetup | [] [] [] | datamash | [] [] [] | denemo | [] | dfarc | [] [] | dialog | [] [] [] [] [] [] | dico | [] | diffutils | [] [] [] [] [] | dink | [] | direvent | [] [] | doodle | [] [] | dos2unix | [] [] [] [] | dos2unix-man | [] [] [] | e2fsprogs | [] [] [] [] | enscript | [] [] [] [] | exif | [] [] [] [] [] | fetchmail | [] [] [] [] | findutils | [] [] [] [] [] | flex | [] [] [] [] | freedink | [] [] [] | fusionforge | | gas | [] | gawk | [] [] [] | gcal | [] [] [] | gcc | [] | gdbm | [] [] | gettext-examples | [] [] [] [] [] | gettext-runtime | [] [] [] [] [] | gettext-tools | [] [] [] [] [] | gjay | [] [] [] | glunarclock | [] [] [] [] | gnubiff | [] [] | gnubik | [] [] [] [] | gnucash | () () () () [] | gnuchess | [] [] [] | gnulib | [] [] [] [] | gnunet | | gnunet-gtk | | gold | [] [] | gphoto2 | [] [] [] [] | gprof | [] [] [] [] | gramadoir | [] [] [] | grep | [] [] [] [] [] | grub | [] [] [] [] | gsasl | [] [] [] [] | gss | [] [] [] | gst-plugins-bad | [] [] [] [] [] | gst-plugins-base | [] [] [] [] [] | gst-plugins-good | [] [] [] [] [] | gst-plugins-ugly | [] [] [] [] [] | gstreamer | [] [] [] [] [] | gtick | [] [] [] | gtkam | [] [] [] [] | gtkspell | [] [] [] [] [] [] [] | guix | | guix-packages | | gutenprint | [] [] [] [] | hello | [] [] [] [] [] [] | help2man | [] [] [] | help2man-texi | [] | hylafax | [] | idutils | [] [] [] | iso_15924 | [] () [] [] () [] | iso_3166 | [] [] () [] [] () [] [] | iso_3166_2 | () [] [] () [] | iso_4217 | [] () [] [] () [] | iso_639 | [] [] [] () [] [] () [] [] | iso_639_3 | [] () [] [] () | iso_639_5 | () [] () | jwhois | [] [] [] [] | kbd | [] [] [] [] | klavaro | [] [] [] [] [] [] | ld | [] [] [] [] [] | leafpad | [] [] [] [] [] [] | libc | [] [] [] [] [] | libexif | [] [] () | libextractor | [] [] | libgnutls | [] [] [] [] | libgphoto2 | [] [] [] | libgphoto2_port | [] [] [] [] | libgsasl | [] [] [] [] | libiconv | [] [] [] [] [] | libidn | () [] [] [] | liferea | [] [] [] [] [] | lilypond | [] | lordsawar | | lprng | [] | lynx | [] [] [] [] | m4 | [] [] [] | mailfromd | [] [] | mailutils | [] | make | [] [] [] [] | man-db | [] [] [] | man-db-manpages | [] [] | midi-instruments | [] [] [] [] [] [] | minicom | [] [] | mkisofs | [] [] [] | myserver | [] | nano | [] [] [] [] | opcodes | [] [] [] | parted | [] [] [] [] [] | pies | [] [] | pnmixer | [] [] [] | popt | [] [] [] [] [] [] [] | procps-ng | [] [] | procps-ng-man | [] | psmisc | [] [] [] [] | pspp | [] [] [] | pushover | [] | pwdutils | [] [] | pyspread | [] | radius | [] [] | recode | [] [] [] [] | recutils | [] [] [] | rpm | [] [] [] [] | rush | [] [] | sarg | | sed | [] [] [] [] [] | sharutils | [] [] [] [] | shishi | [] [] | skribilo | [] [] | solfege | [] [] [] [] | solfege-manual | [] | spotmachine | [] [] [] | sudo | [] [] [] [] [] | sudoers | [] [] [] [] | sysstat | [] [] [] [] [] | tar | [] [] [] [] [] | texinfo | [] [] [] | texinfo_document | [] | tigervnc | [] [] [] | tin | [] | tin-man | | tracgoogleappsa... | [] [] [] [] [] | trader | [] | util-linux | [] [] [] [] | ve | [] [] [] [] | vice | () () | vmm | | vorbis-tools | [] [] | wastesedge | | wcd | [] [] [] | wcd-man | [] | wdiff | [] [] [] [] | wget | [] [] [] | wyslij-po | [] [] | xboard | [] [] | xdg-user-dirs | [] [] [] [] [] [] [] [] | xkeyboard-config | [] [] [] [] | +----------------------------------------------+ sv sw ta te tg th tr uk ur vi wa wo zh_CN 106 1 4 3 0 13 51 115 1 125 7 1 100 zh_HK zh_TW +-------------+ a2ps | | 30 aegis | | 9 anubis | | 19 aspell | | 29 bash | [] | 23 bfd | | 11 binutils | | 12 bison | [] | 18 bison-runtime | [] | 38 buzztrax | | 9 ccd2cue | | 10 ccide | | 17 cflow | | 16 clisp | | 10 coreutils | | 18 cpio | | 20 cppi | | 17 cpplib | [] | 19 cryptsetup | | 14 datamash | | 11 denemo | | 5 dfarc | | 17 dialog | [] | 42 dico | | 6 diffutils | | 22 dink | | 10 direvent | | 11 doodle | | 12 dos2unix | [] | 18 dos2unix-man | | 9 e2fsprogs | | 15 enscript | | 21 exif | | 27 fetchmail | | 19 findutils | | 29 flex | [] | 19 freedink | | 24 fusionforge | | 3 gas | | 5 gawk | | 13 gcal | | 8 gcc | | 2 gdbm | | 10 gettext-examples | [] [] | 40 gettext-runtime | [] [] | 35 gettext-tools | [] | 24 gjay | | 9 glunarclock | [] | 27 gnubiff | | 9 gnubik | | 19 gnucash | () | 6 gnuchess | | 11 gnulib | | 23 gnunet | | 1 gnunet-gtk | | 1 gold | | 7 gphoto2 | [] | 19 gprof | | 21 gramadoir | | 14 grep | [] | 31 grub | | 21 gsasl | [] | 19 gss | | 17 gst-plugins-bad | | 21 gst-plugins-base | | 27 gst-plugins-good | | 32 gst-plugins-ugly | | 34 gstreamer | [] | 32 gtick | | 19 gtkam | | 24 gtkspell | [] [] | 48 guix | | 2 guix-packages | | 0 gutenprint | | 15 hello | [] | 30 help2man | | 18 help2man-texi | | 5 hylafax | | 5 idutils | | 14 iso_15924 | [] | 23 iso_3166 | [] [] | 58 iso_3166_2 | | 9 iso_4217 | [] [] | 28 iso_639 | [] [] | 46 iso_639_3 | | 10 iso_639_5 | | 2 jwhois | [] | 20 kbd | | 17 klavaro | | 30 ld | [] | 15 leafpad | [] | 39 libc | [] | 24 libexif | | 10 libextractor | | 5 libgnutls | | 13 libgphoto2 | | 10 libgphoto2_port | [] | 19 libgsasl | | 18 libiconv | [] | 29 libidn | | 17 liferea | | 29 lilypond | | 11 lordsawar | | 3 lprng | | 3 lynx | | 19 m4 | [] | 22 mailfromd | | 4 mailutils | | 6 make | | 19 man-db | | 15 man-db-manpages | | 10 midi-instruments | [] | 43 minicom | [] | 17 mkisofs | | 13 myserver | | 9 nano | [] | 30 opcodes | | 12 parted | [] | 23 pies | | 4 pnmixer | | 9 popt | [] | 36 procps-ng | | 5 procps-ng-man | | 4 psmisc | [] | 22 pspp | | 13 pushover | | 6 pwdutils | | 8 pyspread | | 6 radius | | 9 recode | | 31 recutils | | 10 rpm | [] | 13 rush | | 10 sarg | | 4 sed | [] | 35 sharutils | | 13 shishi | | 7 skribilo | | 7 solfege | | 21 solfege-manual | | 9 spotmachine | | 11 sudo | | 26 sudoers | | 22 sysstat | | 23 tar | [] | 30 texinfo | | 17 texinfo_document | | 13 tigervnc | | 14 tin | [] | 7 tin-man | | 1 tracgoogleappsa... | [] | 22 trader | | 12 util-linux | | 13 ve | | 14 vice | | 1 vmm | | 3 vorbis-tools | | 13 wastesedge | | 3 wcd | | 8 wcd-man | | 3 wdiff | [] | 23 wget | | 21 wyslij-po | | 14 xboard | | 10 xdg-user-dirs | [] [] | 68 xkeyboard-config | [] | 28 +-------------+ 89 teams zh_HK zh_TW 166 domains 7 42 2809 Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects. For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution. If Jun 2014 seems to be old, you may fetch a more recent copy of this 'ABOUT-NLS' file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at 'http://translationproject.org/extra/matrix.html'. 1.5 Using 'gettext' in new packages =================================== If you are writing a freely available program and want to internationalize it you are welcome to use GNU 'gettext' in your package. Of course you have to respect the GNU Lesser General Public License which covers the use of the GNU 'gettext' library. This means in particular that even non-free programs can use 'libintl' as a shared library, whereas only free software can use 'libintl' as a static library or use modified versions of 'libintl'. Once the sources are changed appropriately and the setup can handle the use of 'gettext' the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact 'coordinator@translationproject.org' to make the '.pot' files available to the translation teams. ibus-1.5.22/configure.ac0000644000000000000000000006354113623750437011743 00000000000000# vim:set et ts=4: # # ibus - The Input Bus # # Copyright (c) 2007-2016 Peng Huang # Copyright (c) 2015-2020 Takao Fujiwara # Copyright (c) 2007-2020 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], [22]) 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.46.0]) m4_define([gtk3_required_version], [3.12.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.46 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.]) DEFINE_IBUS_LOCALEDIR AC_DEFINE_UNQUOTED(LOCALEDIR, "$ibus_localedir", [Define the location where the catalogs will be installed]) # 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_GNU_GETTEXT_VERSION([0.19.8]) AM_GNU_GETTEXT([external]) # Define PACKAGE_VERSION_* variables. AM_DISABLE_STATIC AC_ISC_POSIX AC_HEADER_STDC LT_INIT # Check header filess. AC_CHECK_HEADERS([sys/prctl.h]) # 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 gio-unix-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"]) if test x"$enable_xim" = x"yes"; then AC_SUBST([XIM_CLI_ARG], [--xim]) fi # --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_required_version ]) PKG_CHECK_EXISTS([gdk-wayland-3.0], [enable_gdk3_wayland=yes], [enable_gdk3_wayland=no] ) 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)" enable_gdk3_wayland=no fi if test x"$enable_gdk3_wayland" != x"yes"; then enable_gdk3_wayland="no (disabled, need to install gdk-wayland-3.0.pc)" fi AM_CONDITIONAL([ENABLE_GDK3_WAYLAND], [test x"$enable_gdk3_wayland" = x"yes"]) 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 $PKG_CONFIG --exists x11; then X11_PREFIX="`$PKG_CONFIG --variable=prefix x11`" elif test x"$prefix" != xNONE; then X11_PREFIX="$prefix" else X11_PREFIX="$ac_default_prefix" fi AC_SUBST(X11_PREFIX) if test x"$enable_wayland" = x"yes"; then # Check for wayland PKG_CHECK_MODULES(WAYLAND, [ wayland-client >= 1.2.0 xkbcommon ]) m4_ifdef([WAYLAND_SCANNER_RULES], [WAYLAND_PRTCLS_SUBDIR='wayland-protocols/unstable/input-method' AC_SUBST(WAYLAND_PRTCLS_SUBDIR) WAYLAND_SCANNER_RULES(['$(datadir)/$(WAYLAND_PRTCLS_SUBDIR)'])], [AC_SUBST(wayland_scanner_rules)]) else enable_wayland="no (disabled, use --enable-wayland to enable)" AC_SUBST(wayland_scanner_rules) 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 --c-include=ibus.h" 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-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(python2, AS_HELP_STRING([--disable-python2], [Do not install bindings/pygobject/gi and ibus for python2. '--disable-python2' bring '--disable-python-library'.]), [enable_python2=$enableval], [enable_python2=yes] ) 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] ) # 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]) if test x"$enable_python2" != x"yes"; then enable_python_library=no PYTHON2= enable_python2="no (disabled, use --enable-python2 to enable)" else AC_PATH_PROG(PYTHON2, python2) if test x"$PYTHON2" = x""; then PYTHON2=$PYTHON fi fi AM_CONDITIONAL([ENABLE_PYTHON2], [test x"$enable_python2" = x"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]) 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) if test x"$enable_python2" = x"yes"; then py2overridesdir=`$PYTHON2 -c "import gi; print(gi._overridesdir)"` AC_SUBST(py2overridesdir) fi 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.*,terminator] ) 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 # Check for x11 PKG_CHECK_MODULES(X11, [ x11 ]) 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 PKG_CHECK_MODULES(XTEST, [x11 xtst], [enable_xtest=yes], [enable_xtest=no] ) AM_CONDITIONAL([ENABLE_XTEST], [test x"$enable_xtest" = x"yes"]) # --enable-install-tests AC_ARG_ENABLE(install-tests, AS_HELP_STRING([--enable-install-tests], [Enable to install tests]), [enable_install_tests=$enableval], [enable_install_tests=no] ) AM_CONDITIONAL([ENABLE_INSTALL_TESTS], [test x"$enable_install_tests" = x"yes"]) if test x"$enable_install_tests" = x"no"; then enable_install_tests="no (disabled, use --enable-install-tests to enable)" fi # --disable-emoji-dict option. AC_ARG_ENABLE(emoji-dict, AS_HELP_STRING([--disable-emoji-dict], [Do not build Emoji dict files]), [enable_emoji_dict=$enableval], [enable_emoji_dict=yes] ) AM_CONDITIONAL([ENABLE_EMOJI_DICT], [test x"$enable_emoji_dict" = x"yes"]) AC_ARG_WITH(unicode-emoji-dir, AS_HELP_STRING([--with-unicode-emoji-dir[=DIR]], [Set the directory of Unicode Emoji. (default: "/usr/share/unicode/emoji")]), UNICODE_EMOJI_DIR=$with_unicode_emoji_dir, UNICODE_EMOJI_DIR="/usr/share/unicode/emoji" ) AC_SUBST(UNICODE_EMOJI_DIR) AC_ARG_WITH(emoji-annotation-dir, AS_HELP_STRING([--with-emoji-annotation-dir[=DIR]], [Set the directory of CLDR annotation files. (default: "/usr/share/unicode/cldr/common/annotations")]), EMOJI_ANNOTATION_DIR=$with_emoji_annotation_dir, EMOJI_ANNOTATION_DIR="/usr/share/unicode/cldr/common/annotations" ) AC_SUBST(EMOJI_ANNOTATION_DIR) if test x"$enable_emoji_dict" = x"yes"; then if test ! -f $UNICODE_EMOJI_DIR/emoji-test.txt ; then AC_MSG_ERROR(Not found $UNICODE_EMOJI_DIR/emoji-test.txt. You can get \ the emoji files from http://www.unicode.org/Public/emoji/4.0/) else # POSIX SHELL has no ${FOO:0:1} head=`echo "$UNICODE_EMOJI_DIR" | cut -c1`; if test $head != "/" ; then UNICODE_EMOJI_DIR=`realpath "$UNICODE_EMOJI_DIR"` fi fi if test ! -f $EMOJI_ANNOTATION_DIR/en.xml ; then AC_MSG_ERROR(Not found $EMOJI_ANNOTATION_DIR/en.xml. You can get \ https://github.com/fujiwarat/cldr-emoji-annotation) else head=`echo "$EMOJI_ANNOTATION_DIR" | cut -c1`; if test $head != "/" ; then EMOJI_ANNOTATION_DIR=`realpath "$EMOJI_ANNOTATION_DIR"` fi fi enable_emoji_dict="yes (enabled, use --disable-emoji-dict to disable)" fi # --disable-unicode-dict option. AC_ARG_ENABLE(unicode-dict, AS_HELP_STRING([--disable-unicode-dict], [Do not build Unicode dict files]), [enable_unicode_dict=$enableval], [enable_unicode_dict=yes] ) AM_CONDITIONAL([ENABLE_UNICODE_DICT], [test x"$enable_unicode_dict" = x"yes"]) AC_ARG_WITH(ucd-dir, AS_HELP_STRING([--with-ucd-dir[=DIR]], [Set the directory of UCD (Unicode Character Database) files. (default: "/usr/share/unicode/ucd")]), UCD_DIR=$with_ucd_dir, UCD_DIR="/usr/share/unicode/ucd" ) AC_SUBST(UCD_DIR) if test x"$enable_unicode_dict" = x"yes"; then if test ! -f $UCD_DIR/NamesList.txt ; then AC_MSG_ERROR(Not found $UCD_DIR/NamesList.txt. You can get \ the UCD files from https://www.unicode.org/Public/UNIDATA/) elif test ! -f $UCD_DIR/Blocks.txt ; then AC_MSG_ERROR(Not found $UCD_DIR/Blocks.txt. You can get \ the UCD files from https://www.unicode.org/Public/UNIDATA/) else # POSIX SHELL has no ${FOO:0:1} head=`echo "$UCD_DIR" | cut -c1`; if test $head != "/" ; then UCD_DIR=`realpath "$UCD_DIR"` fi fi enable_unicode_dict="yes (enabled, use --disable-unicode-dict to disable)" fi AC_ARG_WITH(socket-dir, AS_HELP_STRING([--with-socket-dir[=DIR]], [Set the default socket directory to connect ibus-daemon with D-Bus connections (default: "$XDG_CACHE_HOME/ibus"). The best practice of the socket directory would be unique per user not to modify by malicious users but XDG_RUNTIME_DIR is not integrated in BSD systems and the BSD's default is "/tmp". XDG_RUMTIME_DIR is not useful now because XDG_RUMTIME_DIR is available by login but not `su` command but ibus-daemon can be run with su. "$XDG_RUMTIME_DIR", "$XDG_CACHE_HOME", "$UID" are extracted by ibus-daemon. ibus-daemon also runs mkdir for the socket directory since BSD systems do not support abstract socket paths. The socket path on a NFS mount would not be a good idea likes "/home/$USER" because the directory is not sometimes accessible with the network condition.]), [IBUS_SOCKET_DIR=$with_socket_dir], [case $host in *linux*) IBUS_SOCKET_DIR='unix:tmpdir=$XDG_CACHE_HOME/ibus';; *) IBUS_SOCKET_DIR='unix:tmpdir=/tmp';; esac] ) AC_DEFINE_UNQUOTED(IBUS_SOCKET_DIR, "$IBUS_SOCKET_DIR", [The default socket directory to connect ibus-daemon.]) # Check iso-codes. PKG_CHECK_MODULES(ISOCODES, [ iso-codes ]) ISOCODES_PREFIX=`$PKG_CONFIG iso-codes --variable=prefix` AC_SUBST(ISOCODES_PREFIX) AC_SUBST([GDBUS_CODEGEN], [`$PKG_CONFIG --variable gdbus_codegen gio-2.0`]) # 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 portal/Makefile engine/Makefile util/Makefile util/IMdkit/Makefile data/Makefile data/annotations/Makefile data/icons/Makefile data/its/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 bindings/Makefile bindings/pygobject/Makefile bindings/vala/Makefile conf/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 Enable python2 $enable_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 gdk3 wayland support $enable_gdk3_wayland Build appindicator support $enable_appindicator Build appindicator engine icon $enable_appindicator_engine_icon Build python library $enable_python_library 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 Emoji dict $enable_emoji_dict Unicode Emoji directory $UNICODE_EMOJI_DIR CLDR annotation directory $EMOJI_ANNOTATION_DIR Enable Unicode dict $enable_unicode_dict UCD directory $UCD_DIR Socket directory "$IBUS_SOCKET_DIR" Run test cases $enable_tests Install tests $enable_install_tests ]) ibus-1.5.22/ltmain.sh0000644000000000000000000117106713623751254011277 00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-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. # 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 this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.6 package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-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. # 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 3 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. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES 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 . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! 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 # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! 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 ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_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 # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_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 '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. 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. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # 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 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # 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" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_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 "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # 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. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # 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 "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_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 "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_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_append 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_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || 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_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd 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 -z "$func_relative_path_tlibdir"; 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 -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # 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 () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_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. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # 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). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet 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 () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet 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 () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" 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 () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-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. # 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 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 . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # 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. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --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 --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_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) version: $progname (GNU libtool) 2.4.6 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "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 yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; 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 } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # 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 # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # 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 test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; 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." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. 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= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # 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 | func_generated_by_libtool_p } # 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 yes = "$lalib_p" } # 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 () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # 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 () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs 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 () { $debug_cmd 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 () { $debug_cmd 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 yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; 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 "$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 () { $debug_cmd # 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 () { $debug_cmd 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 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd $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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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 () { $debug_cmd 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_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # 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 yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot 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 yes = "$build_old_libs"; 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 no = "$pic_mode" && test pass_all != "$deplibs_check_method"; 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 no = "$compiler_c_o"; 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 yes = "$need_locks"; 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 warn = "$need_locks"; 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 yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; 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 warn = "$need_locks" && 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 yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; 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 warn = "$need_locks" && 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 no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && 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 -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -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 () { $debug_cmd # 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 $opt_dry_run; then # 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 else 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 fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd 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_quiet && 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 finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # 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=false 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=: ;; -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-m = "X$prev" && 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=: if $isdir; 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 ;; os2*) 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 yes = "$build_old_libs"; 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=: 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'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; 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_quiet || { 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 install = "$opt_mode" && 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 () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; 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) $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 can'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 #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; 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 func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' 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[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi 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" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; 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" "${nlist}I"' # 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_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 () { $debug_cmd 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 () { $debug_cmd 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_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 () { $debug_cmd 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 case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) 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 } }'` ;; esac 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 () { $debug_cmd 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 () { $debug_cmd 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 that possess that section. Heuristic: eliminate # all those that 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_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 () { $debug_cmd 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 () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; 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 yes = "$lock_old_archive_extraction"; 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 () { $debug_cmd 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` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result 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 "$sed_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 where 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) $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/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that 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) $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 yes = "$fast_install"; 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 yes = "$shlibpath_overrides_runpath" && 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 #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* 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_platform || defined ... */ #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 #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 (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]; size_t 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 = (size_t) (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 (STREQ (str, pat)) *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 size_t 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) { size_t orig_value_len = strlen (orig_value); size_t 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 #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\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 () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd 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 # what 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 that 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= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false 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 yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && 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) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; 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 ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. 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 none = "$pic_object" && test none = "$non_pic_object"; 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 none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; 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 dlprefiles = "$prev"; 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 none != "$non_pic_object"; 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 none = "$pic_object"; 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 ;; os2dllname) os2dllname=$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 rpath = "$prev"; 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-export-symbols = "X$arg"; 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-lc = "X$arg" || test X-lm = "X$arg"; 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-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && 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-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm 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 ;; -os2dllname) prev=os2dllname 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 # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang -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*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*) 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 ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # 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 none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; 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 dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; 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 none = "$pic_object"; 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 dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; 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 yes = "$export_dynamic" && 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\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" 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 lib = "$linkmode"; 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=false 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 lib,link = "$linkmode,$pass"; 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 lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; 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 dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; 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 .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # 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 yes = "$allow_libtool_libs_with_static_runtimes"; 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=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; 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 conv = "$pass" && 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 conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; 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 link = "$pass"; 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 conv = "$pass"; 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=false 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=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else 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." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; 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=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # 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 lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; 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 prog != "$linkmode" && test lib != "$linkmode"; 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 yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; 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 dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" 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 yes = "$installed"; 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 yes = "$hardcode_automatic" && 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 dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; 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 lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; 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 prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: 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 $linkalldeplibs; 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 prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || 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 $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && 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 built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; 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 yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; 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 lib = "$linkmode" && test yes = "$hardcode_into_libs"; 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* | *os2*) 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 prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; 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 cannot # 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 no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; 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 yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; 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 prog = "$linkmode"; 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 yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; 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 prog = "$linkmode"; 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 prog = "$linkmode"; 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 unsupported != "$hardcode_direct"; 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 yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; 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 cannot 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 yes = "$module"; 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 no = "$build_old_libs"; 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 lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; 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 no = "$link_static" && 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 no != "$link_all_deplibs"; 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 link = "$pass"; then if test prog = "$linkmode"; 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 dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # 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= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=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 # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # 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 prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; 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 no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; 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 pass_all != "$deplibs_check_method"; 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 no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; 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 # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|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" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; 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 0 -ne "$loop"; 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 0 -ne "$loop"; 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 ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. 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 no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; 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 -n "$precious_files_regex"; 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 yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; 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 yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; 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 yes = "$build_libtool_libs"; 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 yes = "$build_libtool_need_lc"; 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 yes = "$allow_libtool_libs_with_static_runtimes"; 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 yes = "$allow_libtool_libs_with_static_runtimes"; 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 none = "$deplibs_check_method"; 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 yes = "$droppeddeps"; then if test yes = "$module"; 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 no = "$build_old_libs"; 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 no = "$allow_undefined"; 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 no = "$build_old_libs"; 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 yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || 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 relink = "$opt_mode" || 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 func_dll_def_p "$export_symbols" || { # 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 ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || 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 yes = "$try_normal_branch" \ && { 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 : != "$skipped_export"; 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 : != "$skipped_export" && 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 yes = "$compiler_needs_object" && 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 yes = "$thread_safe" && 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 relink = "$opt_mode"; 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 yes = "$module" && 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 : != "$skipped_export" && 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 : != "$skipped_export" && test yes = "$with_gnu_ld"; 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 : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; 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 -z "$objlist" || 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 1 -eq "$k"; 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 ${skipped_export-false} && { 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 } 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_quiet || { 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 relink = "$opt_mode"; 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 ${skipped_export-false} && { 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 } 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 yes = "$module" && 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=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { 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 relink = "$opt_mode"; 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 relink = "$opt_mode"; 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 yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; 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= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags 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 yes = "$build_libtool_libs" || 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 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 test yes = "$build_libtool_libs" || { 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 } if test -n "$pic_flag" || test default != "$pic_mode"; 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" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && 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 CXX = "$tagname"; 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 yes = "$build_old_libs"; 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@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # 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 } 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 yes = "$no_install"; 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 case $hardcode_action,$fast_install in relink,*) # 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" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # 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 case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac 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 yes = "$build_libtool_libs"; 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 -z "$oldobjs"; 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 yes = "$build_old_libs" && 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 yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; 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 -n "$bindir"; 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) $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 cannot 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 no,yes = "$installed,$need_relink"; 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 } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false 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=: ;; -*) 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 . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; 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 $rmforce; 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" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || 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 none != "$pic_object"; 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 none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; 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 yes = "$fast_install" && 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 } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi 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 # where 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: ibus-1.5.22/util/0000755000000000000000000000000013623751574010504 500000000000000ibus-1.5.22/util/Makefile.am0000644000000000000000000000170513623750431012452 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.22/util/Makefile.in0000644000000000000000000005667713623751265012513 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 distdir-am 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ @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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/util/IMdkit/0000755000000000000000000000000013623751574011665 500000000000000ibus-1.5.22/util/IMdkit/i18nX.c0000644000000000000000000004327113623750431012656 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 #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; } assert (client); 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; assert (x_client); 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) : (0x1f & sequence))); 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)) { XFree (packet); return True; } else if (hdr->major_opcode == XIM_ERROR) { XFree (packet); return False; } /*endif*/ XFree (packet); } /*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.22/util/IMdkit/Makefile.am0000644000000000000000000000247213623750431013635 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.22/util/IMdkit/IMValues.c0000644000000000000000000000644513623750431013436 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.22/util/IMdkit/i18nAttr.c0000644000000000000000000001324513623750431013357 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.22/util/IMdkit/Makefile.in0000644000000000000000000012023613623751265013653 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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__maybe_remake_depfiles = depfiles am__depfiles_remade = ./$(DEPDIR)/libIMdkit_la-FrameMgr.Plo \ ./$(DEPDIR)/libIMdkit_la-IMConn.Plo \ ./$(DEPDIR)/libIMdkit_la-IMMethod.Plo \ ./$(DEPDIR)/libIMdkit_la-IMValues.Plo \ ./$(DEPDIR)/libIMdkit_la-i18nAttr.Plo \ ./$(DEPDIR)/libIMdkit_la-i18nClbk.Plo \ ./$(DEPDIR)/libIMdkit_la-i18nIMProto.Plo \ ./$(DEPDIR)/libIMdkit_la-i18nIc.Plo \ ./$(DEPDIR)/libIMdkit_la-i18nMethod.Plo \ ./$(DEPDIR)/libIMdkit_la-i18nOffsetCache.Plo \ ./$(DEPDIR)/libIMdkit_la-i18nPtHdr.Plo \ ./$(DEPDIR)/libIMdkit_la-i18nUtil.Plo \ ./$(DEPDIR)/libIMdkit_la-i18nX.Plo 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-IMConn.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-IMMethod.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-IMValues.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nAttr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nClbk.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nIMProto.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nIc.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nMethod.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nOffsetCache.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nPtHdr.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nUtil.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libIMdkit_la-i18nX.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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 -f ./$(DEPDIR)/libIMdkit_la-FrameMgr.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-IMConn.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-IMMethod.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-IMValues.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nAttr.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nClbk.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nIMProto.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nIc.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nMethod.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nOffsetCache.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nPtHdr.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nUtil.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nX.Plo -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 -f ./$(DEPDIR)/libIMdkit_la-FrameMgr.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-IMConn.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-IMMethod.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-IMValues.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nAttr.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nClbk.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nIMProto.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nIc.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nMethod.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nOffsetCache.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nPtHdr.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nUtil.Plo -rm -f ./$(DEPDIR)/libIMdkit_la-i18nX.Plo -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 am--depfiles 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.22/util/IMdkit/IMdkit.h0000644000000000000000000001037413623750431013133 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.22/util/IMdkit/Xtrans.h0000644000000000000000000002336613623750431013236 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.22/util/IMdkit/i18nIMProto.c0000644000000000000000000004762013623750431014002 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.22/util/IMdkit/XimProto.h0000644000000000000000000001416113623750431013531 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.22/util/IMdkit/i18nClbk.c0000644000000000000000000004011213623750431013311 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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.22/util/IMdkit/Xi18nX.h0000644000000000000000000000365413623750431013014 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.22/util/IMdkit/i18nPtHdr.c0000644000000000000000000015223713623750431013473 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); for (i = 0; i < reply_number; i++) XFree (ext_list[i].name); XFree ((char *) ext_list); 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) { FrameMgrFree (fm); 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 + 1)); if (!attrib_list) return NULL; /*endif*/ memset (attrib_list, 0, sizeof (XIMAttribute)*(list_num + 1)); 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); FrameMgrFree (fm); for (i = 0; i < iter_count; i++) XFree(im_attribute_list[i].value); XFree (im_attribute_list); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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 |= ((unsigned long)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); FrameMgrFree (fm); 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->encodinginfo, 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); FrameMgrFree (fm); 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.22/util/IMdkit/XimFunc.h0000644000000000000000000000651113623750431013321 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.22/util/IMdkit/i18nMethod.c0000644000000000000000000011103613623750431013662 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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); FrameMgrFree (fm); 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.22/util/IMdkit/i18nOffsetCache.c0000644000000000000000000000643013623750431014615 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 #include "IMdkit.h" #include "Xi18n.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; size_t i; assert (offset_cache); data = offset_cache->data; 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; assert (data != NULL); 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 = (Xi18nAtomOffsetPair *) realloc (data, offset_cache->capacity * sizeof (Xi18nAtomOffsetPair)); if (offset_cache->data == NULL) { offset_cache->data = data; --offset_cache->size; } data = offset_cache->data; } assert (data != NULL); if (offset_cache->size > 0) { data[i].key = key; data[i].offset = offset; } } ibus-1.5.22/util/IMdkit/IMConn.c0000644000000000000000000001025013623750431013061 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 && 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) { XFree (args); 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.22/util/IMdkit/FrameMgr.h0000644000000000000000000001072713623750431013454 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.22/util/IMdkit/i18nUtil.c0000644000000000000000000002142313623750431013357 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); FrameMgrFree (fm); 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; if (length > 0 && data != NULL) 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) { FrameMgrFree (fm); 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) { FrameMgrFree (fm); 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.22/util/IMdkit/Xi18n.h0000644000000000000000000002612013623750431012655 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.22/util/IMdkit/FrameMgr.c0000644000000000000000000016745213623750431013457 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 #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); assert (i >= 0); 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); assert (i >= 0); 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*/ assert (i >= 0); 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*/ assert (i >= 0); 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*/ assert (i >= 0); 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); assert (i >= 0); 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) { assert (i >= 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.22/util/IMdkit/IMMethod.c0000644000000000000000000000443013623750431013407 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.22/util/IMdkit/i18nIc.c0000644000000000000000000010177013623750431013001 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) { XFree (nest_list); return NULL; } /*endif*/ memset (nest_list->value, 0, 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); FrameMgrFree (fm); 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))) { XFree (attrID_list); 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); XFree (attrID_list); FrameMgrFree (fm); 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.22/aclocal.m40000644000000000000000000023352613623751261011313 00000000000000# generated automatically by aclocal 1.16.1 -*- Autoconf -*- # Copyright (C) 1996-2018 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 # Increment this whenever this file is changed. #serial 3 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 dnl We can't use PKG_PREREQ because that needs 0.29. m4_ifndef([PKG_PROG_PKG_CONFIG], [pkg.m4 version 0.28 or later is required]) AC_ARG_ENABLE(glibtest, [ --disable-glibtest do not try to compile and run a test GLIB program], , enable_glibtest=yes) min_glib_version=ifelse([$1], [], [2.0.0], [$1]) pkg_config_args="glib-2.0 >= $min_glib_version" 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 dnl For GLIB_CFLAGS and GLIB_LIBS PKG_CHECK_MODULES([GLIB], [$pkg_config_args], [:], [:]) dnl For the tools PKG_CHECK_VAR([GLIB_GENMARSHAL], [glib-2.0], [glib_genmarshal]) PKG_CHECK_VAR([GOBJECT_QUERY], [glib-2.0], [gobject_query]) PKG_CHECK_VAR([GLIB_MKENUMS], [glib-2.0], [glib_mkenums]) PKG_CHECK_VAR([GLIB_COMPILE_RESOURCES], [gio-2.0], [glib_compile_resources]) 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_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 (void) { 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 rm -f conf.glibtest ]) # Increment this whenever this file is changed. #serial 2 dnl GLIB_GSETTINGS dnl Defines GSETTINGS_SCHEMAS_INSTALL which controls whether dnl the schema should be compiled dnl AC_DEFUN([GLIB_GSETTINGS], [ dnl We can't use PKG_PREREQ because that needs 0.29. m4_ifndef([PKG_PROG_PKG_CONFIG], [pkg.m4 version 0.28 or later is required]) 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]) AS_IF([test x$cross_compiling != xyes], [PKG_CHECK_VAR([GLIB_COMPILE_SCHEMAS], [gio-2.0], [glib_compile_schemas])], [AC_PATH_PROG([GLIB_COMPILE_SCHEMAS], [glib-compile-schemas])]) 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])]) ] ) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 11 (pkg-config-0.29.1) dnl Copyright © 2004 Scott James Remnant . dnl Copyright © 2012-2015 Dan Nicholson dnl dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by dnl the Free Software Foundation; either version 2 of the License, or dnl (at your option) any later version. dnl dnl This program is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU dnl General Public License for more details. dnl dnl You should have received a copy of the GNU General Public License dnl along with this program; if not, write to the Free Software dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA dnl 02111-1307, USA. dnl dnl As a special exception to the GNU General Public License, if you dnl distribute this file as part of a program that contains a dnl configuration script generated by Autoconf, you may include it under dnl the same distribution terms that you use for the rest of that dnl program. dnl PKG_PREREQ(MIN-VERSION) dnl ----------------------- dnl Since: 0.29 dnl dnl Verify that the version of the pkg-config macros are at least dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's dnl installed version of pkg-config, this checks the developer's version dnl of pkg.m4 when generating configure. dnl dnl To ensure that this macro is defined, also add: dnl m4_ifndef([PKG_PREREQ], dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) dnl dnl See the "Since" comment for each macro you use to see what version dnl of the macros you require. m4_defun([PKG_PREREQ], [m4_define([PKG_MACROS_VERSION], [0.29.1]) m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) ])dnl PKG_PREREQ dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) dnl ---------------------------------- dnl Since: 0.16 dnl dnl Search for the pkg-config tool and set the PKG_CONFIG variable to dnl first found in the path. Checks that the version of pkg-config found dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is dnl used since that's the first version where most current features of dnl pkg-config existed. 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 ])dnl PKG_PROG_PKG_CONFIG dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------------------------------- dnl Since: 0.18 dnl dnl Check to see whether a particular set of modules exists. Similar to dnl PKG_CHECK_MODULES(), but does not set variables or print errors. dnl dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) dnl only at the first occurence in configure.ac, so if the first place dnl it's called might be skipped (such as if it is within an "if", you dnl 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]) dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) dnl --------------------------------------------- dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting dnl pkg_failed based on the result. 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 ])dnl _PKG_CONFIG dnl _PKG_SHORT_ERRORS_SUPPORTED dnl --------------------------- dnl Internal check to see if pkg-config supports short errors. 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 ])dnl _PKG_SHORT_ERRORS_SUPPORTED dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl -------------------------------------------------------------- dnl Since: 0.4.0 dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES might not happen, you should be sure to include an dnl 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 ])dnl PKG_CHECK_MODULES dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], dnl [ACTION-IF-NOT-FOUND]) dnl --------------------------------------------------------------------- dnl Since: 0.29 dnl dnl Checks for existence of MODULES and gathers its build flags with dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags dnl and VARIABLE-PREFIX_LIBS from --libs. dnl dnl Note that if there is a possibility the first call to dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to dnl include an explicit call to PKG_PROG_PKG_CONFIG in your dnl configure.ac. AC_DEFUN([PKG_CHECK_MODULES_STATIC], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl _save_PKG_CONFIG=$PKG_CONFIG PKG_CONFIG="$PKG_CONFIG --static" PKG_CHECK_MODULES($@) PKG_CONFIG=$_save_PKG_CONFIG[]dnl ])dnl PKG_CHECK_MODULES_STATIC dnl PKG_INSTALLDIR([DIRECTORY]) dnl ------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable pkgconfigdir as the location where a module dnl should install pkg-config .pc files. By default the directory is dnl $libdir/pkgconfig, but the default can be changed by passing dnl DIRECTORY. The user can override through the --with-pkgconfigdir dnl 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 dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) dnl -------------------------------- dnl Since: 0.27 dnl dnl Substitutes the variable noarch_pkgconfigdir as the location where a dnl module should install arch-independent pkg-config .pc files. By dnl default the directory is $datadir/pkgconfig, but the default can be dnl changed by passing DIRECTORY. The user can override through the dnl --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 dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl ------------------------------------------- dnl Since: 0.28 dnl dnl 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 ])dnl PKG_CHECK_VAR dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------ dnl dnl Prepare a "--with-" configure option using the lowercase dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and dnl PKG_CHECK_MODULES in a single macro. AC_DEFUN([PKG_WITH_MODULES], [ m4_pushdef([with_arg], m4_tolower([$1])) m4_pushdef([description], [m4_default([$5], [build with ]with_arg[ support])]) m4_pushdef([def_arg], [m4_default([$6], [auto])]) m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) m4_case(def_arg, [yes],[m4_pushdef([with_without], [--without-]with_arg)], [m4_pushdef([with_without],[--with-]with_arg)]) AC_ARG_WITH(with_arg, AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, [AS_TR_SH([with_]with_arg)=def_arg]) AS_CASE([$AS_TR_SH([with_]with_arg)], [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], [auto],[PKG_CHECK_MODULES([$1],[$2], [m4_n([def_action_if_found]) $3], [m4_n([def_action_if_not_found]) $4])]) m4_popdef([with_arg]) m4_popdef([description]) m4_popdef([def_arg]) ])dnl PKG_WITH_MODULES dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ----------------------------------------------- dnl dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES dnl check._[VARIABLE-PREFIX] is exported as make variable. AC_DEFUN([PKG_HAVE_WITH_MODULES], [ PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) AM_CONDITIONAL([HAVE_][$1], [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) ])dnl PKG_HAVE_WITH_MODULES dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, dnl [DESCRIPTION], [DEFAULT]) dnl ------------------------------------------------------ dnl dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make dnl and preprocessor variable. AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], [ PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) ])dnl PKG_HAVE_DEFINE_WITH_MODULES AC_DEFUN([WAYLAND_SCANNER_RULES], [ PKG_PROG_PKG_CONFIG PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.14.0]) wayland_scanner=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner` AC_SUBST([wayland_scanner]) wayland_scanner_rules=`$PKG_CONFIG --variable=pkgdatadir wayland-scanner`/wayland-scanner.mk AC_SUBST_FILE([wayland_scanner_rules]) AC_SUBST([wayland_protocoldir], [$1]) ]) # Copyright (C) 2002-2018 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.16' 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.16.1], [], [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.16.1])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-2018 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-2018 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-2018 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-2018 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. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. Try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _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. # This creates each '.Po' and '.Plo' makefile fragment that we'll 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" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2018 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-2018 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-2018 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-2018 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-2018 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 whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2018 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-2018 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-2018 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-2018 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 dnl python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 dnl python3.2 python3.1 python3.0 dnl python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 dnl 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-2018 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-2018 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-2018 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-2018 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-2018 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-2018 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-2018 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/gettext.m4]) m4_include([m4/gtk-doc.m4]) m4_include([m4/ibuslocale.m4]) m4_include([m4/iconv.m4]) m4_include([m4/intlmacosx.m4]) m4_include([m4/introspection.m4]) m4_include([m4/lib-ld.m4]) m4_include([m4/lib-link.m4]) m4_include([m4/lib-prefix.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/nls.m4]) m4_include([m4/po.m4]) m4_include([m4/progtest.m4]) m4_include([m4/vapigen.m4]) ibus-1.5.22/ibus.spec.in0000644000000000000000000002270013623750431011662 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 build_emoji_dictionary 1 %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 %if %build_emoji_dictionary BuildRequires: nodejs-emojione BuildRequires: json-glib %endif 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 %if %build_emoji_dictionary OPTIONS="$OPTIONS --enable-emoji-dict" %else OPTIONS="$OPTIONS --disable-emoji-dict" %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 %if %build_emoji_dictionary %{_datadir}/ibus/dicts %endif %{_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.22/ibus/0000755000000000000000000000000013623751712010463 500000000000000ibus-1.5.22/ibus/property.py0000644000000000000000000001644013623750431012643 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.22/ibus/Makefile.am0000644000000000000000000000304313623750431012434 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.22/ibus/object.py0000644000000000000000000000326613623750431012227 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.22/ibus/Makefile.in0000644000000000000000000007233713623751264012466 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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 distdir-am 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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ # 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/ibus/utility.py0000644000000000000000000000556713623750431012472 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.22/ibus/factory.py0000644000000000000000000000772113623750431012430 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.22/ibus/panel.py0000644000000000000000000001606413623750431012060 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.22/ibus/engine.py0000644000000000000000000001655713623750431012235 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.22/ibus/application.py0000644000000000000000000000250613623750431013260 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.22/ibus/bus.py0000644000000000000000000001376413623750431011556 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.22/ibus/notifications.py0000644000000000000000000000430113623750431013621 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.22/ibus/lookuptable.py0000644000000000000000000001723713623750431013305 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.22/ibus/config.py0000644000000000000000000001223013623750431012215 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.22/ibus/exception.py0000644000000000000000000000167713623750431012763 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.22/ibus/observedpath.py0000644000000000000000000000363013623750431013442 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.22/ibus/__init__.py0000644000000000000000000000276513623750431012523 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.22/ibus/common.py0000644000000000000000000001376513623750431012256 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.22/ibus/lang.py0000644000000000000000000000436013623750431011676 00000000000000# vim:set et sts=4 sw=4: # # ibus - The Input Bus # # Copyright (c) 2007-2010 Peng Huang # Copyright (c) 2007-2019 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_3", 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"id", u"part1_code", u"part2_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_3_xml = os.path.join(_config.ISOCODES_PREFIX, "share/xml/iso-codes/iso_639_3.xml") p = xml.parsers.expat.ParserCreate() p.StartElementHandler = __start_element p.EndElementHandler = __end_element p.CharacterDataHandler = __char_data p.ParseFile(file(iso_639_3_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.22/ibus/text.py0000644000000000000000000000375013623750431011743 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.22/ibus/enginedesc.py0000644000000000000000000001270413623750431013062 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.22/ibus/_config.py.in0000644000000000000000000000340113623750431012761 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.22/ibus/component.py0000644000000000000000000001102313623750431012751 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.22/ibus/ascii.py0000644000000000000000000000505713623750431012051 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.22/ibus/attribute.py0000644000000000000000000001136413623750431012762 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.22/ibus/serializable.py0000644000000000000000000000554613623750431013432 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.22/ibus/interface/0000755000000000000000000000000013623751712012423 500000000000000ibus-1.5.22/ibus/interface/iengine.py0000644000000000000000000000767713623750431014351 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.22/ibus/interface/Makefile.am0000644000000000000000000000223613623750431014377 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.22/ibus/interface/Makefile.in0000644000000000000000000005150713623751264014422 00000000000000# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 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/gettext.m4 \ $(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/ibuslocale.m4 \ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \ $(top_srcdir)/m4/introspection.m4 $(top_srcdir)/m4/lib-ld.m4 \ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.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/nls.m4 \ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.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@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ 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@ EMOJI_ANNOTATION_DIR = @EMOJI_ANNOTATION_DIR@ ENV_IBUS_TEST = @ENV_IBUS_TEST@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GDBUS_CODEGEN = @GDBUS_CODEGEN@ GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ 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_MKENUMS = @GLIB_MKENUMS@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ 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@ INTLLIBS = @INTLLIBS@ INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ 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@ LIBICONV = @LIBICONV@ LIBINTL = @LIBINTL@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ LT_VERSION_INFO = @LT_VERSION_INFO@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MSGFMT = @MSGFMT@ MSGFMT_015 = @MSGFMT_015@ 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@ POSUB = @POSUB@ 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@ UCD_DIR = @UCD_DIR@ UNICODE_EMOJI_DIR = @UNICODE_EMOJI_DIR@ 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@ WAYLAND_PRTCLS_SUBDIR = @WAYLAND_PRTCLS_SUBDIR@ WAYLAND_SCANNER_CFLAGS = @WAYLAND_SCANNER_CFLAGS@ WAYLAND_SCANNER_LIBS = @WAYLAND_SCANNER_LIBS@ X11_CFLAGS = @X11_CFLAGS@ X11_LIBS = @X11_LIBS@ X11_PREFIX = @X11_PREFIX@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XIM_CLI_ARG = @XIM_CLI_ARG@ XTEST_CFLAGS = @XTEST_CFLAGS@ XTEST_LIBS = @XTEST_LIBS@ 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@ 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@ wayland_protocoldir = @wayland_protocoldir@ wayland_scanner = @wayland_scanner@ wayland_scanner_rules = @wayland_scanner_rules@ 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__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ 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: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(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.22/ibus/interface/ienginefactory.py0000644000000000000000000000405113623750431015720 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.22/ibus/interface/__init__.py0000644000000000000000000000204213623750431014447 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.22/ibus/interface/ipanel.py0000644000000000000000000000672113623750431014170 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.22/ibus/interface/iibus.py0000644000000000000000000000521013623750431014023 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.22/ibus/interface/iconfig.py0000644000000000000000000000372113623750431014333 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.22/ibus/interface/inotifications.py0000644000000000000000000000376113623750431015743 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.22/ibus/interface/iinputcontext.py0000644000000000000000000000672413623750431015640 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.22/ibus/modifier.py0000644000000000000000000000310413623750431012546 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.22/ibus/keysyms.py0000644000000000000000000007347213623750431012473 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.22/ibus/_gtk.py0000644000000000000000000000475213623750431011706 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.22/ibus/inputcontext.py0000644000000000000000000003053013623750431013517 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.22/AUTHORS0000644000000000000000000000263413623750431010513 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